Built from branch 'tiddlywiki-com' at commit 7686be7b14cdb3bb6e02ab7bd5a5204a8318942f of https://github.com/Jermolene/TiddlyWiki5 at 2020-10-23 15:24:45 UTC
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler"
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler"
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>"
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"tags": "Journal"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "References"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!$tw.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\tthis.domNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = types[type] || types.number,\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar types = {\n\t\"number\": function(a,b) {\n\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t},\n\t\"integer\": function(a,b) {\n\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t},\n\t\"string\": function(a,b) {\n\t\treturn compare(\"\" + a,\"\" +b);\n\t},\n\t\"date\": function(a,b) {\n\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\tdateB = $tw.utils.parseDate(b);\n\t\tif(!isFinite(dateA)) {\n\t\t\tdateA = new Date(0);\n\t\t}\n\t\tif(!isFinite(dateB)) {\n\t\t\tdateB = new Date(0);\n\t\t}\n\t\treturn compare(dateA,dateB);\n\t},\n\t\"version\": function(a,b) {\n\t\treturn $tw.utils.compareVersions(a,b);\n\t}\n};\n\nfunction compare(a,b) {\n\tif(a > b) {\n\t\treturn +1;\n\t} else if(a < b) {\n\t\treturn -1;\n\t} else {\n\t\treturn 0;\n\t}\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.trim(a)];}\n);\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1),\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,prepend.length);\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tArray.prototype.push.apply(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve($tw.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\");\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve($tw.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif($tw.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif($tw.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"path-prefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\tvar fields = {\n\t\ttitle: TITLE_INFO_PLUGIN,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\t$tw.wiki.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t},{\n\t\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && $tw.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t};\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif($tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t};\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || $tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = $tw.wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? ($tw.wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)(e=r.charCodeAt(t))<128?o+=String.fromCharCode(e):e>127&&e<2048?(o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128)):(o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128));return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)(t=r.charCodeAt(o))<128?(e+=String.fromCharCode(t),o++):t>191&&t<224?(e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2):(e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3);return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var n=0;n<t.length;n++)o[t[n]]=o.require(t[n]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,n,i,d,f,a,h,c=\"\",u=0;u<r.length;)d=(t=r.charCodeAt(u++))>>2,f=(3&t)<<4|(n=r.charCodeAt(u++))>>4,a=(15&n)<<2|(i=r.charCodeAt(u++))>>6,h=63&i,isNaN(n)?a=h=64:isNaN(i)&&(h=64),c+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return c},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,n,i,d,f,a,h=\"\",c=0;c<r.length;)t=o.indexOf(r.charAt(c++))<<2|(d=o.indexOf(r.charAt(c++)))>>4,n=(15&d)<<4|(f=o.indexOf(r.charAt(c++)))>>2,i=(3&f)<<6|(a=o.indexOf(r.charAt(c++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(n)),64!=a&&(h+=String.fromCharCode(i));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {};\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\tfilepath;\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// If not, generate a base pathname\n\tif(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t// Don't let the filename start with a dot because such files are invisible on *nix\n\tfilepath = filepath.replace(/^\\./g,\"_\");\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s) {\n\t// See http://www.json.org/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords);\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\t\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = event.ctrlKey && ! event.shiftKey ? \"ctrl\" : event.shiftKey && !event.ctrlKey ? \"shift\" : \n\t\t\t\tevent.ctrlKey && event.shiftKey ? \"ctrl-shift\" : \"normal\" ;\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag || changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder},\n\t\t\t\"tabindex\": {type: \"string\", value: this.editTabIndex},\n\t\t\t\"focus\": {type: \"string\", value: this.editFocus}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\ttag = \"h\" + headingLevel;\n\t}\n\t// Create the DOM node\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.makeChildWidgets([node]);\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.wiki.addToStory(title,fromTitle,this.storyTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\tthis.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n \t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n \t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\t\t\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField || \"text\",\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue || \"\");\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue || \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\t\t\t\t\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\t\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\t\t\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #504945\nbutton-foreground: #fbf1c7\nbutton-border: transparent\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: #7c6f64\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #282828\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: <<colour button-background>>\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #4C566A\nbutton-foreground: #D8DEE9\nbutton-border: transparent\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #2e3440\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #073642\nalert-highlight: #cb4b16\nalert-muted-foreground: #586e75\nbackground: #fdf6e3\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #cb4b16\nbutton-foreground: #fdf6e3\nbutton-border: transparent\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #d33682\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #859900\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #D08770\ndownload-background: #859900\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #fdf6e3\ndropdown-tab-background: #93a1a1\ndropzone-background: #859900\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: #d33682\nexternal-link-foreground-visited: #b58900\nexternal-link-foreground: #cb4b16\nforeground: #839496\nmessage-background: #586e75\nmessage-border: #586e75\nmessage-foreground: #eee8d5\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #eee8d5\nmodal-footer-background: #eee8d5\nmodal-footer-border: #eee8d5\nmodal-header-border: #eee8d5\nmuted-foreground: #93a1a1\nnotification-background: #EBCB8B\nnotification-border: #D08770\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #93a1a1\nprimary: #2aa198\nselect-tag-background: #eee8d5\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: #eee8d5\nsidebar-controls-foreground-hover: #268bd2\nsidebar-controls-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #839496\nsidebar-muted-foreground-hover: #657b83\nsidebar-muted-foreground: #93a1a1\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-background: #839496\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #657b83\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #839496\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #859900\nsidebar-tiddler-link-foreground: #268bd2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #dc322f\ntab-background-selected: #fdf6e3\ntab-background: #839496\ntab-border-selected: #93a1a1\ntab-border: #93a1a1\ntab-divider: #fdf6e3\ntab-foreground-selected: #839496\ntab-foreground: #eee8d5\ntable-border: #657b83\ntable-footer-background: #657b83\ntable-header-background: #93a1a1\ntag-background: #6c71c4\ntag-foreground: #eee8d5\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #b58900\ntiddler-controls-foreground-selected: #b58900\ntiddler-controls-foreground: #073642\ntiddler-editor-background: #eee8d5\ntiddler-editor-border-image: #eee8d5\ntiddler-editor-border: #eee8d5\ntiddler-editor-fields-even: #eee8d5\ntiddler-editor-fields-odd: #fdf6e3\ntiddler-info-background: #eee8d5\ntiddler-info-border: #eee8d5\ntiddler-info-tab-background: #586e75\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #586e75\ntiddler-title-foreground: #073642\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #839496\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags={{$:/config/NewTiddler/Tags!!tags}}/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "<$action-sendmessage $message=\"tm-new-tiddler\" tags={{$:/config/NewTiddler/Tags!!tags}}/>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewTiddler/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewJournal/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[title]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[title]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[title]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}}></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>> \n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=<<newFieldNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/>\n</span> \n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> \n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}}/>\n</$keyboard>\n</$set>\n</span> \n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n<$set name=\"tabIndex\" value={{$:/config/EditTabIndex}}>\n<$macrocall $name=\"tag-picker\"/>\n</$set>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}}/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\whitespace trim\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}}/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "\\define save-tiddler-button()\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" stateTitle=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcut/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcut/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-enable-drag-and-drop\" value={{$:/config/DragAndDrop/Enable}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip=<<lingo Delete/Hint>> aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"> <<lingo Names/External/Show>></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n</div>"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">{{$:/core/images/close-button}}</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\"/>\n\n</div>\n"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags!!tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags!!tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.22/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "no"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}\n><div class=\"tc-swatch\" style=<<swatchStyle>> title=<<colour>>/></$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker-inner()\n\\whitespace trim\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=<<newTagNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n<<add-tag-actions>>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$set name=\"newTagName\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]!is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n<hr>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n\\end\n\\define tag-picker()\n\\whitespace trim\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=<<tag-picker-inner>>>\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<<tag-picker-inner>>\n</$set>\n</$list>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
\rules only filteredtranscludeinline transcludeinline
<!doctype html>
{{$:/core/templates/MOTW.html}}<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <!-- Force IE standards mode for Intranet and HTA - should be the first meta -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="application-name" content="TiddlyWiki" />
<meta name="generator" content="TiddlyWiki" />
<meta name="tiddlywiki-version" content="{{$:/core/templates/version}}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="mobile-web-app-capable" content="yes"/>
<meta name="format-detection" content="telephone=no" />
<meta name="copyright" content="{{$:/core/copyright.txt}}" />
<link id="faviconLink" rel="shortcut icon" href="favicon.ico">
<title>{{$:/core/wiki/title}}</title>
<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->
<!--~~ Raw markup ~~-->
{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}
</head>
<body class="tc-body">
<!--~~ Static styles ~~-->
<div id="styleArea">
{{$:/boot/boot.css||$:/core/templates/css-tiddler}}
</div>
<!--~~ Static content for Google and browsers without JavaScript ~~-->
<noscript>
<div id="splashArea">
{{$:/core/templates/static.area}}
</div>
</noscript>
<!--~~ Ordinary tiddlers ~~-->
{{$:/core/templates/store.area.template.html}}
<!--~~ Library modules ~~-->
<div id="libraryModules" style="display:none;">
{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}
</div>
<!--~~ Boot kernel prologue ~~-->
<div id="bootKernelPrefix" style="display:none;">
{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}
</div>
<!--~~ Boot kernel ~~-->
<div id="bootKernel" style="display:none;">
{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}
</div>
</body>
</html>
<div class="tc-more-sidebar">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" default={{$:/config/DefaultMoreSidebarTab}} state="$:/state/tab/moresidebar" class="tc-vertical tc-sidebar-tabs-more" />
</div>
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/>
\define lingo-base() $:/language/ControlPanel/
\define config-title()
$:/config/PageControlButtons/Visibility/$(listItem)$
\end
<<lingo Basics/Version/Prompt>> <<version>>
<$set name="tv-config-toolbar-icons" value="yes">
<$set name="tv-config-toolbar-text" value="yes">
<$set name="tv-config-toolbar-class" value="">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
<div style="position:relative;" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>>/> <i class="tc-muted"><$transclude tiddler=<<listItem>> field="description"/></i>
</div>
</$list>
</$set>
</$set>
</$set>
Содержание [[Список изменений]]
<svg class="tc-image-500px tc-image-button" width="22pt" height="22pt" viewBox="0 0 448 512"><path d="M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z"/></svg>
<svg class="tc-image-accessible-icon tc-image-button" width="22pt" height="22pt" viewBox="0 0 448 512"><path d="M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z"/></svg>
<svg class="tc-image-angle-right tc-image-button" width="22pt" height="22pt" viewBox="0 0 256 512"><path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"/></svg>
{
"tiddlers": {
"Untitled 4": {
"title": "Untitled 4",
"text": "Сражение"
}
}
}
alert-background: #ffca13
alert-border: #ffca13
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
background: #eae6e1
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour page-background>>
button-foreground: <<colour primary>>
button-border: <<colour primary>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: #ffca13
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #9e6129
external-link-foreground: <<colour primary>>
foreground: #433f36
message-background: #9e6129
message-border: #9e6129
message-foreground: <<colour foreground>>
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour foreground>>
modal-header-border: <<colour muted-foreground>>
muted-foreground: #737373
notification-background: #ffca13
notification-border: #ffca13
page-background: #cfcdcd
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
primary: #2d539b
sidebar-button-foreground: <<colour primary>>
sidebar-controls-foreground-hover: inherit
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: #d8d8d8
sidebar-foreground: <<colour primary>>
sidebar-muted-foreground-hover: inherit
sidebar-muted-foreground: <<colour muted-foreground>>
sidebar-tab-background-selected: <<colour page-background>>
sidebar-tab-background: transparent
sidebar-tab-border-selected: rgba(0,0,0,0.15)
sidebar-tab-border: transparent
sidebar-tab-divider:
sidebar-tab-foreground-selected: <<colour foreground>>
sidebar-tab-foreground: <<colour muted-foreground>>
sidebar-tiddler-link-foreground-hover: inherit
sidebar-tiddler-link-foreground: <<colour muted-foreground>>
site-title-foreground: <<colour foreground>>
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour background>>
tab-background: transparent
tab-border-selected: <<colour page-background>>
tab-border: transparent
tab-divider: <<colour page-background>>
tab-foreground-selected: <<colour foreground>>
tab-foreground: <<colour muted-foreground>>
table-border: <<colour page-background>>
table-footer-background: <<colour page-background>>
table-header-background: <<colour page-background>>
tag-background: #ffca13
tag-foreground: <<colour primary>>
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: inherit
tiddler-controls-foreground-selected: inherit
tiddler-controls-foreground: #a28f86
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: rgba(0,0,0,0.12)
tiddler-editor-fields-even: rgba(0,0,0,0.04)
tiddler-editor-fields-odd: rgba(0,0,0,0.08)
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #c0bbb6
very-muted-foreground: #898989
alert-background: #644a7d
alert-border: #644a7d
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
background: #2A2B30
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour page-background>>
button-foreground: <<colour foreground>>
button-border: <<colour tag-background>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: #644a7d
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: <<colour tag-background>>
external-link-foreground: #f0b000
foreground: #fff1d9
message-background: #644a7d
message-border: #644a7d
message-foreground: <<colour foreground>>
modal-backdrop: <<colour page-background>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour background>>
modal-header-border: <<colour muted-foreground>>
muted-foreground: rgba(255,255,255,0.5)
notification-background: #644a7d
notification-border: #644a7d
page-background: #1c1d22
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
primary: #00a9c7
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: inherit
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: transparent
sidebar-foreground: <<colour foreground>>
sidebar-muted-foreground-hover: inherit
sidebar-muted-foreground: <<colour foreground>>
sidebar-tab-background-selected: <<colour page-background>>
sidebar-tab-background: transparent
sidebar-tab-border-selected: <<colour primary>>
sidebar-tab-border: transparent
sidebar-tab-divider: <<colour primary>>
sidebar-tab-foreground-selected: <<colour primary>>
sidebar-tab-foreground: <<colour muted-foreground>>
sidebar-tiddler-link-foreground-hover: inherit
sidebar-tiddler-link-foreground: <<colour muted-foreground>>
site-title-foreground: white
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour background>>
tab-background: transparent
tab-border-selected: <<colour primary>>
tab-border: transparent
tab-divider: <<colour primary>>
tab-foreground-selected: <<colour primary>>
tab-foreground: <<colour muted-foreground>>
table-border: <<colour page-background>>
table-footer-background: rgba(0, 0, 0, 0.1)
table-header-background: rgba(0, 0, 0, 0.2)
tag-background: #8a6ca8
tag-foreground: <<colour foreground>>
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: inherit
tiddler-controls-foreground-selected: <<colour foreground>>
tiddler-controls-foreground: #6b6b6b
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: rgba(255,255,255,0.1)
tiddler-editor-fields-even: #3a3a3a
tiddler-editor-fields-odd: <<colour page-background>>
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #3a3a3a
very-muted-foreground: rgba(255,255,255,0.2)
alert-background: <<colour background>>
alert-border: <<colour very-muted-foreground>>
alert-highlight: <<colour very-muted-foreground>>
alert-muted-foreground: <<colour muted-foreground>>
background: #303030
blockquote-bar: <<colour page-background>>
button-background: transparent
button-foreground: inherent
button-border: <<colour tag-background>>
code-background: <<colour pre-background>>
code-border: <<colour pre-border>>
code-foreground: rgba(255, 255, 255, 0.54)
dirty-indicator: #c80000
download-background: <<colour primary>>
download-foreground: <<colour foreground>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: #424242
dropdown-border: <<colour dropdown-background>>
dropdown-tab-background-selected: <<colour dropdown-background>>
dropdown-tab-background: #050505
dropzone-background: <<colour tag-background>>
external-link-background-hover: transparent
external-link-background-visited: transparent
external-link-background: transparent
external-link-foreground-hover:
external-link-foreground-visited: #7c318c
external-link-foreground: #9e3eb3
foreground: rgba(255, 255, 255, 0.7)
message-background: <<colour background>>
message-border: <<colour very-muted-foreground>>
message-foreground: rgba(255, 255, 255, 0.54)
modal-backdrop: <<colour page-background>>
modal-background: <<colour background>>
modal-border: <<colour very-muted-foreground>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour background>>
modal-header-border: <<colour very-muted-foreground>>
muted-foreground: rgba(255, 255, 255, 0.54)
notification-background: <<colour dropdown-background>>
notification-border: <<colour dropdown-background>>
page-background: #212121
pre-background: #2a2a2a
pre-border: transparent
primary: #3949ab
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #494949
sidebar-controls-foreground: #5d5d5d
sidebar-foreground-shadow: transparent
sidebar-foreground: rgba(255, 255, 255, 0.54)
sidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)
sidebar-muted-foreground: rgba(255, 255, 255, 0.38)
sidebar-tab-background-selected: <<colour page-background>>
sidebar-tab-background: transparent
sidebar-tab-border-selected: <<colour table-border>>
sidebar-tab-border: transparent
sidebar-tab-divider: <<colour table-border>>
sidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)
sidebar-tab-foreground: rgba(255, 255, 255, 0.54)
sidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)
sidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)
site-title-foreground: rgba(255, 255, 255, 0.7)
static-alert-foreground: #aaaaaa
tab-background-selected: <<colour background>>
tab-background: transparent
tab-border-selected: <<colour table-border>>
tab-border: transparent
tab-divider: <<colour table-border>>
tab-foreground-selected: rgba(255, 255, 255, 0.87)
tab-foreground: rgba(255, 255, 255, 0.54)
table-border: #3a3a3a
table-footer-background: <<colour tiddler-editor-fields-odd>>
table-header-background: <<colour tiddler-editor-fields-even>>
tag-background: #ec6
tag-foreground: <<colour button-foreground>>
tiddler-background: <<colour background>>
tiddler-border: rgb(55,55,55)
tiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>
tiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>
tiddler-controls-foreground: <<colour sidebar-controls-foreground>>
tiddler-editor-background: transparent
tiddler-editor-border-image:
tiddler-editor-border: rgba(255, 255, 255, 0.08)
tiddler-editor-fields-even: rgba(255, 255, 255, 0.1)
tiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)
tiddler-info-background: #454545
tiddler-info-border: #454545
tiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: #FFFFFF
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: <<colour very-muted-foreground>>
very-muted-foreground: rgba(255, 255, 255, 0.12)
{
"tiddlers": {
"$:/language/Buttons/+ExportPage/Hint": {
"title": "$:/language/Buttons/+ExportPage/Hint",
"text": "Экспортировать все заметки"
},
"$:/language/Buttons/+ExportTiddler/Caption": {
"title": "$:/language/Buttons/+ExportTiddler/Caption",
"text": "экспортировать заметку"
},
"$:/language/Buttons/+ExportTiddler/Hint": {
"title": "$:/language/Buttons/+ExportTiddler/Hint",
"text": "Экспортировать заметку"
},
"$:/language/Buttons/+ExportTiddlers/Caption": {
"title": "$:/language/Buttons/+ExportTiddlers/Caption",
"text": "экспортировать заметки"
},
"$:/language/Buttons/+ExportTiddlers/Hint": {
"title": "$:/language/Buttons/+ExportTiddlers/Hint",
"text": "Экспортировать заметки"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "расширенный поиск"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Расширенный поиск"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "отмена"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Отменить редактирование заметки"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "клонировать"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Создать копию заметки"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "закрыть"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Закрыть заметку"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "закрыть все"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Закрыть все заметки"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "закрыть остальные"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Закрыть остальные заметки"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "панель управления"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Открыть панель управления"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "удалить"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Удалить заметку"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "редактировать"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Редактировать заметку"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "шифрование"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "сбросить пароль"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Сбросить пароль и сохранить без использования шифрования"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Установить или сбросить пароль"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "установить пароль"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Установить пароль и включить шифрование"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "экспортировать всё"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Экспортировать все тиддлеры"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "экспорт тиддлера"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Экспорт тиддлера"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "экспорт тиддлеров"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Экспорт тиддлеров"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "полный экран"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Включить или выключить полноэкранный режим"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "помощь"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Показать панель помощи"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "скрыть боковую панель"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Скрыть боковую панель"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "главная"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Открыть заметки по умолчанию"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "импортировать"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Импорт файлов"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "информация"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Показать информацию об этой заметке"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "язык"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Выбрать язык пользовательского интерфейса"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "ещё"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "Другие действия"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "новая заметка здесь"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Создать новую заметку, помеченную этой заметкой"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "дневник"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Создать новую заметку в дневник"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "дневник здесь"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Создать новую заметку в дневник, помеченную этой заметкой"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "новая заметка"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Создать новую заметку"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "открыть в новом окне"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Открыть тиддлер в новом окне"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "цветовая схема"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Выбрать цветовую схему"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "прямая ссылка"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Показать прямую ссылку на заметку в адресной строке браузера"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "прямая ссылка"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Показать прямую ссылку на открытые заметки в адресной строке браузера"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "oбновить"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Выполнить обновление страницы"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "сохранить"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Сохранить заметку"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "сохранить изменения"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Сохранить изменения"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "показать боковую панель"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Показать боковую панель"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "отображение заметок"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Выбрать способ отображения заметок"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "управление метками"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Открыть панель управления метками"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "тема"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Выбрать тему"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Расширенные"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Системные сведения об этой TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Внешний вид"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Способы настройки внешнего вида TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Продолжительность анимации:"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Основные"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Заметки, содержащие пробелы нужно взять в [[двойные квадратные скобки]]. А также можно возвращать <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">открытые ранее заметки</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Открывать при старте:"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Выберите заметки открытые при запуске:"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Привет! Текущий язык:"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Метки новых заметок дневника"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Заголовок новых заметок дневника"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Количество переопределённых встроенных заметок:"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Количество встроенных заметок:"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Подзаголовок:"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Количество системных заметок:"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Количество меток:"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Количество заметок:"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Заголовок этой ~TiddlyWiki:"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Имя пользователя для подписи под изменениями:"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "Версия ~TiddlyWiki:"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Редакторы"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Редактор"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "Эти заметки определяют, какой редактор используется для конкретного типа заметки."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Тип содержимого"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Сведения"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Сведения об этой TiddlyWiki"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Загруженные модули"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "Это загруженные в настоящий момент модули, ссылающиеся на их исходные заметки. Модули, обозначенные курсивом, не имеют исходных заметок (обычно, потому что они были установлены во время процесса загрузки)."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Цветовая схема"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "скопировать"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "Перед редактированием рекомендуется скопировать встроенную цветовую схему"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Редактирование"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "Эта встроенная цветовая схема изменена"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "сброс"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "скрыть редактор"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Текущая цветовая схема:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "показать редактор"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Другие плагины"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Установить официальные плагины"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Плагины"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "выключить"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Выключить этот плагин"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(выключен)"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "Нет"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "включить"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Выключить этот плагин"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Список установленных плагинов:"
},
"$:/language/ControlPanel/Plugins/Language/Prompt": {
"title": "$:/language/ControlPanel/Plugins/Language/Prompt",
"text": "Языки"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Языки"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Плагины языковых пакетов"
},
"$:/language/ControlPanel/Plugins/Plugin/Prompt": {
"title": "$:/language/ControlPanel/Plugins/Plugin/Prompt",
"text": "Плагины"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Плагины"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Плагины"
},
"$:/language/ControlPanel/Plugins/Theme/Prompt": {
"title": "$:/language/ControlPanel/Plugins/Theme/Prompt",
"text": "Темы"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Темы"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Плагины тем"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Сохранение"
},
"$:/language/ControlPanel/Saving/Heading": {
"title": "$:/language/ControlPanel/Saving/Heading",
"text": "Сохранение"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Расширенные настройки"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Каталог для резервной копии"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Резервная копия"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "Эти настройки нужны для сохранения на http://tiddlyspot.com или совместимый с ним удаленный сервер"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Имя файла для загрузки"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//URL сервера по умолчанию - `http://<wikiname>.tiddlyspot.com/store.cgi`. Его можно указать если используется другой сервер//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Пароль"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "URL сервера"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Каталог загрузки"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Название Wiki"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Автосохранение"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Не сохранять изменения автоматически"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Сохранять изменения автоматически"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Сохранять изменения автоматически в процессе редактирования"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Настройки"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Стандартная боковая панель"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Определяет какую боковую панель показывать по умолчанию"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "Эти настройки позволяют изменить поведение TiddlyWiki."
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Открытие Тиддлера"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "По ссылке //из// открытых тиддлеров"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Открывать выше открытого тиддлера"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Открывать ниже всех открытых тиддлеров"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Открывать выше всех открытых тиддлеров"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Открывать ниже открытого тиддлера"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "По ссылке //вне// открытых тиддлеров"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Адресная строка браузера"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Поведение адресной строки браузера при открытии заметки:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Не изменять адресную строку"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Включить целевую заметку"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Включить целевую заметку и все открытые заметки"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "История браузера"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Обновлять историю браузера при открытии заметки:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Не обновлять историю"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Обновлять историю"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Заголовки Тиддлеров"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Выборочно показывает заголовки тиддеров как ссылки"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Не показывать заголовки тиддлеров как ссылки"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Показывать заголовки тиддлеров как ссылки"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Кнопки"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Внешний вид кнопок:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Показывать значок"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Показывать текст"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Стиль кнопок панелей"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Выберите стиль кнопок панелей:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Без границ"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Внутри квадрата"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Внутри круга"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Поведение открытых заметок"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Текущий вид:"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Тема"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Текущая тема:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Поля заметок"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "Это полный набор полей заметок (включая системные заметки, но без встроенных)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Панели инструментов"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "При редактировании"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Выберите кнопки, отображаемые во время редактирования заметок"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Выберите отображаемые кнопки"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Боковой панели"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Выберите кнопки, отображаемые на боковой панели"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "При просмотре"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Выберите кнопки, отображаемые во время просмотра заметок"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Скачать wiki целиком"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "Этот плагин содержит компоненты ядра TiddlyWiki, содержащие:\n\n* коды модуля JavaScript\n* Изображения\n* Шаблоны, необходимые для создания пользовательского интерфейса TiddlyWiki\n* British English (en-GB) переводы локализуемых строк используемых в ядре"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Воскресенье"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Понедельник"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Вторник"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Среда"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Четверг"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Пятница"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Суббота"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "января"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "февраля"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "марта"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "апреля"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "мая"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "июня"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "июля"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "августа"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "сентября"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "октября"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "ноября"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "декабря"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "до полудня"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "после полудня"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Вс"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Пн"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Вт"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Ср"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Чт"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Пт"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Сб"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "янв"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "фев"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "мрт"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "апр"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "май"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "июн"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "июл"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "авг"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "сен"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "окт"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "нбр"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "дек"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "-й"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "-й"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "-й"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "-й"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "-й"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "-й"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "-й"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "-й"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "-й"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "-й"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "-й"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "-й"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "-й"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "-й"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "-й"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "-й"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "-й"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "-й"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "-й"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "-й"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "-й"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "-й"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "-й"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "-й"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "-й"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "-й"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "-й"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "-й"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "-й"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "-й"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "-й"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "через <<period>> дней"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "через <<period>> часов"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "через <<period>> минут"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "через <<period>> месяцев"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "через 1 секунду"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "через <<period>> секунд"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "через <<period>> лет"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> дней назад"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> часов назад"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> минут назад"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> месяцев назад"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 секунду назад"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> секунд назад"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> лет назад"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "Полный URI заметки, содержащей внешнюю картинку"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "Название \"мешка\" заметки из TiddlyWeb"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "Текст на вкладке или кнопке"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "CSS значение цвета заметки"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "Название компонента, ответственного за [[заметку-тревогу|AlertMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "Дата создания заметки"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "Имя создателя заметки"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Использовалось для хранения верхней заметки в [[списке истории|HistoryMechanism]]"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "Для плагина, перечисляет названия зависимых плагинов"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "Описание плагина или модального окна"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "Для черновиков, содержит название редактируемой заметки"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "Для черновиков, содержит новое название заметки"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "Текст \"подвала\" мастера"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "Название заметки, содержащей значок заметки"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Если \"yes\", то заметка сохраняется как библиотека JavaScript"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "Упорядоченный список названий связанных заметок"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "Название заметки, после которой эта заметка добавляется в упорядоченный список"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "Название заметки, перед которой эта заметка добавляется в упорядоченный список; если это поле создано и имеет пустое значение, то заметка добавляется в начало списка"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "Дата последнего изменения заметки"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "Имя редактора заметки"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "Название плагина"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "Число - приоритет плагина"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "Тип плагина"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Дата выпуска TiddlyWiki"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "Версия заметки на сервере"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "Исходный URL связанный с заметкой"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "Подзаголовок мастера"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "Список меток связанный с заметкой"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "Содержимое заметки"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "Уникальное название заметки"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "Тип содержимого заметки"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Версия плагина"
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Анимации для виджета Reveal."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Команды, исполняемые Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Данные для вставки в `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Отдельные методы операторов фильтра."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Глобальные данные для вставки в `$tw`."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Операнды для оператора фильтра ''is''."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "Макросы JavaScript."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Парсеры для разных типов содержимого."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Методы сохранения."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Функции, выполняемые при загрузке."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Настройка анимации и поведения виджета List."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Превращают разные типы содержимого в заметки."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Определяет поведение отдельных полей заметок."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Добавляет методы к прототипу заметки `$tw.Tiddler`."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Обработка заметок во время обновления/импорта."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Добавляет методы в `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Добавляет специфичные для Node.js методы в `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Виджеты отвечают за отображение и обновление DOM."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Добавляет методы в `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Отдельные правила для главного парсера WikiText."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Фон сообщения об ошибке"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Граница сообщения об ошибке"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Подсветка сообщения об ошибке"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Приглушенный цвет текста сообщения об ошибке"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "Общий фон"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Оформление цитаты"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Фон кнопки по умолчанию"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Граница кнопки по умолчанию"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Цвет кнопки по умолчанию"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Фон блоков кода"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Граница блоков кода"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Цвет текста блоков кода"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Индикатор несохранённых изменений"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Фон кнопки Скачать"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Цвет текста кнопки Скачать"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Фон перетаскиваемой ссылки"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Цвет текста перетаскиваемой ссылки"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Фон выпадающего меню"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Граница выпадающего меню"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Фон вкладок выпадающего меню"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Фон выбранных вкладок выпадающего меню"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Фон области перетаскивания"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "фон внешней ссылки"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "Фон внешней ссылки при наведении"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "Фон посещённой внешней ссылки"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "Цвет текста внешней ссылки"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "Цвет текста внешней ссылки при наведении"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "Цвет текста посещённой внешней ссылки"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "Общий цвет текста"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Фон сообщений"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Граница сообщений"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Цвет текста сообщений"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Цвет фона за модальным окном"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Фон модального окна"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Граница модального окна"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Фон подвала модального окна"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Граница подвала модального окна"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Граница шапки модального окна"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "Приглушенный цвет текста"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Фон уведомлений"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Граница уведомлений"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Фон страницы"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Фон неформатированного текста"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Граница неформатированного текста"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "Первичный цвет"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Цвет текста кнопок боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Цвет элементов управления боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Цвет элементов управления боковой панели при наведении"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Цвет текста на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Цвет тени текста на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Приглушенный цвет текста на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Приглушенный цвет текста на боковой панели при наведении"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Фон вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Фон выбранных вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Граница вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Граница выбранных вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Разделитель вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Цвет текста вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Цвет текста выбранных вкладок на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Цвет ссылок на заметки на боковой панели"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Цвет ссылок на заметки на боковой панели при наведении"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Цвет заголовка сайта"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Цвет текста статической версии сообщения об ошибке"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Фон вкладок"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Фон выбранных вкладок"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Граница вкладок"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Граница выбранных вкладок"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Разделитель вкладок"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Цвет текста вкладок"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Цвет текста выбранных вкладок"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Граница таблиц"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Фон подвала таблиц"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Фон шапки таблиц"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Фон меток"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Цвет текста меток"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Фон заметок"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Граница заметок"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Цвет элементов управления заметки"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Цвет элементов управления заметки при наведении"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Цвет выбранных элементов управления заметки"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Фон редактора заметок"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Граница редактора заметок"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Граница редактора изображений"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Фон четных полей"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Фон нечётных полей"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Фон информационной панели заметки"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Граница информационной панели заметки"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Фон вкладок информационной панели заметки"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Фон ссылок на заметку"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Цвет текста ссылок на заметку"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Цвет текста подзаголовка заметки"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Цвет текста заголовка заметки"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Цвет кнопки 'отменить'"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Цвет кнопки 'закрыть'"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Цвет кнопки 'удалить'"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Цвет кнопки 'готово'"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Цвет кнопки 'редактировать'"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Цвет кнопки 'информация'"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Цвет кнопки 'создать'"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Цвет кнопки 'настройки'"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Цвет кнопки 'сохранить'"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Фон метки 'без метки'"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Очень приглушенный цвет текста"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "Содержимое этой заметки находится вне TiddlyWiki. Но вы можете редактировать метки и поля"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Введите текст заметки"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "удалить поле"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Удалить поле"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "добавить"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "Системные поля"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "Пользовательские поля"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "название поля"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Добавить новое поле:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "значение"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "Это переопределённая встроенная заметка. Для восстановления стандартного значения просто удалите её"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "Это встроенная заметка. Любое изменение переопределит стандартное значение"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "добавить"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "название метки"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "список меток"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Показать список меток"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "удалить тип содержимого"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Удалить тип содержимого"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "список типов содержимого"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Показать список типов содержимого"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "тип содержимого"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Тип:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Показываемые заметки в виде статического HTML файла"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "Заметки в формате JSON"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "Заметки в формате CSV"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "Одна заметка в формате \".tid\""
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "Все метки, кроме системных"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "Все заметки, кроме системных"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Черновики"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Отсутствующие заметки"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Потерянные заметки"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Переопределённые встроенные заметки"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Недавно измененные заметки, включая системные"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Недавно измененные заметки"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Встроенные заметки"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "Системные метки"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "Системные заметки"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Не вики-текстовые тиддлеры"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nДобро пожаловать в ~TiddlyWiki, нелинейную личную сетевую записную книжку.\n\nДля начала убедитесь, что у вас работает сохранение - подробные инструкции на https://tiddlywiki.com/.\n\nЗатем вы можете:\n\n* Создать новые заметки, используя кнопку 'плюс' на боковой панели\n* Зайти в панель управления, используя кнопку с изображением 'шестерёнки' на боковой панели и настроить TiddlyWiki на свой вкус\n** Убрать это сообщение, изменив настройку 'заметки по умолчанию' на вкладке Основные\n* Сохранить изменения при помощи кнопки 'скачать' на боковой панели\n* Изучить подробнее WikiText\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit-text tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Отмена"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "Импортируемые заметки:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Импортировать"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Выбор"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Примечание"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Название"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Заблокированный несовместимый или устаревший плагин"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Заблокированный плагин (импотируемый <<incoming>> старее существующего <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Обновляемый плагин с версии <<incoming>> до <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Заблокированная временная внутренняя заметка"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Заблокированная системная заметка"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Импортированная настройка темы из <$text text=<<from>>/>"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "Эта заметка содержит двоичные данные"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "Эта заметка написана в формате TiddlyWiki Classic WikiText, который не совместим с TiddlyWiki 5. Подробнее: https://tiddlywiki.com/static/Upgrading.html"
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "обновление"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "закрыть все"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Отменить изменения заметки \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Удалить заметку \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "Вы собираетесь редактировать встроенную заметку. Любое изменение переопределит стандартное значение и может привести к проблемам при обновлении TiddlyWiki. Вы действительно хотите редактировать \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Заменить заметку \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "номер"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "Новая заметка"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Перетащите сюда (или нажмите escape для отмены)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Отмена"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Вы действительно хотите сбросить пароль? Это действие отменит шифрование при следующем сохранении"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Пароль"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Пароли не совпадают"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Установить новый пароль для TiddlyWiki"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Повторите пароль"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Введите пароль"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Имя пользователя"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Недопустимые символы в названии поля \"<$text text=<<fieldName>>/>\". Поля могут содержать только латинские буквы нижнего регистра, цифры и символы: подчеркивание (`_`), дефис (`-`) и точку (`.`)"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Заметка \"<$text text=<<currentTiddler>>/>\" отсутствует - нажмите {{||$:/core/ui/Buttons/edit}} чтобы её создать"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Официальная Библиотека Плагинов ~TiddlyWiki"
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Пожалуйста, сохраните {{$:/core/ui/Buttons/save-wiki}} и перезапустите {{$:/core/ui/Buttons/refresh}} вики, чтобы изменения в плагинах возымели эффект."
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DD MMM YYYY"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "Это системная заметка"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Цвет"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Номер"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Значок"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Детали"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Метка"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "Изменения TiddlyWiki не сохранены"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"type": "text/vnd.tiddlywiki",
"subtitle": "Скачать изменения",
"footer": "<$button message=\"tm-close-tiddler\">Закрыть</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Ваш браузер поддерживает только ручное сохранение.\n\nЧтобы сохранить измененную ~TiddlyWiki, щёлкните правой кнопкой мыши по ссылке ниже и выберите \"Скачать файл\" или \"Сохранить файл\", затем выберите расположение и имя файла.\n\n//Вы можете заметно ускорить этот процесс, щёлкнув по ссылке с нажатой клавишей Control (Windows) или Options/Alt (Mac OS X). У вас не спросят расположение и имя файла, возможно, имя будет неузнаваемым -- также может понадобиться добавить расширение `.html` к имени файла.//\n\nНа смартфонах, которые на позволяют скачивать файлы, можно поместить ссылку в закладки, затем синхронизировать закладки с компьютером, где ~TiddlyWiki можно сохранить обычным методом.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"type": "text/vnd.tiddlywiki",
"subtitle": "Сохраните свою работу",
"footer": "<$button message=\"tm-close-tiddler\">Закрыть</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Изменения должны быть сохранены в виде HTML файла ~TiddlyWiki.\n\n!!! На компьютере\n\n# Нажмите ''Сохранить как'' в меню ''Файл''\n# Выберите название и расположение файла\n#* Иногда требуется также явно указать формат сохраняемого файла: ''Веб-страница, только HTML'' или подобный\n# Закройте эту вкладку\n\n!!! На смартфоне\n\n# Поместите эту страницу в закладки\n#* Если у вас настроен iCloud или Google Sync, тогда закладка автоматически синхронизируется с компьютером, и вы сможете открыть её и сохранить по инструкции для компьютеров\n# Закройте эту вкладку\n\n//При открытии закладки в Mobile Safari вы снова увидите это сообщение. Если вы хотите продолжить работу с файлом, нажмите на кнопку ''Закрыть'' ниже//\n"
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Дневник"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DD MMM YYYY"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Успешно сохранено"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Идёт сохранение"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "Список"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Фильтр"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Поиск с помощью [[фильтров|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> совпадений</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> совпадений</small>//"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Встроенные"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Поиск встроенных заметок"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> совпадений</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Обычные"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Поиск обычных заметок"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> совпадений</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "Системные"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Поиск системных заметок"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> совпадений</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "Все"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Оглавление"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Черновики"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Отсутствующие"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "Ещё"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Открытые"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Потерянные"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Последние"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Встроенные"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "Системные"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Метки"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "без метки"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Инструменты"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Типы"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "нелинейная личная сетевая записная книжка"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "Моя ~TiddlyWiki"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Расширенные"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "нет"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Сведения о плагине"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "Плагин содержит следующие встроенные заметки:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Встроенность"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "Заметка <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> не является встроенной"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "Она переопределена обычной заметкой"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "Заметка <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> является встроенной"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "Она принадлежит плагину <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Поля"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "Список"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "У этой заметки нет списка"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "В списках"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "Этой заметки нет в списках"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "Ссылки"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "Другие заметки не ссылаются на эту"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Отмеченные"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "Нет заметок, отмеченных этой"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Инструменты"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Разработка"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Разработка"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Разработка"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF изображение",
"name": "image/gif",
"group": "Изображение"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG изображение",
"name": "image/jpeg",
"group": "Изображение"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG изображение",
"name": "image/png",
"group": "Изображение"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "SVG изображение",
"name": "image/svg+xml",
"group": "Изображение"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO значок",
"name": "image/x-icon",
"group": "Изображение"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Разработка"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML разметка",
"name": "text/html",
"group": "Текст"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Обычный текст",
"name": "text/plain",
"group": "Текст"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Текст"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Текст"
},
"$:/languages/ru-RU/icon": {
"title": "$:/languages/ru-RU/icon",
"type": "image/svg+xml",
"text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 6\" width=\"900\" height=\"600\">\n<rect width=\"9\" height=\"6\" fill=\"#D52B1E\"/>\n<rect width=\"9\" height=\"4\" fill=\"#0039A6\"/>\n<rect width=\"9\" height=\"2\" fill=\"#FFF\"/>\n<path d=\"m0,0h9v6H0z\" stroke=\"#a0a0a0\" stroke-width=\".1\" fill=\"none\"/>\n</svg>"
}
}
}
alert-background: #9d7d00
alert-border: #8e7924
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #000000
blockquote-bar: <<colour muted-foreground>>
button-background: #4c4c4c
button-foreground: #ffbf00
button-border: #666666
code-background: #4c4c4c
code-border: #ffbf00
code-foreground: #fdf3d9
dirty-indicator: #ff0000
download-background: #34c734
download-foreground: <<colour foreground>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #ffffff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #ff0000
external-link-foreground: #ffbf00
foreground: #ffdfaa
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour pre-background>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: <<colour muted-background>>
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #Ffbf00
notification-background: <<colour pre-background>>
notification-border: #999999
page-background: #000000
pre-background: #69010e
pre-border: #cccccc
primary: #5778b8
sidebar-button-foreground: #Ffbf00
sidebar-controls-foreground-hover: <<colour sidebar-button-foreground>>
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow:
sidebar-foreground: #ffbf00
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #ffbf00
sidebar-tab-background: #604800
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: #ab0318
sidebar-tab-divider: #ab0318
sidebar-tab-foreground-selected: #000000
sidebar-tab-foreground: #ffd964
sidebar-tiddler-link-foreground-hover: #464646
sidebar-tiddler-link-foreground: #ffbf00
site-title-foreground: #ffca95
static-alert-foreground: #aaaaaa
tab-background-selected: #ffbf00
tab-background: #604800
tab-border-selected: #ffbf00
tab-border: #ff9b6a
tab-divider: #ff9b6a
tab-foreground-selected: #000000
tab-foreground: #ffd964
table-border: #ab0318
table-footer-background: #a8a8a8
table-header-background: #710210
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: #b08500
tiddler-controls-foreground-hover: <<colour sidebar-button-foreground>>
tiddler-controls-foreground-selected: #2d2d2d
tiddler-controls-foreground: <<colour tiddler-border>>
tiddler-editor-background: #b08500
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #85a585
tiddler-editor-fields-odd: #5f815f
tiddler-info-background: #710210
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: #fe9901
tiddler-subtitle-foreground: #ffbf00
tiddler-title-foreground: <<colour site-title-foreground>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
dirty-indicator: #ff0000
download-background: #34c734
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
foreground: #333333
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #f4f4f4
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: #000000
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
{
"tiddlers": {
"$:/plugins/benwebber/dnd/Changelog": {
"title": "$:/plugins/benwebber/dnd/Changelog",
"text": "\\define unreleased() [[Unreleased|https://github.com/benwebber/tiddlywiki-dnd/compare/v$(latest)$..HEAD]]\n\\define issue(number) [[#$number$|https://github.com/benwebber/tiddlywiki-dnd/issues/$number$]]\n\\define release(version) [[$version$|https://github.com/benwebber/tiddlywiki-dnd/releases/tag/v$version$]]\n\n<$vars latest={{$:/plugins/benwebber/dnd!!version}}>\n\n! <<unreleased>>\n</$vars>\n\n! <<release 1.1.0>> (2019-02-15)\n\n!! Added\n\n* Added `dnd.attack` macro to typeset creature melee and ranged attacks.\n* Added `dnd.modifier` macro to calculate ability score modifiers independently.\n\n!! Changed\n\n* Make creature and spell tags configurable (<<issue 3>>).\n* Refactored localization code to work with core language switcher. Nearly all user-facing strings use this framework now (<<issue 2>>).\n\n!! Deprecated\n\n* Deprecated `dnd.dspell` and `dnd.fspell` in favour of a single template that determines the input tiddler's type. These templates will be removed in 2.0.0.\n* Deprecated `dnd.dstatblock` and `dnd.fstatblock` in favour of a single template that determines the input tiddler's type. These templates will be removed in 2.0.0.\n\n!! Fixed\n\n* `dnd.check` macro supports skills with spaces in the name (Animal Handling and Sleight of Hand).\n* Macros which expect boolean values now only consider the string \"true\" true (<<issue 5>>).\n\n! <<release 1.0.0>> (2018-08-31)\n\n!! Added\n\n* Added English (UK) and English (US) translations.\n* Added D&D icon from Font Awesome to plugin info block.\n* Set up Jest test harness, Travis CI, and Codecov.\n* Added creature view template.\n* Added spell macros, templates, and view templates.\n* Added toolbar buttons to create new creatures and spells.\n* Added modal update form for creatures and spells.\n\n!! Changed\n\n* Moved macro functionality to testable library.\n* Ported to ~TypeScript.\n* Store creature attributes as tiddler field values by default.\n\n!! Fixed\n\n* Use proper minus sign for ability/roll modifiers.\n* `dnd.average`: Pass through unrecognized roll expressions (support arbitrary values).\n\n! <<release 0.1.0>> (2018-07-31)\n\nInitial release.\n"
},
"$:/plugins/benwebber/dnd/License": {
"title": "$:/plugins/benwebber/dnd/License",
"text": "!! MIT License\n\nCopyright (c) 2018 Ben Webber\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
},
"$:/plugins/benwebber/dnd/README": {
"title": "$:/plugins/benwebber/dnd/README",
"text": "Manage //Dungeons & Dragons// campaigns with [[TiddlyWiki|https://tiddlywiki.com]].\n\n! Install\n\n[[Manually install|https://tiddlywiki.com/#Manually%20installing%20a%20plugin]] the plugin by dragging this link to your ~TiddlyWiki:\n\n<$list\n filter=\"[<transclusion>prefix[{$:/plugins/benwebber/dnd/README|$:/plugins/benwebber/dnd/README|||}]]\"\n emptyMessage=\"[[$:/plugins/benwebber/dnd]]\"\n>\n{{$:/plugins/benwebber/dnd||$:/core/ui/Components/plugin-info}}\n</$list>\n\nThen save and refresh your ~TiddlyWiki.\n\n! Quick Start\n\n!! Create a new creature\n\n<!-- Set variables to render button as it appears in the toolbar. -->\n<$vars tv-config-toolbar-text=\"yes\" tv-config-toolbar-class=\"\">\nEnable the {{$:/plugins/benwebber/dnd/ui/Buttons/new-creature}} tool to create new creature tiddlers with a single click.\n</$vars>\n\nSee [[Goblin]] as an example.\n\n!! Create a new spell\n\n<!-- Set variables to render button as it appears in the toolbar. -->\n<$vars tv-config-toolbar-text=\"yes\" tv-config-toolbar-class=\"\">\nEnable the {{$:/plugins/benwebber/dnd/ui/Buttons/new-spell}} tool to create new spell tiddlers with a single click.\n</$vars>\n\nSee [[Alarm]] as an example.\n\n! Configuration\n\nNavigate to the plugin info tiddler ([[$:/plugins/benwebber/dnd]]), then go to the ''Settings'' tab.\n\n! Macros\n\n!! `dnd.ability`\n\nRenders an [[ability score|https://roll20.net/compendium/dnd5e/Ability%20Scores]] with its calculated modifier.\n\n|! Call|! Output|\n|`<<dnd.ability 8>>`|<<dnd.ability 8>>|\n|`<<dnd.ability 10>>`|<<dnd.ability 10>>|\n|`<<dnd.ability 15>>`|<<dnd.ability 15>>|\n|`<<dnd.ability 20>>`|<<dnd.ability 20>>|\n\n!! `dnd.attack`\n\nRenders creature attacks.\n\n!!! Attack and damage types\n\nAttack types and damage types are localized strings.\n\nTo specify an attack's type, use the following values:\n\n|! Value|! Attack Type|\n|`melee`|<<dnd._lingo StatBlock/Action/Melee>>|\n|`ranged`|<<dnd._lingo StatBlock/Action/Ranged>>|\n|`both`|<<dnd._lingo StatBlock/Action/MeleeOrRanged>>|\n\nSimilarly, to specify an attack's damage type, use its English name.\n\n|! Value|! Damage Type|\n|`acid`|<<dnd._lingo Damage/Type/Acid>>|\n|`bludgeoning`|<<dnd._lingo Damage/Type/Bludgeoning>>|\n|`cold`|<<dnd._lingo Damage/Type/Cold>>|\n|`fire`|<<dnd._lingo Damage/Type/Fire>>|\n|`force`|<<dnd._lingo Damage/Type/Force>>|\n|`lightning`|<<dnd._lingo Damage/Type/Lightning>>|\n|`necrotic`|<<dnd._lingo Damage/Type/Necrotic>>|\n|`piercing`|<<dnd._lingo Damage/Type/Piercing>>|\n|`poison`|<<dnd._lingo Damage/Type/Poison>>|\n|`psychic`|<<dnd._lingo Damage/Type/Psychic>>|\n|`radiant`|<<dnd._lingo Damage/Type/Radiant>>|\n|`slashing`|<<dnd._lingo Damage/Type/Slashing>>|\n|`thunder`|<<dnd._lingo Damage/Type/Thunder>>|\n\n!!! Simple melee, ranged, or melee and ranged attacks\n\n```\n<<dnd.attack\n name:\"Rapier\"\n type:melee\n bonus:\"+3\"\n reach:\"5 ft.\"\n damage:\"1d8+1\"\n damageType:piercing\n>>\n```\n\n<<dnd.attack name:\"Rapier\" type:melee bonus:\"+3\" reach:\"5 ft.\" damage:\"1d8+1\" damageType:piercing>>\n\n```\n<<dnd.attack\n name:\"Heavy Crossbow\"\n type:ranged\n bonus:\"+2\"\n range:\"100/400 ft.\"\n damage:\"1d10\"\n damageType:piercing\n>>\n```\n\n<<dnd.attack name:\"Heavy Crossbow\" type:ranged bonus:\"+2\" range:\"100/400 ft.\" damage:\"1d10\" damageType:piercing>>\n\n```\n<<dnd.attack\n name:\"Dagger\"\n type:both\n bonus:\"+5\"\n reach:\"5 ft.\"\n range:\"20/60 ft.\"\n damage:\"1d4+3\"\n damageType:piercing\n>>\n```\n\n<<dnd.attack name:\"Dagger\" type:both bonus:\"+5\" reach:\"5 ft.\" range:\"20/60 ft.\" damage:\"1d4+3\" damageType:piercing>>\n\n!!! Attacks with extra damage\n\n```\n<<dnd.attack\n name:\"Greatsword\"\n type:melee\n bonus:\"+15\"\n reach:\"5 ft.\"\n damage:\"4d6+8\"\n damageType:\"slashing\"\n extraDamage:\"6d8\"\n extraDamageType:radiant\n>>\n```\n\n<<dnd.attack name:\"Greatsword\" type:melee bonus:\"+15\" reach:\"5 ft.\" damage:\"4d6+8\" damageType:slashing extraDamage:\"6d8\" extraDamageType:radiant>>\n\n!!! Attacks with conditional damage\n\n```\n<<dnd.attack\n name:\"Longsword\"\n type:melee\n bonus:\"+5\"\n reach:\"5 ft.\"\n damage:\"1d8+3\"\n damageType:slashing\n condDamage:\"1d10+3\"\n condDamageType:slashing\n when:\"if used with two hands\"\n>>\n```\n\n<<dnd.attack name:\"Longsword\" type:melee bonus:\"+5\" reach:\"5 ft.\" damage:\"1d8+3\" damageType:slashing condDamage:\"1d10+3\" condDamageType:slashing when:\"if used with two hands\">>\n\n```\n<<dnd.attack\n name:\"Longsword\"\n type:melee\n bonus:\"+5\"\n reach:\"5 ft.\"\n damage:\"1d8+3\"\n damageType:slashing\n extraDamage:\"1d4\"\n extraDamage:fire\n condDamage:\"1d10+3\"\n condDamageType:slashing\n extraCondDamage:\"1d4\"\n extraCondDamage:fire\n when:\"if used with two hands\"\n>>\n```\n\n<<dnd.attack name:\"Longsword\" type:melee bonus:\"+5\" reach:\"5 ft.\" damage:\"1d8+3\" damageType:slashing extraDamage:\"1d4\" extraDamageType:fire condDamage:\"1d10+3\" condDamageType:slashing extraCondDamage:\"1d4\" extraCondDamageType:fire when:\"if used with two hands\">>\n\n!!! Attacks with extra effects\n\n```\n<<dnd.attack\n name:\"Light Crossbow\"\n type:ranged\n bonus:\"+6\"\n range:\"80/320 ft.\"\n damage:\"1d8+3\"\n damageType:piercing\n effect:\"and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one\"\n>>\n```\n\n<<dnd.attack name:\"Light Crossbow\" type:ranged bonus:\"+6\" range:\"80/320 ft.\" damage:\"1d8+3\" damageType:piercing effect:\"and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one\">>\n\n!!! Attacks with special targets\n\n```\n<<dnd.attack\n name:\"Dagger\"\n type:both\n bonus:\"+4\"\n reach:\"5 ft.\"\n range:\"20/60 ft.\"\n target:\"one creature\"\n damage:\"1d4+2\"\n damageType:piercing\n>>\n```\n\n<<dnd.attack name:\"Dagger\" type:both bonus:\"+4\" reach:\"5 ft.\" range:\"20/60 ft.\" target:\"one creature\" damage:\"1d4+2\" damageType:piercing>>\n\n!! `dnd.average`\n\nCalculates the average result of the specified roll.\n\n|! Call|! Output|\n|`<<dnd.average d8>>`|<<dnd.average d8>>|\n|`<<dnd.average 2d8>>`|<<dnd.average 2d8>>|\n|`<<dnd.average 2d8+2>>`|<<dnd.average 2d8+2>>|\n|`<<dnd.average 2d8-2>>`|<<dnd.average 2d8-2>>|\n|`<<dnd.average \"2d8 + 2\">>`|<<dnd.average \"2d8 + 2\">>|\n|`<<dnd.average \"2d8 - 2\">>`|<<dnd.average \"2d8 - 2\">>|\n\n!! `dnd.check`\n\nTypeset an ability check, optionally including a skill and/or DC.\nThis macro is not case-sensitive.\n\nThe macro matches English abbreviations of the ability names:\n\n| Ability | Code |h\n|<<dnd._lingo Ability/STR>> |`str` |\n|<<dnd._lingo Ability/DEX>> |`dex` |\n|<<dnd._lingo Ability/CON>> |`con` |\n|<<dnd._lingo Ability/INT>> |`int` |\n|<<dnd._lingo Ability/WIS>> |`wis` |\n|<<dnd._lingo Ability/CHA>> |`cha` |\n\nIt matches English skill names by least ambiguous prefix.\nFor example, `perc`, `perf`, and `pers` for Perception, Performance, and Persuasion, respectively.\n\n| Skill | Least Ambiguous Prefix |h\n|<<dnd._lingo Skill/Acrobatics>> |`ac` |\n|<<dnd._lingo Skill/AnimalHandling>> |`an` |\n|<<dnd._lingo Skill/Arcana>> |`ar` |\n|<<dnd._lingo Skill/Athletics>> |`at` |\n|<<dnd._lingo Skill/Deception>> |`d` |\n|<<dnd._lingo Skill/History>> |`h` |\n|<<dnd._lingo Skill/Insight>> |`ins` |\n|<<dnd._lingo Skill/Intimidation>> |`int` |\n|<<dnd._lingo Skill/Investigation>> |`inv` |\n|<<dnd._lingo Skill/Medicine>> |`m` |\n|<<dnd._lingo Skill/Nature>> |`n` |\n|<<dnd._lingo Skill/Perception>> |`perc` |\n|<<dnd._lingo Skill/Performance>> |`perf` |\n|<<dnd._lingo Skill/Persuasion>> |`pers` |\n|<<dnd._lingo Skill/Religion>> |`r` |\n|<<dnd._lingo Skill/SleightOfHand>> |`sl` |\n|<<dnd._lingo Skill/Stealth>> |`st` |\n|<<dnd._lingo Skill/Survival>> |`su` |\n\nYou can also use the full skill name, such as `<<dnd.check dex acrobatics>>` or `<<dnd.check wis \"Animal Handling\">>`.\n\n| Call | Output |h\n|`<<dnd.check int>>` |<<dnd.check int>> |\n|`<<dnd.check int dc:15>>` |<<dnd.check int dc:15>> |\n|`<<dnd.check int inv>>` |<<dnd.check int inv>> |\n|`<<dnd.check int inv 18>>` |<<dnd.check int inv 18>> |\n|`<<dnd.check cha perf>>` |<<dnd.check cha perf>> |\n|`<<dnd.check cha pers>>` |<<dnd.check cha pers>> |\n|`<<dnd.check wis su>>` |<<dnd.check wis su>> |\n|`<<dnd.check wis surv>>` |<<dnd.check wis surv>> |\n|`<<dnd.check wis survival>>` |<<dnd.check wis survival>> |\n|`<<dnd.check wis animal>>` |<<dnd.check wis animal>> |\n|`<<dnd.check wis \"Animal Handling\">>` |<<dnd.check wis \"Animal Handling\">> |\n\nFinally, the macro supports unusual ability and skill combinations, such as asking a player to make a <<dnd.check str int>> check (`<<dnd.check str int>>`).\n\n!! `dnd.creature`\n\nHelper macro to create a standalone creature tiddler.\n\nThis macro uses the [[dnd.statblock|$:/plugins/benwebber/dnd/templates/dnd.statblock]] template and stores the creature's attributes as tiddler fields.\nIt also adds a convenient button to edit the stats.\n\nIt is ''not'' necessary to use this macro if you use the automatic view template.\n\n!! `dnd.modifier`\n\nCalculates the modifier for a given ability score.\n\nGenerally you will want to use `dnd.ability` instead.\n\n|! Call|! Output|\n|`<<dnd.modifier 8>>`|<<dnd.modifier 8>>|\n|`<<dnd.modifier 10>>`|<<dnd.modifier 10>>|\n|`<<dnd.modifier 15>>`|<<dnd.modifier 15>>|\n|`<<dnd.modifier 20>>`|<<dnd.modifier 20>>|\n\n!! `dnd.spell`\n\nHelper macro to create a standalone spell tiddler.\n\nThis macro uses the [[dnd.spell|$:/plugins/benwebber/dnd/templates/dnd.spell]] template and stores the spell's attributes as tiddler fields.\nIt also adds a convenient button to edit the attributes.\n\nIt is ''not'' necessary to use this macro if you use the automatic view template.\n\n!! `dnd.statblock`\n\nRender a creature stat block.\nThis is a low-level macro.\nYou may want to use the automatic view template instead (see below).\n\n!!! Notes\n\n* Ability scores default to <<dnd.ability 10>>.\n* If not set, `language` defaults to `---`.\n\n```\n<<dnd.statblock\nsize: small\ntype: humanoid\ntags: goblinoid\nalignment: \"neutral evil\"\nac: \"15 (leather armor, shield)\"\nhp: 2d6\nspeed: \"30 ft.\"\nstr: 8\ndex: 14\nwis: 8\ncha: 8\nskills: \"Stealth +6\"\nsenses: \"darkvision 60 ft., passive Perception 9\"\nlanguages: \"Common, Goblin\"\nchallenge: 1/4\n>>\n```\n\n<$reveal type=\"nomatch\" state=\"!!dnd.statblock.state\" text=\"show\">\n\n<$button set=\"!!dnd.statblock.state\" setTo=\"show\">Show</$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"!!dnd.statblock.state\" text=\"show\">\n\n<$button set=\"!!dnd.statblock.state\" setTo=\"hide\">Hide</$button>\n\n<<dnd.statblock\nsize: small\ntype: humanoid\ntags: goblinoid\nalignment: \"neutral evil\"\nac: \"15 (leather armor, shield)\"\nhp: 2d6\nspeed: \"30 ft.\"\nstr: 8\ndex: 14\nwis: 8\ncha: 8\nskills: \"Stealth +6\"\nsenses: \"darkvision 60 ft., passive Perception 9\"\nlanguages: \"Common, Goblin\"\nchallenge: 1/4\n>>\n\n</$reveal>\n\n!! `dnd.xp`\n\nRenders experience points (XP) for the given challenge rating (CR).\n\n!!! Standard challenge ratings\n\n| Call | Output |h\n|`<<dnd.xp 0>>`|<<dnd.xp 0>>|\n|`<<dnd.xp 0 10>>`|<<dnd.xp 0 10>>|\n|`<<dnd.xp 1/2>>`|<<dnd.xp 1/2>>|\n|`<<dnd.xp 5>>`|<<dnd.xp 5>>|\n\n!!! Custom challenge ratings\n\n| Call | Output |h\n|`<<dnd.xp 40>>` |<<dnd.xp 40>>|\n|`<<dnd.xp 40 255555>>` |<<dnd.xp 40 255555>>|\n|`<<dnd.xp unknown>>`|<<dnd.xp unknown>>|\n\n! View Templates\n\n~TiddlyWiki view templates automatically inject content into tiddlers that match certain criteria.\nFor example, you might use a view template to style all tiddlers with a certain tag.\n\nThis plugin ships with two view templates:\n\n|! Template |! Description |! Example |\n|`spell` |Automatically render a spell description for all tiddlers tagged <$link to={{$:/plugins/benwebber/dnd/config/Tags/Spells}}>{{$:/plugins/benwebber/dnd/config/Tags/Spells}}</$link>. |[[Alarm]] |\n|`statblock` |Automatically render a stat block for all tiddlers tagged <$link to={{$:/plugins/benwebber/dnd/config/Tags/Creatures}}>{{$:/plugins/benwebber/dnd/config/Tags/Creatures}}</$link>. |[[Goblin]] |\n\nBoth templates are enabled by default.\nTo disable them and use the equivalent macros manually, navigate to the [[plugin settings tiddler|$:/plugins/benwebber/dnd]].\n"
},
"$:/plugins/benwebber/dnd/Settings": {
"title": "$:/plugins/benwebber/dnd/Settings",
"icon": "$:/core/images/options-button",
"text": "\\define render-boolean(key)\n<$checkbox tiddler=\"$:/plugins/benwebber/dnd/config/$key$\" field=\"text\" checked=\"true\" unchecked=\"false\" default=\"true\" />\n\\end\n\n\\define edit-setting(key)\n<$edit-text tiddler=\"$:/plugins/benwebber/dnd/config/$key$\" field=\"text\" tag=\"input\" />\n\\end\n\n|<<dnd._lingo Settings/Version>> |{{$:/plugins/benwebber/dnd!!version}} |\n|<<dnd._lingo Settings/CreatureTag>> |<<edit-setting \"Tags/Creatures\">> |\n|<<dnd._lingo Settings/SpellTag>> |<<edit-setting \"Tags/Spells\">> |\n|<<dnd._lingo Settings/RenderCreatures>> | <<render-boolean \"ViewTemplates/StatBlock\">> |\n|<<dnd._lingo Settings/RenderSpells>> | <<render-boolean \"ViewTemplates/Spell\">> |\n"
},
"$:/plugins/benwebber/dnd/templates/dnd.dspell": {
"title": "$:/plugins/benwebber/dnd/templates/dnd.dspell",
"tags": "$:/plugins/benwebber/dnd/Tags/Deprecated",
"text": "{{||$:/plugins/benwebber/dnd/templates/dnd.spell}}"
},
"$:/plugins/benwebber/dnd/templates/dnd.fspell": {
"title": "$:/plugins/benwebber/dnd/templates/dnd.fspell",
"tags": "$:/plugins/benwebber/dnd/Tags/Deprecated",
"text": "{{||$:/plugins/benwebber/dnd/templates/dnd.spell}}"
},
"$:/plugins/benwebber/dnd/templates/dnd.dstatblock": {
"title": "$:/plugins/benwebber/dnd/templates/dnd.dstatblock",
"tags": "$:/plugins/benwebber/dnd/Tags/Deprecated",
"text": "{{||$:/plugins/benwebber/dnd/templates/dnd.statblock}}"
},
"$:/plugins/benwebber/dnd/templates/dnd.fstatblock": {
"title": "$:/plugins/benwebber/dnd/templates/dnd.fstatblock",
"tags": "$:/plugins/benwebber/dnd/Tags/Deprecated",
"text": "{{||$:/plugins/benwebber/dnd/templates/dnd.statblock}}"
},
"$:/plugins/benwebber/dnd/config/Tags/Creatures": {
"title": "$:/plugins/benwebber/dnd/config/Tags/Creatures",
"text": "Creatures"
},
"$:/plugins/benwebber/dnd/config/Tags/Spells": {
"title": "$:/plugins/benwebber/dnd/config/Tags/Spells",
"text": "Spells"
},
"$:/plugins/benwebber/dnd/config/ViewTemplates/StatBlock": {
"title": "$:/plugins/benwebber/dnd/config/ViewTemplates/StatBlock",
"text": "true"
},
"$:/plugins/benwebber/dnd/config/ViewTemplates/Spell": {
"title": "$:/plugins/benwebber/dnd/config/ViewTemplates/Spell",
"text": "true"
},
"$:/plugins/benwebber/dnd/dnd.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* tslint:disable:object-literal-sort-keys */\nvar CR_TO_XP = {\n \"0\": 0,\n \"1/8\": 25,\n \"1/4\": 50,\n \"1/2\": 100,\n \"1\": 200,\n \"2\": 450,\n \"3\": 700,\n \"4\": 1100,\n \"5\": 1800,\n \"6\": 2300,\n \"7\": 2900,\n \"8\": 3900,\n \"9\": 5000,\n \"10\": 5900,\n \"11\": 7200,\n \"12\": 8400,\n \"13\": 10000,\n \"14\": 11500,\n \"15\": 13000,\n \"16\": 15000,\n \"17\": 18000,\n \"18\": 20000,\n \"19\": 22000,\n \"20\": 25000,\n \"21\": 33000,\n \"22\": 41000,\n \"23\": 50000,\n \"24\": 62000,\n \"25\": 75000,\n \"26\": 90000,\n \"27\": 105000,\n \"28\": 120000,\n \"29\": 135000,\n \"30\": 155000,\n};\n/* tslint:enable */\nvar SKILL_CODES_TO_CAPTIONS = {\n ac: \"Acrobatics\",\n an: \"AnimalHandling\",\n ar: \"Arcana\",\n at: \"Athletics\",\n d: \"Deception\",\n h: \"History\",\n ins: \"Insight\",\n int: \"Intimidation\",\n inv: \"Investigation\",\n m: \"Medicine\",\n n: \"Nature\",\n perc: \"Perception\",\n perf: \"Performance\",\n pers: \"Persuasion\",\n r: \"Religion\",\n sl: \"SleightOfHand\",\n st: \"Stealth\",\n su: \"Survival\",\n};\nvar ABILITY_REGEX = /^(STR|DEX|CON|INT|WIS|CHA).*/i;\nvar SKILL_REGEX = new RegExp(\"^(\" + Object.keys(SKILL_CODES_TO_CAPTIONS).join(\"|\") + \").*\", \"i\");\nvar AttackType;\n(function (AttackType) {\n AttackType[AttackType[\"Melee\"] = 0] = \"Melee\";\n AttackType[AttackType[\"Ranged\"] = 1] = \"Ranged\";\n AttackType[AttackType[\"MeleeOrRanged\"] = 2] = \"MeleeOrRanged\";\n})(AttackType = exports.AttackType || (exports.AttackType = {}));\nvar DamageType;\n(function (DamageType) {\n DamageType[\"Acid\"] = \"<<dnd._lingo Damage/Type/Acid>>\";\n DamageType[\"Bludgeoning\"] = \"<<dnd._lingo Damage/Type/Bludgeoning>>\";\n DamageType[\"Cold\"] = \"<<dnd._lingo Damage/Type/Cold>>\";\n DamageType[\"Fire\"] = \"<<dnd._lingo Damage/Type/Fire>>\";\n DamageType[\"Force\"] = \"<<dnd._lingo Damage/Type/Force>>\";\n DamageType[\"Lightning\"] = \"<<dnd._lingo Damage/Type/Lightning>>\";\n DamageType[\"Necrotic\"] = \"<<dnd._lingo Damage/Type/Necrotic>>\";\n DamageType[\"Piercing\"] = \"<<dnd._lingo Damage/Type/Piercing>>\";\n DamageType[\"Poison\"] = \"<<dnd._lingo Damage/Type/Poison>>\";\n DamageType[\"Psychic\"] = \"<<dnd._lingo Damage/Type/Psychic>>\";\n DamageType[\"Radiant\"] = \"<<dnd._lingo Damage/Type/Radiant>>\";\n DamageType[\"Slashing\"] = \"<<dnd._lingo Damage/Type/Slashing>>\";\n DamageType[\"Thunder\"] = \"<<dnd._lingo Damage/Type/Thunder>>\";\n})(DamageType = exports.DamageType || (exports.DamageType = {}));\nvar Spell = /** @class */ (function () {\n function Spell(level, school, cast, ritual, range, verbal, somatic, material, duration) {\n this.level = level;\n this.school = school;\n this.cast = cast;\n this.ritual = ritual;\n this.range = range;\n this.verbal = verbal;\n this.somatic = somatic;\n this.material = material;\n this.duration = duration;\n }\n Object.defineProperty(Spell.prototype, \"isCantrip\", {\n get: function () {\n return !isNaN(this.level) && this.level === 0;\n },\n enumerable: true,\n configurable: true\n });\n Spell.prototype.render = function () {\n var descriptionLevel = Number.isNaN(this.level) ? \"\" : this.level;\n var output = [\n \"//<<dnd._spellDescription level:\\\"\" + descriptionLevel + \"\\\" school:\\\"\" + this.school + \"\\\" ritual:\\\"\" + this.ritual + \"\\\">>//\",\n \"\",\n ];\n var componentFragments = [];\n if (this.verbal) {\n componentFragments.push(\"<<dnd._lingo Spell/Verbal>>\");\n }\n if (this.somatic) {\n componentFragments.push(\"<<dnd._lingo Spell/Somatic>>\");\n }\n if (this.material) {\n componentFragments.push(\"<<dnd._lingo Spell/Material>> (\" + this.material + \")\");\n }\n var components = componentFragments.join(\", \");\n var fields = [\n { caption: \"Spell/CastingTime\", value: this.cast },\n { caption: \"Spell/Range\", value: this.range },\n { caption: \"Spell/Components\", value: components },\n { caption: \"Spell/Duration\", value: this.duration },\n ];\n output = output.concat(renderFields(fields, true));\n output.push(\"\");\n return output.join(\"\\n\");\n };\n return Spell;\n}());\nexports.Spell = Spell;\nvar StatBlock = /** @class */ (function () {\n function StatBlock(size, type, alignment, ac, hp, speed, str, dex, con, int, wis, cha, senses, languages, challenge, tags, saves, skills, dimm, dres, dvul, cimm, cres, cvul) {\n this.size = size;\n this.type = type;\n this.alignment = alignment;\n this.ac = ac;\n this.hp = hp;\n this.speed = speed;\n this.str = str;\n this.dex = dex;\n this.con = con;\n this.int = int;\n this.wis = wis;\n this.cha = cha;\n this.senses = senses;\n this.languages = languages;\n this.challenge = challenge;\n this.tags = tags;\n this.saves = saves;\n this.skills = skills;\n this.dimm = dimm;\n this.dres = dres;\n this.dvul = dvul;\n this.cimm = cimm;\n this.cres = cres;\n this.cvul = cvul;\n }\n Object.defineProperty(StatBlock.prototype, \"description\", {\n get: function () {\n // TODO: Translate stored size, type values in description.\n var descriptionFragments = [this.size, this.type];\n if (this.tags) {\n descriptionFragments.push(this.renderTags(this.tags));\n }\n var description = descriptionFragments.join(\" \").trim();\n if (this.alignment) {\n description = description + \", \" + this.alignment;\n }\n return description;\n },\n enumerable: true,\n configurable: true\n });\n StatBlock.prototype.render = function () {\n var output = [\n \"//\" + capitalize(this.description) + \"//\",\n \"\",\n ];\n var fields = [\n { caption: \"StatBlock/AC\", value: this.ac },\n { caption: \"StatBlock/HP\", value: average(this.hp) },\n { caption: \"StatBlock/Speed\", value: this.speed },\n ];\n output = output.concat(renderFields(fields, true));\n output.push(\"\");\n output.push(\"---\");\n var abilities = [\n { caption: \"StatBlock/STR\", value: this.str },\n { caption: \"StatBlock/DEX\", value: this.dex },\n { caption: \"StatBlock/CON\", value: this.con },\n { caption: \"StatBlock/INT\", value: this.int },\n { caption: \"StatBlock/WIS\", value: this.wis },\n { caption: \"StatBlock/CHA\", value: this.cha },\n ];\n output = output.concat(this.renderAbilities(abilities));\n output.push(\"\");\n output.push(\"---\");\n fields = [\n { caption: \"StatBlock/Saves\", value: this.saves },\n { caption: \"StatBlock/Skills\", value: this.skills },\n { caption: \"StatBlock/DamageImmunities\", value: this.dimm },\n { caption: \"StatBlock/DamageResistances\", value: this.dres },\n { caption: \"StatBlock/DamageVulnerabilities\", value: this.dvul },\n { caption: \"StatBlock/ConditionImmunities\", value: this.cimm },\n { caption: \"StatBlock/ConditionResistances\", value: this.cres },\n { caption: \"StatBlock/ConditionVulnerabilities\", value: this.cvul },\n ];\n output = output.concat(renderFields(fields, false));\n // Does the challenge field embed XP?\n var challengeRegexp = /(\\d+)\\s+(\\d+)?/;\n var challengeMatch = this.challenge.match(challengeRegexp);\n var challengeMacro = \"<<dnd.xp \\\"\" + this.challenge + \"\\\">>\";\n if (challengeMatch && challengeMatch[2]) {\n challengeMacro = \"<<dnd.xp \\\"\" + challengeMatch[1] + \"\\\" \\\"\" + challengeMatch[2] + \"\\\">>\";\n }\n fields = [\n { caption: \"StatBlock/Senses\", value: this.senses },\n { caption: \"StatBlock/Languages\", value: this.languages },\n { caption: \"StatBlock/Challenge\", value: challengeMacro },\n ];\n output = output.concat(renderFields(fields, true));\n output.push(\"\");\n output.push(\"---\");\n return output.join(\"\\n\");\n };\n StatBlock.prototype.renderTags = function (tags) {\n return tags ? \"(\" + tags + \")\" : \"\";\n };\n StatBlock.prototype.renderAbilities = function (abilities) {\n return [\n \"| \" + abilities.map(function (field) { return \"<<dnd._lingo \" + field.caption + \">>\"; }).join(\" | \") + \" |h\",\n \"| \" + abilities.map(function (field) { return ability(field.value); }).join(\" | \") + \" |\",\n ];\n };\n return StatBlock;\n}());\nexports.StatBlock = StatBlock;\nfunction ability(score) {\n return score + \" (\" + modifier(score) + \")\";\n}\nexports.ability = ability;\nfunction modifier(score) {\n var mod = Math.floor((score - 10) / 2);\n var op = (mod >= 0) ? \"+\" : \"−\"; // minus sign (U+2212)\n return \"\" + op + Math.abs(mod);\n}\nexports.modifier = modifier;\nfunction average(expr) {\n var regexp = /(\\d+)?d(\\d+)\\s?(?:(-|\\+)\\s?(\\d+))?/i;\n var match = expr.match(regexp);\n if (!match) {\n return expr;\n }\n var nDice = parseInt(match[1], 10) || 1;\n var nSides = parseInt(match[2], 10);\n var op = match[3];\n var mod = parseInt(match[4], 10) || 0;\n var avg;\n if (!op) {\n avg = Math.floor(nDice * (1 + nSides) / 2 + mod);\n return avg + \" (\" + nDice + \"d\" + nSides + \")\";\n }\n if (op === \"+\") {\n avg = Math.floor(nDice * (1 + nSides) / 2 + mod);\n }\n else {\n op = \"−\";\n avg = Math.floor(nDice * (1 + nSides) / 2 - mod);\n }\n return avg + \" (\" + nDice + \"d\" + nSides + \" \" + op + \" \" + mod + \")\";\n}\nexports.average = average;\nfunction capitalize(s) {\n return s.charAt(0).toLocaleUpperCase() + s.slice(1);\n}\nexports.capitalize = capitalize;\n// tslint:disable-next-line:no-shadowed-variable\nfunction check(ability, skill, dc) {\n var abilityMatch = ability.match(ABILITY_REGEX);\n if (!abilityMatch) {\n return \"\";\n }\n var abilityCode = abilityMatch[1].toLocaleUpperCase();\n var fragments = [\"<<dnd._lingo Ability/\" + abilityCode + \">>\"];\n if (skill) {\n var skillMatch = skill.match(SKILL_REGEX);\n if (skillMatch) {\n var skillCode = skillMatch[1].toLocaleLowerCase();\n fragments.push(\"(<<dnd._lingo Skill/\" + SKILL_CODES_TO_CAPTIONS[skillCode] + \">>)\");\n }\n }\n if (dc) {\n fragments.unshift(\"<<dnd._lingo Check/DC>> \" + dc);\n }\n return fragments.join(\" \");\n}\nexports.check = check;\nfunction renderFields(fields, alwaysRender) {\n var output = [];\n for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {\n var field = fields_1[_i];\n if (alwaysRender || field.value) {\n output.push(\"|!<<dnd._lingo \" + field.caption + \">> |\" + field.value + \" |\");\n }\n }\n return output;\n}\nfunction getXP(rating) {\n rating = rating.replace(/['\"]/g, \"\");\n return CR_TO_XP[rating];\n}\nexports.getXP = getXP;\nfunction hit(damage, damageType, extraDamage, extraDamageType, condDamage, condDamageType, extraCondDamage, extraCondDamageType, when, effect) {\n var buffer = [\"//<<dnd._lingo StatBlock/Action/Hit>>://\"];\n buffer.push(renderDamage(damage, damageType, extraDamage, extraDamageType));\n var or = \"\";\n if (condDamage && condDamageType && when) {\n or = renderDamage(condDamage, condDamageType, extraCondDamage, extraCondDamageType) + \" \" + when;\n }\n var output = buffer.join(\" \");\n if (or) {\n output = output + \", <<dnd._lingo StatBlock/Action/Or>> \" + or;\n }\n if (effect) {\n output = output + \", \" + effect;\n }\n return output + \".\";\n}\nexports.hit = hit;\nfunction renderDamage(damage, damageType, extraDamage, extraDamageType) {\n var buffer = [\n average(damage),\n damageType,\n ];\n if (extraDamage && extraDamageType) {\n buffer = buffer.concat([\n \"<<dnd._lingo StatBlock/Action/Plus>>\",\n average(extraDamage),\n extraDamageType,\n ]);\n }\n return buffer.join(\" \");\n}\nfunction weaponAttack(attackType, bonus, reach, range, target) {\n var _a;\n // tslint:disable max-line-length\n var attackTypesToCaptions = (_a = {},\n _a[AttackType.Melee] = {\n attack: \"<<dnd._lingo StatBlock/Action/Melee>>\",\n reachOrRange: \"<<dnd._lingo StatBlock/Action/Reach>> \" + reach,\n },\n _a[AttackType.Ranged] = {\n attack: \"<<dnd._lingo StatBlock/Action/Ranged>>\",\n reachOrRange: \"<<dnd._lingo StatBlock/Action/Range>> \" + range,\n },\n _a[AttackType.MeleeOrRanged] = {\n attack: \"<<dnd._lingo StatBlock/Action/MeleeOrRanged>>\",\n reachOrRange: \"<<dnd._lingo StatBlock/Action/Reach>> \" + reach + \" <<dnd._lingo StatBlock/Action/Or>> <<dnd._lingo StatBlock/Action/Range>> \" + range,\n },\n _a);\n var captions = attackTypesToCaptions[attackType];\n var output = [\n \"//\" + captions.attack + \":// \" + bonus + \" <<dnd._lingo StatBlock/Action/ToHit>>\",\n captions.reachOrRange,\n target || \"<<dnd._lingo StatBlock/Action/DefaultTarget>>\",\n ];\n return output.join(\", \") + \".\";\n}\nexports.weaponAttack = weaponAttack;\n",
"title": "$:/plugins/benwebber/dnd/dnd.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/benwebber/dnd/icon": {
"title": "$:/plugins/benwebber/dnd/icon",
"text": "<!--\nd-and-d-brands icon from FontAwesome\nLicensed under Creative Commons Attribution 4.0 International\nhttps://fontawesome.com/license\n-->\n<svg aria-hidden=\"true\" data-prefix=\"fab\" data-icon=\"d-and-d\" class=\"svg-inline--fa fa-d-and-d fa-w-18\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><path fill=\"currentColor\" d=\"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"></path></svg>\n"
},
"$:/plugins/benwebber/dnd/images/new-creature": {
"title": "$:/plugins/benwebber/dnd/images/new-creature",
"text": "<!--\n user-plus-solid icon from FontAwesome\n Licensed under Creative Commons Attribution 4.0 International\n https://fontawesome.com/license\n\n Modified by setting TiddlyWiki classes, height, and width.\n-->\n<svg aria-hidden=\"true\" data-prefix=\"fas\" data-icon=\"user-plus\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\" class=\"tc-image-new-image-button tc-image-button\" width=\"22pt\" height=\"22pt\"><path fill=\"currentColor\" d=\"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"></path></svg>\n"
},
"$:/plugins/benwebber/dnd/images/new-spell": {
"title": "$:/plugins/benwebber/dnd/images/new-spell",
"text": "<!--\n magic icon from FontAwesome\n Licensed under Creative Commons Attribution 4.0 International\n https://fontawesome.com/license\n\n Modified by setting TiddlyWiki classes, height, and width.\n-->\n<svg aria-hidden=\"true\" data-prefix=\"fas\" data-icon=\"magic\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" class=\"tc-image-new-image-button tc-image-button\" width=\"22pt\" height=\"22pt\"><path fill=\"currentColor\" d=\"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"></path></svg>\n"
},
"$:/plugins/benwebber/dnd/language/Ability/STR": {
"title": "$:/plugins/benwebber/dnd/language/Ability/STR",
"text": "Strength"
},
"$:/plugins/benwebber/dnd/language/Ability/DEX": {
"title": "$:/plugins/benwebber/dnd/language/Ability/DEX",
"text": "Dexterity"
},
"$:/plugins/benwebber/dnd/language/Ability/CON": {
"title": "$:/plugins/benwebber/dnd/language/Ability/CON",
"text": "Constitution"
},
"$:/plugins/benwebber/dnd/language/Ability/INT": {
"title": "$:/plugins/benwebber/dnd/language/Ability/INT",
"text": "Intelligence"
},
"$:/plugins/benwebber/dnd/language/Ability/WIS": {
"title": "$:/plugins/benwebber/dnd/language/Ability/WIS",
"text": "Wisdom"
},
"$:/plugins/benwebber/dnd/language/Ability/CHA": {
"title": "$:/plugins/benwebber/dnd/language/Ability/CHA",
"text": "Charisma"
},
"$:/plugins/benwebber/dnd/language/Buttons/NewCreature/Text": {
"title": "$:/plugins/benwebber/dnd/language/Buttons/NewCreature/Text",
"text": "new creature"
},
"$:/plugins/benwebber/dnd/language/Buttons/NewCreature/Title": {
"title": "$:/plugins/benwebber/dnd/language/Buttons/NewCreature/Title",
"text": "New Creature"
},
"$:/plugins/benwebber/dnd/language/Buttons/NewCreature/Tooltip": {
"title": "$:/plugins/benwebber/dnd/language/Buttons/NewCreature/Tooltip",
"text": "Create a new creature"
},
"$:/plugins/benwebber/dnd/language/Buttons/NewSpell/Text": {
"title": "$:/plugins/benwebber/dnd/language/Buttons/NewSpell/Text",
"text": "new spell"
},
"$:/plugins/benwebber/dnd/language/Buttons/NewSpell/Title": {
"title": "$:/plugins/benwebber/dnd/language/Buttons/NewSpell/Title",
"text": "New Spell"
},
"$:/plugins/benwebber/dnd/language/Buttons/NewSpell/Tooltip": {
"title": "$:/plugins/benwebber/dnd/language/Buttons/NewSpell/Tooltip",
"text": "Create a new spell"
},
"$:/plugins/benwebber/dnd/language/Check/DC": {
"title": "$:/plugins/benwebber/dnd/language/Check/DC",
"text": "DC"
},
"$:/plugins/benwebber/dnd/language/EditCurrentTiddler": {
"title": "$:/plugins/benwebber/dnd/language/EditCurrentTiddler",
"text": "Edit <<sourceTiddler>>"
},
"$:/plugins/benwebber/dnd/language/Creature/Size/Tiny": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Size/Tiny",
"text": "Tiny"
},
"$:/plugins/benwebber/dnd/language/Creature/Size/Small": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Size/Small",
"text": "Small"
},
"$:/plugins/benwebber/dnd/language/Creature/Size/Medium": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Size/Medium",
"text": "Medium"
},
"$:/plugins/benwebber/dnd/language/Creature/Size/Large": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Size/Large",
"text": "Large"
},
"$:/plugins/benwebber/dnd/language/Creature/Size/Huge": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Size/Huge",
"text": "Huge"
},
"$:/plugins/benwebber/dnd/language/Creature/Size/Gargantuan": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Size/Gargantuan",
"text": "Gargantuan"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Aberration": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Aberration",
"text": "Aberration"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Beast": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Beast",
"text": "Beast"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Celestial": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Celestial",
"text": "Celestial"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Construct": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Construct",
"text": "Construct"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Dragon": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Dragon",
"text": "Dragon"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Elemental": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Elemental",
"text": "Elemental"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Fey": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Fey",
"text": "Fey"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Fiend": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Fiend",
"text": "Fiend"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Giant": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Giant",
"text": "Giant"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Humanoid": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Humanoid",
"text": "Humanoid"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Monstrosity": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Monstrosity",
"text": "Monstrosity"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Ooze": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Ooze",
"text": "Ooze"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Plant": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Plant",
"text": "Plant"
},
"$:/plugins/benwebber/dnd/language/Creature/Type/Undead": {
"title": "$:/plugins/benwebber/dnd/language/Creature/Type/Undead",
"text": "Undead"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Acid": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Acid",
"text": "acid damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Bludgeoning": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Bludgeoning",
"text": "bludgeoning damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Cold": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Cold",
"text": "cold damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Fire": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Fire",
"text": "fire damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Force": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Force",
"text": "force damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Lightning": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Lightning",
"text": "lightning damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Necrotic": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Necrotic",
"text": "necrotic damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Piercing": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Piercing",
"text": "piercing damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Poison": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Poison",
"text": "poison damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Psychic": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Psychic",
"text": "psychic damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Radiant": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Radiant",
"text": "radiant damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Slashing": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Slashing",
"text": "slashing damage"
},
"$:/plugins/benwebber/dnd/language/Damage/Type/Thunder": {
"title": "$:/plugins/benwebber/dnd/language/Damage/Type/Thunder",
"text": "thunder damage"
},
"$:/plugins/benwebber/dnd/language/Modals/Subtitle": {
"title": "$:/plugins/benwebber/dnd/language/Modals/Subtitle",
"text": "Editing <<tiddler>>"
},
"$:/plugins/benwebber/dnd/language/Modals/Help": {
"title": "$:/plugins/benwebber/dnd/language/Modals/Help",
"text": "//Changes take effect immediately.//"
},
"$:/plugins/benwebber/dnd/language/Settings/Version": {
"title": "$:/plugins/benwebber/dnd/language/Settings/Version",
"text": "Version"
},
"$:/plugins/benwebber/dnd/language/Settings/CreatureTag": {
"title": "$:/plugins/benwebber/dnd/language/Settings/CreatureTag",
"text": "Tag for creature tiddlers"
},
"$:/plugins/benwebber/dnd/language/Settings/SpellTag": {
"title": "$:/plugins/benwebber/dnd/language/Settings/SpellTag",
"text": "Tag for spell tiddlers"
},
"$:/plugins/benwebber/dnd/language/Settings/RenderCreatures": {
"title": "$:/plugins/benwebber/dnd/language/Settings/RenderCreatures",
"text": "Automatically render stat blocks for creature tiddlers"
},
"$:/plugins/benwebber/dnd/language/Settings/RenderSpells": {
"title": "$:/plugins/benwebber/dnd/language/Settings/RenderSpells",
"text": "Automatically render stat blocks for spell tiddlers"
},
"$:/plugins/benwebber/dnd/language/Skill/Acrobatics": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Acrobatics",
"text": "Acrobatics"
},
"$:/plugins/benwebber/dnd/language/Skill/AnimalHandling": {
"title": "$:/plugins/benwebber/dnd/language/Skill/AnimalHandling",
"text": "Animal Handling"
},
"$:/plugins/benwebber/dnd/language/Skill/Arcana": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Arcana",
"text": "Arcana"
},
"$:/plugins/benwebber/dnd/language/Skill/Athletics": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Athletics",
"text": "Athletics"
},
"$:/plugins/benwebber/dnd/language/Skill/Deception": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Deception",
"text": "Deception"
},
"$:/plugins/benwebber/dnd/language/Skill/History": {
"title": "$:/plugins/benwebber/dnd/language/Skill/History",
"text": "History"
},
"$:/plugins/benwebber/dnd/language/Skill/Insight": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Insight",
"text": "Insight"
},
"$:/plugins/benwebber/dnd/language/Skill/Intimidation": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Intimidation",
"text": "Intimidation"
},
"$:/plugins/benwebber/dnd/language/Skill/Investigation": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Investigation",
"text": "Investigation"
},
"$:/plugins/benwebber/dnd/language/Skill/Medicine": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Medicine",
"text": "Medicine"
},
"$:/plugins/benwebber/dnd/language/Skill/Nature": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Nature",
"text": "Nature"
},
"$:/plugins/benwebber/dnd/language/Skill/Perception": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Perception",
"text": "Perception"
},
"$:/plugins/benwebber/dnd/language/Skill/Performance": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Performance",
"text": "Performance"
},
"$:/plugins/benwebber/dnd/language/Skill/Persuasion": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Persuasion",
"text": "Persuasion"
},
"$:/plugins/benwebber/dnd/language/Skill/Religion": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Religion",
"text": "Religion"
},
"$:/plugins/benwebber/dnd/language/Skill/SleightOfHand": {
"title": "$:/plugins/benwebber/dnd/language/Skill/SleightOfHand",
"text": "Sleight of Hand"
},
"$:/plugins/benwebber/dnd/language/Skill/Stealth": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Stealth",
"text": "Stealth"
},
"$:/plugins/benwebber/dnd/language/Skill/Survival": {
"title": "$:/plugins/benwebber/dnd/language/Skill/Survival",
"text": "Survival"
},
"$:/plugins/benwebber/dnd/language/Spell/DescriptionFormat/Default": {
"title": "$:/plugins/benwebber/dnd/language/Spell/DescriptionFormat/Default",
"text": "$level$$levelSuffix$-level $school$"
},
"$:/plugins/benwebber/dnd/language/Spell/DescriptionFormat/Ritual": {
"title": "$:/plugins/benwebber/dnd/language/Spell/DescriptionFormat/Ritual",
"text": "$level$$levelSuffix$-level $school$ (ritual)"
},
"$:/plugins/benwebber/dnd/language/Spell/DescriptionFormat/Cantrip": {
"title": "$:/plugins/benwebber/dnd/language/Spell/DescriptionFormat/Cantrip",
"text": "$School$ cantrip"
},
"$:/plugins/benwebber/dnd/language/Spell/Level": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Level",
"text": "Level"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/1": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/1",
"text": "st"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/2": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/2",
"text": "nd"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/3": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/3",
"text": "rd"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/4": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/4",
"text": "th"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/5": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/5",
"text": "th"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/6": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/6",
"text": "th"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/7": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/7",
"text": "th"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/8": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/8",
"text": "th"
},
"$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/9": {
"title": "$:/plugins/benwebber/dnd/language/Spell/LevelSuffix/9",
"text": "th"
},
"$:/plugins/benwebber/dnd/language/Spell/School": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School",
"text": "School"
},
"$:/plugins/benwebber/dnd/language/Spell/CastingTime": {
"title": "$:/plugins/benwebber/dnd/language/Spell/CastingTime",
"text": "Casting Time"
},
"$:/plugins/benwebber/dnd/language/Spell/Range": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Range",
"text": "Range"
},
"$:/plugins/benwebber/dnd/language/Spell/Duration": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Duration",
"text": "Duration"
},
"$:/plugins/benwebber/dnd/language/Spell/Components": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Components",
"text": "Components"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Abjuration": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Abjuration",
"text": "Abjuration"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Conjuration": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Conjuration",
"text": "Conjuration"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Divination": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Divination",
"text": "Divination"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Enchantment": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Enchantment",
"text": "Enchantment"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Evocation": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Evocation",
"text": "Evocation"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Illusion": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Illusion",
"text": "Illusion"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Necromancy": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Necromancy",
"text": "Necromancy"
},
"$:/plugins/benwebber/dnd/language/Spell/School/Transmutation": {
"title": "$:/plugins/benwebber/dnd/language/Spell/School/Transmutation",
"text": "Transmutation"
},
"$:/plugins/benwebber/dnd/language/Spell/Ritual": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Ritual",
"text": "Ritual"
},
"$:/plugins/benwebber/dnd/language/Spell/Verbal": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Verbal",
"text": "V"
},
"$:/plugins/benwebber/dnd/language/Spell/Somatic": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Somatic",
"text": "S"
},
"$:/plugins/benwebber/dnd/language/Spell/Material": {
"title": "$:/plugins/benwebber/dnd/language/Spell/Material",
"text": "M"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Size": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Size",
"text": "Size"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Type": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Type",
"text": "Type"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Tags": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Tags",
"text": "Tags"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Alignment": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Alignment",
"text": "Alignment"
},
"$:/plugins/benwebber/dnd/language/StatBlock/AC": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/AC",
"text": "Armour Class"
},
"$:/plugins/benwebber/dnd/language/StatBlock/HP": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/HP",
"text": "Hit Points"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Speed": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Speed",
"text": "Speed"
},
"$:/plugins/benwebber/dnd/language/StatBlock/STR": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/STR",
"text": "STR"
},
"$:/plugins/benwebber/dnd/language/StatBlock/DEX": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/DEX",
"text": "DEX"
},
"$:/plugins/benwebber/dnd/language/StatBlock/CON": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/CON",
"text": "CON"
},
"$:/plugins/benwebber/dnd/language/StatBlock/INT": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/INT",
"text": "INT"
},
"$:/plugins/benwebber/dnd/language/StatBlock/WIS": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/WIS",
"text": "WIS"
},
"$:/plugins/benwebber/dnd/language/StatBlock/CHA": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/CHA",
"text": "CHA"
},
"$:/plugins/benwebber/dnd/language/StatBlock/SavingThrows": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/SavingThrows",
"text": "Saving Throws"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Senses": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Senses",
"text": "Senses"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Languages": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Languages",
"text": "Languages"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Challenge": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Challenge",
"text": "Challenge"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Saves": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Saves",
"text": "Saving Throws"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Skills": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Skills",
"text": "Skills"
},
"$:/plugins/benwebber/dnd/language/StatBlock/DamageImmunities": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/DamageImmunities",
"text": "Damage Immunities"
},
"$:/plugins/benwebber/dnd/language/StatBlock/DamageResistances": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/DamageResistances",
"text": "Damage Resistances"
},
"$:/plugins/benwebber/dnd/language/StatBlock/DamageVulnerabilities": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/DamageVulnerabilities",
"text": "Damage Vulnerabilities"
},
"$:/plugins/benwebber/dnd/language/StatBlock/ConditionImmunities": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/ConditionImmunities",
"text": "Condition Immunities"
},
"$:/plugins/benwebber/dnd/language/StatBlock/ConditionResistances": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/ConditionResistances",
"text": "Condition Resistances"
},
"$:/plugins/benwebber/dnd/language/StatBlock/ConditionVulnerabilities": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/ConditionVulnerabilities",
"text": "Condition Vulnerabilities"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Damage": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Damage",
"text": "damage"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/DefaultTarget": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/DefaultTarget",
"text": "one target"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Hit": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Hit",
"text": "Hit"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Melee": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Melee",
"text": "Melee Weapon Attack"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/MeleeOrRanged": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/MeleeOrRanged",
"text": "Melee or Ranged Weapon Attack"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Or": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Or",
"text": "or"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Plus": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Plus",
"text": "plus"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Range": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Range",
"text": "range"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Ranged": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Ranged",
"text": "Ranged Weapon Attack"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/Reach": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/Reach",
"text": "reach"
},
"$:/plugins/benwebber/dnd/language/StatBlock/Action/ToHit": {
"title": "$:/plugins/benwebber/dnd/language/StatBlock/Action/ToHit",
"text": "to hit"
},
"$:/plugins/benwebber/dnd/language/XP": {
"title": "$:/plugins/benwebber/dnd/language/XP",
"text": "XP"
},
"$:/plugins/benwebber/dnd/languages/en-US/StatBlock/AC": {
"title": "$:/plugins/benwebber/dnd/languages/en-US/StatBlock/AC",
"text": "Armor Class"
},
"$:/plugins/benwebber/dnd/macros/creature": {
"title": "$:/plugins/benwebber/dnd/macros/creature",
"tags": "$:/tags/Macro",
"text": "\\define creature-actions()\n<!--\nIf the user enters, then deletes a value in the form, the corresponding field\nwill be empty. Delete empty fields.\n-->\n<$list filter=\"[title<currentTiddler>fields[]]\" variable=\"field\">\n<$list filter=\"[title<currentTiddler>!has<field>]\">\n<$action-deletefield $field=<<field>> />\n</$list>\n</$list>\n<!-- Open editor form. -->\n<$action-sendmessage\n $message=\"tm-modal\"\n $param=\"$:/plugins/benwebber/dnd/ui/Modals/UpdateCreature\"\n tiddler=<<currentTiddler>>\n/>\n\\end\n\n\\define dnd.creature()\n{{||$:/plugins/benwebber/dnd/templates/dnd.statblock}}\n\n<$set name=\"sourceTiddler\" value=<<currentTiddler>>>\n<$button actions=<<creature-actions>>><<dnd._lingo EditCurrentTiddler>></$button>\n</$set>\n\\end\n"
},
"$:/plugins/benwebber/dnd/macros/spell": {
"title": "$:/plugins/benwebber/dnd/macros/spell",
"tags": "$:/tags/Macro",
"text": "\\define spell-actions()\n<!--\nIf the user enters, then deletes a value in the form, the corresponding field\nwill be empty. Delete empty fields.\n-->\n<$list filter=\"[title<currentTiddler>fields[]]\" variable=\"field\">\n<$list filter=\"[title<currentTiddler>!has<field>]\">\n<$action-deletefield $field=<<field>> />\n</$list>\n</$list>\n<!-- Open editor form. -->\n<$action-sendmessage\n $message=\"tm-modal\"\n $param=\"$:/plugins/benwebber/dnd/ui/Modals/UpdateSpell\"\n tiddler=<<currentTiddler>>\n/>\n\\end\n\n\\define dnd.spell()\n{{||$:/plugins/benwebber/dnd/templates/dnd.spell}}\n\n<$set name=\"sourceTiddler\" value=<<currentTiddler>>>\n<$button actions=<<spell-actions>>><<dnd._lingo EditCurrentTiddler>></$button>\n</$set>\n\\end\n"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd._lingo.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.name = \"dnd._lingo\";\nexports.params = [\n { name: \"title\" },\n];\nfunction run(title) {\n var plugin = \"benwebber/dnd\";\n var languageTitle = this.getVariable(\"languageTitle\");\n var tiddlerTitle = \"$:/plugins/\" + plugin + \"/languages/\" + languageTitle + \"/\" + title;\n if (this.wiki.isShadowTiddler(tiddlerTitle)) {\n return \"{{\" + tiddlerTitle + \"}}\";\n }\n // Check if string is defined in dependency.\n var dependents = this.wiki.getTextReference(\"$:/languages/\" + languageTitle + \"!!dependents\", \"\");\n var dependentLanguageTitles = $tw.utils.parseStringArray(dependents)\n .map(function (tiddler) { return tiddler.replace(\"$:/languages/\", \"\"); });\n for (var _i = 0, dependentLanguageTitles_1 = dependentLanguageTitles; _i < dependentLanguageTitles_1.length; _i++) {\n var dependentLanguageTitle = dependentLanguageTitles_1[_i];\n var dependentTiddlerTitle = \"$:/plugins/\" + plugin + \"/languages/\" + dependentLanguageTitle + \"/\" + title;\n if (this.wiki.isShadowTiddler(dependentTiddlerTitle)) {\n return \"{{\" + dependentTiddlerTitle + \"}}\";\n }\n }\n // Fall back to default string.\n return \"{{$:/plugins/\" + plugin + \"/language/\" + title + \"}}\";\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd._lingo.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd._spellDescription.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd._spellDescription\";\nexports.params = [\n { name: \"level\" },\n { name: \"school\" },\n { name: \"ritual\" },\n];\nfunction run(level, school, ritual) {\n var isRitual = ritual === \"true\";\n // tslint:disable no-shadowed-variable\n var isCantrip = function (level) { return parseInt(level, 10) === 0; };\n var template;\n if (isCantrip(level)) {\n template = \"Spell/DescriptionFormat/Cantrip\";\n }\n else if (isRitual) {\n template = \"Spell/DescriptionFormat/Ritual\";\n }\n else {\n template = \"Spell/DescriptionFormat/Default\";\n }\n var format = this.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<<dnd._lingo \" + template + \">>\");\n var schoolName = this.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<<dnd._lingo Spell/School/\" + dnd_js_1.capitalize(school) + \">>\");\n var replacements = {\n School: schoolName,\n level: level,\n levelSuffix: \"<<dnd._lingo Spell/LevelSuffix/\" + level + \">>\",\n school: schoolName.toLocaleLowerCase(),\n };\n var rendered = format.replace(/\\$(\\w+)\\$/g, function (_, key) { return replacements[key]; });\n return rendered;\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd._spellDescription.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.ability.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.ability\";\nexports.params = [{ name: \"score\" }];\nfunction run(score) {\n var nScore = Number.parseInt(score, 10);\n return dnd_js_1.ability(nScore);\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.ability.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.attack.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.attack\";\nexports.params = [\n { name: \"name\" },\n { name: \"type\" },\n { name: \"bonus\" },\n { name: \"reach\" },\n { name: \"range\" },\n { name: \"target\" },\n { name: \"damage\" },\n { name: \"damageType\" },\n { name: \"extraDamage\" },\n { name: \"extraDamageType\" },\n { name: \"condDamage\" },\n { name: \"condDamageType\" },\n { name: \"extraCondDamage\" },\n { name: \"extraCondDamageType\" },\n { name: \"when\" },\n { name: \"effect\" },\n];\n// tslint:disable no-shadowed-variable\nfunction run(name, attackType, bonus, reach, range, target, damage, damageType, extraDamage, extraDamageType, condDamage, condDamageType, extraCondDamage, extraCondDamageType, when, effect) {\n var attackTypes = {\n both: dnd_js_1.AttackType.MeleeOrRanged,\n melee: dnd_js_1.AttackType.Melee,\n ranged: dnd_js_1.AttackType.Ranged,\n };\n var damageTypes = {\n acid: dnd_js_1.DamageType.Acid,\n bludgeoning: dnd_js_1.DamageType.Bludgeoning,\n cold: dnd_js_1.DamageType.Cold,\n fire: dnd_js_1.DamageType.Fire,\n force: dnd_js_1.DamageType.Force,\n lightning: dnd_js_1.DamageType.Lightning,\n necrotic: dnd_js_1.DamageType.Necrotic,\n piercing: dnd_js_1.DamageType.Piercing,\n poison: dnd_js_1.DamageType.Poison,\n psychic: dnd_js_1.DamageType.Psychic,\n radiant: dnd_js_1.DamageType.Radiant,\n slashing: dnd_js_1.DamageType.Slashing,\n thunder: dnd_js_1.DamageType.Thunder,\n };\n var eAttackType = attackTypes[attackType.toLowerCase()];\n if (eAttackType == null) {\n return \"\";\n }\n var eDamageType = damageTypes[damageType.toLowerCase()];\n var eExtraDamageType = damageTypes[extraDamageType.toLowerCase()];\n var eCondDamageType = damageTypes[condDamageType.toLowerCase()];\n var eExtraCondDamageType = damageTypes[extraCondDamageType.toLowerCase()];\n var output = [\n \"//''\" + name + \".''//\",\n dnd_js_1.weaponAttack(eAttackType, bonus, reach, range, target),\n dnd_js_1.hit(damage, eDamageType, extraDamage, eExtraDamageType, condDamage, eCondDamageType, extraCondDamage, eExtraCondDamageType, when, effect),\n ];\n return output.join(\" \");\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.attack.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.average.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.average\";\nexports.params = [{ name: \"expr\" }];\nfunction run(expr) {\n return dnd_js_1.average(expr);\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.average.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.check.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.check\";\nexports.params = [\n { name: \"ability\" },\n { name: \"skill\" },\n { name: \"dc\" },\n];\nfunction run(ability, skill, dc) {\n var nDC = Number.parseInt(dc, 10);\n return dnd_js_1.check(ability, skill, nDC);\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.check.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.modifier.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.modifier\";\nexports.params = [{ name: \"score\" }];\nfunction run(score) {\n var nScore = Number.parseInt(score, 10);\n return dnd_js_1.modifier(nScore);\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.modifier.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.spellblock.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.spellblock\";\nexports.params = [\n { name: \"level\" },\n { name: \"school\" },\n { name: \"cast\" },\n { name: \"ritual\" },\n { name: \"range\" },\n { name: \"verbal\" },\n { name: \"somatic\" },\n { name: \"material\" },\n { name: \"duration\" },\n];\nfunction run(level, school, cast, ritual, range, verbal, somatic, material, duration) {\n var isRitual = ritual === \"true\";\n var isSomatic = somatic === \"true\";\n var isVerbal = verbal === \"true\";\n var nLevel = Number.parseInt(level, 10);\n var spell = new dnd_js_1.Spell(nLevel, school, cast, isRitual, range, isVerbal, isSomatic, material, duration);\n return spell.render();\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.spellblock.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.statblock.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.statblock\";\nexports.params = [\n // All monsters/NPCs have these attributes:\n { name: \"size\" },\n { name: \"type\" },\n { name: \"alignment\" },\n { name: \"ac\" },\n { name: \"hp\" },\n { name: \"speed\" },\n { name: \"str\", default: 10 },\n { name: \"dex\", default: 10 },\n { name: \"con\", default: 10 },\n { name: \"int\", default: 10 },\n { name: \"wis\", default: 10 },\n { name: \"cha\", default: 10 },\n { name: \"senses\" },\n { name: \"languages\", default: \"---\" },\n { name: \"challenge\" },\n // These attributes are optional:\n { name: \"tags\" },\n { name: \"saves\" },\n { name: \"skills\" },\n { name: \"dimm\" },\n { name: \"dres\" },\n { name: \"dvul\" },\n { name: \"cimm\" },\n { name: \"cres\" },\n { name: \"cvul\" },\n];\nfunction run(size, type, alignment, ac, hp, speed, str, dex, con, int, wis, cha, senses, languages, challenge, tags, saves, skills, dimm, dres, dvul, cimm, cres, cvul) {\n var nAC = Number.parseInt(ac, 10);\n var nStr = Number.parseInt(str, 10);\n var nDex = Number.parseInt(dex, 10);\n var nCon = Number.parseInt(con, 10);\n var nInt = Number.parseInt(int, 10);\n var nWis = Number.parseInt(wis, 10);\n var nCha = Number.parseInt(cha, 10);\n var statblock = new dnd_js_1.StatBlock(size, type, alignment, nAC, hp, speed, nStr, nDex, nCon, nInt, nWis, nCha, senses, languages, challenge, tags, saves, skills, dimm, dres, dvul, cimm, cres, cvul);\n return statblock.render();\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.statblock.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/modules/macros/dnd.xp.js": {
"text": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dnd_js_1 = require(\"$:/plugins/benwebber/dnd/dnd.js\");\nexports.name = \"dnd.xp\";\nexports.params = [\n { name: \"rating\" },\n { name: \"xp\" },\n];\nfunction run(rating, xp) {\n var languageTitle = this.getVariable(\"languageTitle\");\n var formatter = new Intl.NumberFormat(languageTitle);\n // Try using user input directly. If `xp` is a number, use it.\n var nXP = parseInt(xp, 10);\n var hasXP = !Number.isNaN(nXP);\n if (hasXP) {\n return rating + \" (\" + formatter.format(nXP) + \" <<dnd._lingo XP>>)\";\n }\n // If `xp` is not a number or not defined, try using a standard score.\n nXP = dnd_js_1.getXP(rating);\n if (nXP != null) {\n // Use standard scores (<<dnd.xp 5>>)\n return rating + \" (\" + formatter.format(nXP) + \" <<dnd._lingo XP>>)\";\n }\n // Unknown rating: pass through (<<dnd.xp \"5 (800 XP)\">>).\n return rating;\n}\nexports.run = run;\n",
"title": "$:/plugins/benwebber/dnd/modules/macros/dnd.xp.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/benwebber/dnd/templates/dnd.spell": {
"title": "$:/plugins/benwebber/dnd/templates/dnd.spell",
"text": "\\define field-spell()\n\n<$macrocall\n $name=\"dnd.spellblock\"\n level={{!!dnd.spell.level}}\n school={{!!dnd.spell.school}}\n cast={{!!dnd.spell.cast}}\n ritual={{!!dnd.spell.ritual}}\n range={{!!dnd.spell.range}}\n verbal={{!!dnd.spell.verbal}}\n somatic={{!!dnd.spell.somatic}}\n material={{!!dnd.spell.material}}\n duration={{!!dnd.spell.duration}}\n/>\n\n\\end\n\n\\define data-spell()\n\n<$macrocall\n $name=\"dnd.spellblock\"\n level={{##level}}\n school={{##school}}\n cast={{##cast}}\n ritual={{##ritual}}\n range={{##range}}\n components={{##components}}\n verbal={{##verbal}}\n somatic={{##somatic}}\n material={{##material}}\n duration={{##duration}}\n/>\n\n\\end\n\n<$reveal type=\"match\" state=\"!!type\" text=\"text/vnd.tiddlywiki\" default=\"text/vnd.tiddlywiki\">\n\n<<field-spell>>\n</$reveal>\n<$reveal type=\"match\" state=\"!!type\" text=\"application/x-tiddler-dictionary\">\n\n<<data-spell>>\n</$reveal>\n<$reveal type=\"match\" state=\"!!type\" text=\"application/json\">\n\n<<data-spell>>\n</$reveal>\n"
},
"$:/plugins/benwebber/dnd/templates/dnd.statblock": {
"title": "$:/plugins/benwebber/dnd/templates/dnd.statblock",
"text": "\\define field-statblock()\n\n<$macrocall\n $name=\"dnd.statblock\"\n size={{!!dnd.creature.size}}\n type={{!!dnd.creature.type}}\n tags={{!!dnd.creature.tags}}\n alignment={{!!dnd.creature.alignment}}\n ac={{!!dnd.creature.ac}}\n hp={{!!dnd.creature.hp}}\n speed={{!!dnd.creature.speed}}\n str={{!!dnd.creature.str}}\n dex={{!!dnd.creature.dex}}\n con={{!!dnd.creature.con}}\n int={{!!dnd.creature.int}}\n wis={{!!dnd.creature.wis}}\n cha={{!!dnd.creature.cha}}\n saves={{!!dnd.creature.saves}}\n skills={{!!dnd.creature.skills}}\n dimm={{!!dnd.creature.dimm}}\n dres={{!!dnd.creature.dres}}\n dvul={{!!dnd.creature.dvul}}\n cimm={{!!dnd.creature.cimm}}\n cres={{!!dnd.creature.cres}}\n cvul={{!!dnd.creature.cvul}}\n senses={{!!dnd.creature.senses}}\n languages={{!!dnd.creature.languages}}\n challenge={{!!dnd.creature.challenge}}\n/>\n\n\\end\n\n\\define data-statblock()\n\n<$macrocall\n $name=\"dnd.statblock\"\n size={{##size}}\n type={{##type}}\n tags={{##tags}}\n alignment={{##alignment}}\n ac={{##ac}}\n hp={{##hp}}\n speed={{##speed}}\n str={{##str}}\n dex={{##dex}}\n con={{##con}}\n int={{##int}}\n wis={{##wis}}\n cha={{##cha}}\n saves={{##saves}}\n skills={{##skills}}\n dimm={{##dimm}}\n dres={{##dres}}\n dvul={{##dvul}}\n cimm={{##cimm}}\n cres={{##cres}}\n cvul={{##cvul}}\n senses={{##senses}}\n languages={{##languages}}\n challenge={{##challenge}}\n/>\n\n\\end\n\n<$reveal type=\"match\" state=\"!!type\" text=\"text/vnd.tiddlywiki\" default=\"text/vnd.tiddlywiki\">\n\n<<field-statblock>>\n</$reveal>\n<$reveal type=\"match\" state=\"!!type\" text=\"application/x-tiddler-dictionary\">\n\n<<data-statblock>>\n</$reveal>\n<$reveal type=\"match\" state=\"!!type\" text=\"application/json\">\n\n<<data-statblock>>\n</$reveal>\n"
},
"$:/plugins/benwebber/dnd/ui/Buttons/new-creature": {
"title": "$:/plugins/benwebber/dnd/ui/Buttons/new-creature",
"tags": "$:/tags/PageControls",
"text": "\\define actions()\n<$action-sendmessage\n $message=\"tm-new-tiddler\"\n title=<<title>>\n tags={{$:/plugins/benwebber/dnd/config/Tags/Creatures}}\n/>\n\\end\n\n<$wikify name=\"text\" text=<<dnd._lingo Buttons/NewCreature/Text>>>\n<$wikify name=\"title\" text=<<dnd._lingo Buttons/NewCreature/Title>>>\n<$wikify name=\"tooltip\" text=<<dnd._lingo Buttons/NewCreature/Tooltip>>>\n<$button actions=<<actions>> class=<<tv-config-toolbar-class>> tooltip=<<tooltip>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/benwebber/dnd/images/new-creature}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=<<text>>/></span>\n</$list>\n</$button>\n</$wikify>\n</$wikify>\n</$wikify>\n"
},
"$:/plugins/benwebber/dnd/ui/Buttons/new-spell": {
"title": "$:/plugins/benwebber/dnd/ui/Buttons/new-spell",
"tags": "$:/tags/PageControls",
"text": "\\define actions()\n<$action-sendmessage\n $message=\"tm-new-tiddler\"\n title=<<title>>\n tags={{$:/plugins/benwebber/dnd/config/Tags/Spells}}\n/>\n\\end\n\n<$wikify name=\"text\" text=<<dnd._lingo Buttons/NewSpell/Text>>>\n<$wikify name=\"title\" text=<<dnd._lingo Buttons/NewSpell/Title>>>\n<$wikify name=\"tooltip\" text=<<dnd._lingo Buttons/NewSpell/Tooltip>>>\n<$button actions=<<actions>> class=<<tv-config-toolbar-class>> tooltip=<<tooltip>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/benwebber/dnd/images/new-spell}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=<<text>>/></span>\n</$list>\n</$button>\n</$wikify>\n</$wikify>\n</$wikify>\n"
},
"$:/plugins/benwebber/dnd/ui/Modals/UpdateCreature": {
"title": "$:/plugins/benwebber/dnd/ui/Modals/UpdateCreature",
"subtitle": "<<dnd._lingo Modals/Subtitle>>",
"text": "\\define input(field)\n<$edit-text tag=input tiddler=<<tiddler>> field=<<__field__>> />\n\\end\n\n\\define select-size()\n<$select tiddler=<<tiddler>> field=\"dnd.creature.size\">\n <option value=\"tiny\"><<dnd._lingo Creature/Size/Tiny>></option>\n <option value=\"small\"><<dnd._lingo Creature/Size/Small>></option>\n <option value=\"medium\"><<dnd._lingo Creature/Size/Medium>></option>\n <option value=\"large\"><<dnd._lingo Creature/Size/Large>></option>\n <option value=\"huge\"><<dnd._lingo Creature/Size/Huge>></option>\n <option value=\"gargantuan\"><<dnd._lingo Creature/Size/Gargantuan>></option>\n</$select>\n\\end\n\n\\define select-type()\n<$select tiddler=<<tiddler>> field=\"dnd.creature.type\">\n <option value=\"aberration\"><<dnd._lingo Creature/Type/Aberration>></option>\n <option value=\"beast\"><<dnd._lingo Creature/Type/Beast>></option>\n <option value=\"celestial\"><<dnd._lingo Creature/Type/Celestial>></option>\n <option value=\"construct\"><<dnd._lingo Creature/Type/Construct>></option>\n <option value=\"dragon\"><<dnd._lingo Creature/Type/Dragon>></option>\n <option value=\"elemental\"><<dnd._lingo Creature/Type/Elemental>></option>\n <option value=\"fey\"><<dnd._lingo Creature/Type/Fey>></option>\n <option value=\"fiend\"><<dnd._lingo Creature/Type/Fiend>></option>\n <option value=\"giant\"><<dnd._lingo Creature/Type/Giant>></option>\n <option value=\"humanoid\"><<dnd._lingo Creature/Type/Humanoid>></option>\n <option value=\"monstrosity\"><<dnd._lingo Creature/Type/Monstrosity>></option>\n <option value=\"ooze\"><<dnd._lingo Creature/Type/Ooze>></option>\n <option value=\"plant\"><<dnd._lingo Creature/Type/Plant>></option>\n <option value=\"undead\"><<dnd._lingo Creature/Type/Undead>></option>\n</$select>\n\\end\n\n\\define select-ability(field)\n<$select tiddler=<<tiddler>> field=<<__field__>>>\n <option value=\"1\"><<dnd.ability 1>></option>\n <option value=\"2\"><<dnd.ability 2>></option>\n <option value=\"3\"><<dnd.ability 3>></option>\n <option value=\"4\"><<dnd.ability 4>></option>\n <option value=\"5\"><<dnd.ability 5>></option>\n <option value=\"6\"><<dnd.ability 6>></option>\n <option value=\"7\"><<dnd.ability 7>></option>\n <option value=\"8\"><<dnd.ability 8>></option>\n <option value=\"9\"><<dnd.ability 9>></option>\n <option value=\"10\"><<dnd.ability 10>></option>\n <option value=\"11\"><<dnd.ability 11>></option>\n <option value=\"12\"><<dnd.ability 12>></option>\n <option value=\"13\"><<dnd.ability 13>></option>\n <option value=\"14\"><<dnd.ability 14>></option>\n <option value=\"15\"><<dnd.ability 15>></option>\n <option value=\"16\"><<dnd.ability 16>></option>\n <option value=\"17\"><<dnd.ability 17>></option>\n <option value=\"18\"><<dnd.ability 18>></option>\n <option value=\"19\"><<dnd.ability 19>></option>\n <option value=\"20\"><<dnd.ability 20>></option>\n <option value=\"21\"><<dnd.ability 21>></option>\n <option value=\"22\"><<dnd.ability 22>></option>\n <option value=\"23\"><<dnd.ability 23>></option>\n <option value=\"24\"><<dnd.ability 24>></option>\n <option value=\"25\"><<dnd.ability 25>></option>\n <option value=\"26\"><<dnd.ability 26>></option>\n <option value=\"27\"><<dnd.ability 27>></option>\n <option value=\"28\"><<dnd.ability 28>></option>\n <option value=\"29\"><<dnd.ability 29>></option>\n <option value=\"30\"><<dnd.ability 30>></option>\n</$select>\n\\end\n\n\\define select-challenge()\n<$select tiddler=<<tiddler>> field=\"dnd.creature.challenge\">>\n <option value=\"0\"><<dnd.xp \"0\">></option>\n <option value=\"0 10\"><<dnd.xp \"0\" \"10\">></option>\n <option value=\"1/8\"><<dnd.xp \"1/8\">></option>\n <option value=\"1/4\"><<dnd.xp \"1/4\">></option>\n <option value=\"1/2\"><<dnd.xp \"1/2\">></option>\n <option value=\"1\"><<dnd.xp \"1\">></option>\n <option value=\"2\"><<dnd.xp \"2\">></option>\n <option value=\"3\"><<dnd.xp \"3\">></option>\n <option value=\"4\"><<dnd.xp \"4\">></option>\n <option value=\"5\"><<dnd.xp \"5\">></option>\n <option value=\"6\"><<dnd.xp \"6\">></option>\n <option value=\"7\"><<dnd.xp \"7\">></option>\n <option value=\"8\"><<dnd.xp \"8\">></option>\n <option value=\"9\"><<dnd.xp \"9\">></option>\n <option value=\"10\"><<dnd.xp \"10\">></option>\n <option value=\"11\"><<dnd.xp \"11\">></option>\n <option value=\"12\"><<dnd.xp \"12\">></option>\n <option value=\"13\"><<dnd.xp \"13\">></option>\n <option value=\"14\"><<dnd.xp \"14\">></option>\n <option value=\"15\"><<dnd.xp \"15\">></option>\n <option value=\"16\"><<dnd.xp \"16\">></option>\n <option value=\"17\"><<dnd.xp \"17\">></option>\n <option value=\"18\"><<dnd.xp \"18\">></option>\n <option value=\"19\"><<dnd.xp \"19\">></option>\n <option value=\"20\"><<dnd.xp \"20\">></option>\n <option value=\"21\"><<dnd.xp \"21\">></option>\n <option value=\"22\"><<dnd.xp \"22\">></option>\n <option value=\"23\"><<dnd.xp \"23\">></option>\n <option value=\"24\"><<dnd.xp \"24\">></option>\n <option value=\"25\"><<dnd.xp \"25\">></option>\n <option value=\"26\"><<dnd.xp \"26\">></option>\n <option value=\"27\"><<dnd.xp \"27\">></option>\n <option value=\"28\"><<dnd.xp \"28\">></option>\n <option value=\"29\"><<dnd.xp \"29\">></option>\n <option value=\"30\"><<dnd.xp \"30\">></option>\n</$select>\n\\end\n\n<<dnd._lingo Modals/Help>>\n\n|!<<dnd._lingo StatBlock/Size>> |<<select-size>> |\n|!<<dnd._lingo StatBlock/Type>> |<<select-type>> |\n|!<<dnd._lingo StatBlock/Tags>> |<<input dnd.creature.tags>> |\n|!<<dnd._lingo StatBlock/Alignment>> |<<input dnd.creature.alignment>> |\n\n---\n\n|!<<dnd._lingo StatBlock/AC>> |<<input dnd.creature.ac>> |\n|!<<dnd._lingo StatBlock/HP>> |<<input dnd.creature.hp>> |\n|!<<dnd._lingo StatBlock/Speed>> |<<input dnd.creature.speed>> |\n\n---\n\n| <<dnd._lingo StatBlock/STR>> | <<dnd._lingo StatBlock/DEX>> | <<dnd._lingo StatBlock/CON>> | <<dnd._lingo StatBlock/INT>> | <<dnd._lingo StatBlock/WIS>> | <<dnd._lingo StatBlock/CHA>> |h\n| <<select-ability dnd.creature.str>> | <<select-ability dnd.creature.dex>> | <<select-ability dnd.creature.con>> | <<select-ability dnd.creature.int>> | <<select-ability dnd.creature.wis>> | <<select-ability dnd.creature.cha>> |\n\n---\n\n|!<<dnd._lingo StatBlock/SavingThrows>> |<<input dnd.creature.saves>> |\n|!<<dnd._lingo StatBlock/Skills>> |<<input dnd.creature.skills>> |\n|!<<dnd._lingo StatBlock/DamageImmunities>> |<<input dnd.creature.dimm>> |\n|!<<dnd._lingo StatBlock/DamageResistances>> |<<input dnd.creature.dres>> |\n|!<<dnd._lingo StatBlock/DamageVulnerabilities>> |<<input dnd.creature.dvul>> |\n|!<<dnd._lingo StatBlock/ConditionImmunities>> |<<input dnd.creature.cimm>> |\n|!<<dnd._lingo StatBlock/ConditionResistances>> |<<input dnd.creature.cres>> |\n|!<<dnd._lingo StatBlock/ConditionVulnerabilities>> |<<input dnd.creature.cvul>> |\n|!<<dnd._lingo StatBlock/Senses>> |<<input dnd.creature.senses>> |\n|!<<dnd._lingo StatBlock/Languages>> |<<input dnd.creature.languages>> |\n|!<<dnd._lingo StatBlock/Challenge>> |<<select-challenge>> |\n"
},
"$:/plugins/benwebber/dnd/ui/Modals/UpdateSpell": {
"title": "$:/plugins/benwebber/dnd/ui/Modals/UpdateSpell",
"subtitle": "<<dnd._lingo Modals/Subtitle>>",
"text": "\\define input(field)\n<$edit-text tag=input tiddler=<<tiddler>> field=<<__field__>> />\n\\end\n\n\\define select-level(field)\n<$select tiddler=<<tiddler>> field=\"dnd.spell.level\">\n <option>0</option>\n <option>1</option>\n <option>2</option>\n <option>3</option>\n <option>4</option>\n <option>5</option>\n <option>6</option>\n <option>7</option>\n <option>8</option>\n <option>9</option>\n</$select>\n\\end\n\n\\define select-school()\n<$select tiddler=<<tiddler>> field=\"dnd.spell.school\">\n <option value=\"abjuration\"><<dnd._lingo Spell/School/Abjuration>></option>\n <option value=\"conjuration\"><<dnd._lingo Spell/School/Conjuration>></option>\n <option value=\"divination\"><<dnd._lingo Spell/School/Divination>></option>\n <option value=\"enchantment\"><<dnd._lingo Spell/School/Enchantment>></option>\n <option value=\"evocation\"><<dnd._lingo Spell/School/Evocation>></option>\n <option value=\"illusion\"><<dnd._lingo Spell/School/Illusion>></option>\n <option value=\"necromancy\"><<dnd._lingo Spell/School/Necromancy>></option>\n <option value=\"transmutation\"><<dnd._lingo Spell/School/Transmutation>></option>\n</$select>\n\\end\n\n<<dnd._lingo Modals/Help>>\n\n|!<<dnd._lingo Spell/Level>> |<<select-level>> |\n|!<<dnd._lingo Spell/School>> |<<select-school>> |\n|!<<dnd._lingo Spell/CastingTime>> |<<input dnd.spell.cast>> <$checkbox tiddler=<<tiddler>> field=\"dnd.spell.ritual\" checked=\"true\" unchecked=\"\" default=\"\"> <<dnd._lingo Spell/Ritual>></$checkbox> |\n|!<<dnd._lingo Spell/Range>> |<<input dnd.spell.range>> |\n|!<<dnd._lingo Spell/Duration>> |<<input dnd.spell.duration>> |\n|!<<dnd._lingo Spell/Components>> |<$checkbox tiddler=<<tiddler>> field=\"dnd.spell.verbal\" checked=\"true\" unchecked=\"\" default=\"\"> <<dnd._lingo Spell/Verbal>></$checkbox> <$checkbox tiddler=<<tiddler>> field=\"dnd.spell.somatic\" checked=\"true\" unchecked=\"\" default=\"\"> <<dnd._lingo Spell/Somatic>></$checkbox> <<dnd._lingo Spell/Material>>: <<input dnd.spell.material>> |\n"
},
"$:/plugins/benwebber/dnd/ui/ViewTemplate/spell": {
"title": "$:/plugins/benwebber/dnd/ui/ViewTemplate/spell",
"tags": "$:/tags/ViewTemplate",
"list-before": "$:/core/ui/ViewTemplate/body",
"text": "<!-- Check tiddler tag. -->\n<$list filter=\"[<currentTiddler>tag{$:/plugins/benwebber/dnd/config/Tags/Spells}]\">\n<!-- Check if user enabled view template; don't override <<currentTiddler>>. -->\n<$list\n filter=\"[title[$:/plugins/benwebber/dnd/config/ViewTemplates/Spell]field:text[true]]\"\n variable=\"noop\"\n>\n\n<<dnd.spell>>\n</$list>\n</$list>\n"
},
"$:/plugins/benwebber/dnd/ui/ViewTemplate/statblock": {
"title": "$:/plugins/benwebber/dnd/ui/ViewTemplate/statblock",
"tags": "$:/tags/ViewTemplate",
"list-before": "$:/core/ui/ViewTemplate/body",
"text": "<!-- Check tiddler tag. -->\n<$list filter=\"[<currentTiddler>tag{$:/plugins/benwebber/dnd/config/Tags/Creatures}]\">\n<!-- Check if user enabled view template; don't override <<currentTiddler>>. -->\n<$list\n filter=\"[title[$:/plugins/benwebber/dnd/config/ViewTemplates/StatBlock]field:text[true]]\"\n variable=\"noop\"\n>\n\n<<dnd.creature>>\n</$list>\n</$list>\n"
}
}
}
{
"tiddlers": {
"$:/plugins/jd/mob/config": {
"created": "20171029115120346",
"creator": "JD",
"text": "<style>\n.tc-btn-invisible { text-align: left; }\n</style>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##freshinstall\" text=\"yes\">\n<div class=\"jd-bq\">\n<p>\nThanks for installing this plugin! You can always find the latest updates <a target=\"blank\" href=\"http://j.d.simplemobile.tiddlyspot.com\">here</a>\n</p>\n<p>\nThis plugin options tiddler is also available at ''Control panel'' >> ''Appearance'' >> ''JD Mob''\n</p>\n<p>\n<$button>\n<<jdconfig freshinstall no>>\nClose message\n</$button>\n</p>\n</div>\n<br>\n<hr>\n<br>\n</$reveal>\nShow as:\n<$select tiddler=\"$:/plugins/jd/mob/config/config\" index=\"configtype\">\n<option value=\"list\">List</option>\n<option value=\"htabs\">Horizontal tabs</option>\n<option value=\"vtabs\">Vertical tabs</option>\n</$select>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##configtype\" text=\"list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/jd/config]]\"><$transclude/><hr></$list>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##configtype\" text=\"htabs\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/jd/config]!has[draft.of]]\" \"$:/plugins/jd/mob/config/barpresets\">>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##configtype\" text=\"vtabs\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/jd/config]!has[draft.of]]\" \"$:/plugins/jd/mob/config/barpresets\" \"$:/state/tab/JDconfig\" \"tc-vertical\">>\n</$reveal>",
"title": "$:/plugins/jd/mob/config",
"tags": "$:/tags/ControlPanel/Appearance",
"subtitle": "Configure JD mobile layout",
"modifier": "JD",
"modified": "20171122151014084",
"caption": "JD Mob"
},
"$:/plugins/jd/mob/config/fonts": {
"created": "20171031124255884",
"creator": "JD",
"text": "<style> .texte { width: calc(100% - 60px); } </style>\n\n<h2>Fonts and heights presets</h2>\n\n\n<$button class=\"tc-btn-invisible\">\n<<jdfont 38px 30px 38px 28px 20px>>\n<<jdconfig fontsize largest>>\n<<jdradbut fontsize largest>>\n</$button> Largest\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 34px 26px 34px 24px 20px>>\n<<jdconfig fontsize larger>>\n<<jdradbut fontsize larger>>\n</$button> Larger\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 30px 22px 30px 20px 20px>>\n<<jdconfig fontsize large>>\n<<jdradbut fontsize large>>\n</$button> Large\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 26px 18px 26px 16px 20px>>\n<<jdconfig fontsize medium>>\n<<jdradbut fontsize medium>>\n</$button> Medium\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 22px 14px 20px 12px 20px>>\n<<jdconfig fontsize small>>\n<<jdradbut fontsize small>>\n</$button> Small\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 18px 10px 16px 8px 20px>>\n<<jdconfig fontsize smaller>>\n<<jdradbut fontsize smaller>>\n</$button> Smaller\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont>>\n<<jdconfig fontsize default>>\n<<jdradbut fontsize default>>\n</$button> TW5 default\n<br>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-title\" caption=\"Title\" list-before=\"$:/temp/jd/mob/font/font-body\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-body\" caption=\"Body, text buttons\" list-after=\"$:/temp/jd/mob/font/font-title\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/lineheight\" caption=\"Lineheight\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-tab-button\" caption=\"Tab buttons\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-button\" caption=\"Image buttons\"/>\n<<jdconfig fontsize custom>>\n<<jdradbut fontsize custom>>\n</$button> Custom\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##fontsize\" text=\"custom\">\n\nInclude unit (''px'' or ''em'') when entering custom values\n\n<table style=\"width:100%\">\n<tr>\n<th style=\"width:40%\">Element</th>\n<th style=\"width:60%\">Adjust</th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/temp/jd/mob/font/]!suffix[sitetitle]]\">\n<tr>\n<td><$view field=\"caption\"/></td>\n<td><$edit-text tiddler={{!!title}} field=\"temp\" placeholder={{!!text}} class=\"texte\"/>\n<$reveal type=\"match\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✓</$button>\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✕</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} text={{!!temp}}/>\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✓</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✕</$button>\n</$reveal>\n</td>\n</tr>\n</$list>\n</table>\n</$reveal>\n<br><br>",
"title": "$:/plugins/jd/mob/config/fonts",
"tags": "$:/tags/jd/config",
"modifier": "JD",
"modified": "20171120143104637",
"caption": "Fonts and heights"
},
"$:/plugins/jd/mob/readme": {
"created": "20171030143047925",
"creator": "JD",
"text": "This is a mobile layout that applies to narrow screens. It introduces the following:\n\n# A Topbar that can be any of the following:\n#* Hidden\n#* Titlebar (search, title, subtitle, menu)\n#* Mobbuttons bar\n#** Buttons tagged ''~$:/tags/jd/mobbutton''\n#* Searchbar\n#** Simple searchbar lists standard search results only\n#** Combined searchbar lists all search results (possibly slow on some devices)\n#* Control area containing ''Top Left Bar'', ''Page Control'', ''Mob-only'', and ''Top Right Bar'' buttons (in that order)\n#** ''Top Left Bar'' >> buttons tagged ''~$:/tags/TopLeftBar''\n#** ''Page control'' >> buttons tagged ''~$:/tags/PageControls''\n#** ''Mob-only'' >> other buttons tagged ''~$:/tags/jd/mobbutton''\n#** ''Top Right Bar'' >> buttons tagged ''~$:/tags/TopRightBar''\n#** Buttons you don't want to appear here should be tagged ''~$:/tags/jd/mobno'' \n\n# A Bottombar that can be any of the following:\n#* Hidden\n#* Mobbuttons bar\n#** Buttons tagged ''~$:/tags/jd/mobbutton''\n#* Control area containing ''Top Left Bar'', ''Page Control'', ''Mob-only'', and ''Top Right Bar'' buttons (in that order)\n#** ''Top Left Bar'' >> buttons tagged ''~$:/tags/TopLeftBar''\n#** ''Page control'' >> buttons tagged ''~$:/tags/PageControls''\n#** ''Mob-only'' >> other buttons tagged ''~$:/tags/jd/mobbutton''\n#** ''Top Right Bar'' >> buttons tagged ''~$:/tags/TopRightBar''\n#** Buttons you don't want to appear here should be tagged ''~$:/tags/jd/mobno'' \n\n//Note:// \n\nThis layout is tied to the ''Sidebar Breakpoint'' set at ''Control Panel'' >> ''Appearance'' >> ''Theme Tweaks''.\n\nThis layout is compatible with any core theme as of release date.\n\n<a target=\"blank\" href=\"http://j.d.simplemobile.tiddlyspot.com\">Project Homepage on Tiddlyspot</a>\n\n!! Version History\n\n!!! 2018-09-03 Release of version 1.0.4\n\n* Added ability to create tiddler out of search term via \"+\" button, or keyboard shortcut: \"ctrl+space\"\n\n[[Detailed changelog|http://j.d.simplemobile.tiddlyspot.com/#Changelog]]",
"title": "$:/plugins/jd/mob/readme",
"tags": "",
"modifier": "JD",
"modified": "20180903122259331"
},
"$:/plugins/jd/mob/config/config": {
"created": "20171109145547252",
"creator": "JD",
"text": "freshinstall: yes\ndefaultconfirm: cancel\nconfigtype: list\nfontsize: default\nscrollbars: show\nbarpreset: 4\nstoryfix: no\ntitlebaradjust: no\ntopbar: fixedsearch\ntopbarchoice: hide\nsearchbar: yes\nradbuttop: fixedsearch\nsearchbarchoice: simple\nbottombar: controls\nradbuttopfixedsearchops: hide\nradbuttopcontrolsops: hide\nradbuttopmobbuttonsops: hide\nradbuttoptitleops: hide\nbottombarcontrolsops: hide\nbottombarmobbuttonsops: hide\nbarpreset1ops: hide\nbarpreset2ops: hide\nbarpreset3ops: hide\nbarpreset4ops: hide\nsearchbutton: simple\nfocus: show",
"type": "application/x-tiddler-dictionary",
"title": "$:/plugins/jd/mob/config/config",
"modifier": "JD",
"modified": "20171122154523597"
},
"$:/plugins/jd/mob/config/topbar": {
"created": "20171028024424838",
"creator": "JD",
"text": "<h2>Topbar</h2>\n<$button class=tc-btn-invisible>\n<<setTopsearchbar>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop fixedsearch>>\n</$button> Fixed searchbar\n<<moreOps radbuttop fixedsearch searchbar>>\n<$button class=tc-btn-invisible>\n<<setTopcontrols>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop controls>>\n</$button> Controls\n<<moreOps radbuttop controls searchbutton>>\n<$button class=tc-btn-invisible>\n<<setTopmobbuttons>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop mobbuttons>>\n</$button> Mob buttons only\n<<moreOps radbuttop mobbuttons searchbutton>>\n<$button class=tc-btn-invisible>\n<<setToptitlebar>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop title>>\n</$button> Titlebar\n<<moreOps radbuttop title titlebar>>\n<$button class=tc-btn-invisible>\n<<setTophide>>\n<<jdradbut radbuttop hide>>\n</$button> Hidden\n<br>",
"title": "$:/plugins/jd/mob/config/topbar",
"modifier": "JD",
"modified": "20171122131221362",
"list-before": "$:/plugins/jd/mob/config/bottombar",
"caption": "Topbar style"
},
"$:/plugins/jd/mob/config/bottombar": {
"created": "20171110164302862",
"creator": "JD",
"text": "<h2>Bottombar</h2>\n<$button class=\"tc-btn-invisible\">\n<<setBottomcontrols>>\n<<jdradbut bottombar controls>>\n</$button> Controls\n<<moreOps bottombar controls searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig bottombar mobbuttons>>\n<<jdradbut bottombar mobbuttons>>\n</$button> Mob buttons only\n<<moreOps bottombar mobbuttons searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<noBottom>>\n<<jdradbut bottombar hide>>\n</$button> Hidden\n<br>",
"title": "$:/plugins/jd/mob/config/bottombar",
"modifier": "JD",
"modified": "20171122131210851",
"list-after": "$:/plugins/jd/mob/config/topbar",
"caption": "Bottombar style"
},
"$:/plugins/jd/mob/config/barpresets": {
"created": "20171113033257223",
"creator": "JD",
"text": "<h2>Topbar and bottombar presets</h2>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 1>>\n<<setToptitlebar>>\n<<noBottom>>\n<<jdradbut barpreset 1>>\n</$button> ''Titlebar'' on top, hidden bottom\n<<moreOps barpreset 1 titlebar>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 2>>\n<<setTopcontrols>>\n<<noBottom>>\n<<jdradbut barpreset 2>>\n</$button> ''Controls'' on top, hidden bottom\n<<moreOps barpreset 2 searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 3>>\n<<setTophide>>\n<<setBottomcontrols>>\n<<jdradbut barpreset 3>>\n</$button> Hidden top, ''Controls'' on bottom\n<<moreOps barpreset 3 searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 4>>\n<<setTopsearchbar>>\n<<setBottomcontrols>>\n<<jdradbut barpreset 4>>\n</$button> ''Searchbar'' on top, ''Controls'' on bottom\n<<moreOps barpreset 4 searchbar>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 5>>\n<<jdradbut barpreset 5>>\n</$button> Custom topbar and bottombar\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##barpreset\" text=\"5\">\n{{$:/plugins/jd/mob/config/topbar}}\n{{$:/plugins/jd/mob/config/bottombar}}\n</$reveal>\n<br><br>",
"title": "$:/plugins/jd/mob/config/barpresets",
"tags": "$:/tags/jd/config",
"modifier": "JD",
"modified": "20171122154450000",
"caption": "Top and bottom bars"
},
"$:/plugins/jd/mob/template/topbar": {
"text": "<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"fixedsearch\">\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##fixedsearch\" text=\"combined\">\n{{$:/plugins/jd/mob/template/combinedsearch}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##fixedsearch\" text=\"simple\">\n{{$:/plugins/jd/mob/template/simplesearch}}\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"controls\">\n<span class=\"jd-topbar\">\n{{$:/plugins/jd/mob/template/controls}}\n</span>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"mobbuttons\">\n<span class=\"jd-topbar\">\n<div class=\"tc-page-controls\">\n{{$:/plugins/jd/mob/template/mobbuttons}}\n</div>\n</span>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"title\">\n<span class=\"jd-topbar\">\n{{$:/plugins/jd/mob/template/titlebar}}\n</span>\n</$reveal>",
"title": "$:/plugins/jd/mob/template/topbar",
"tags": "$:/tags/PageTemplate",
"modifier": "JD",
"modified": "20171118170723817",
"fixedsearch": "{{$:/plugins/jd/mob/template/combinedsearch}}",
"creator": "JD",
"created": "20171018115714311"
},
"$:/plugins/jd/mob/template/titlebar": {
"created": "20171112032454483",
"creator": "JD",
"text": "<div class=\"jd-title-wrapper\">\n<span class=\"tc-site-title\"><$transclude tiddler=\"$:/SiteTitle\"/></span>\n<span class=\"tc-site-subtitle\"><$transclude tiddler=\"$:/SiteSubtitle\"/></span>\n</div>\n<div class=\"jd-title-controls\">\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbutton\" text=\"simple\">\n{{$:/plugins/jd/mob/button/search}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbutton\" text=\"combined\">\n{{$:/plugins/jd/mob/button/search}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbutton\" text=\"core\">\n{{$:/core/ui/Buttons/advanced-search}}\n</$reveal>\n{{$:/core/ui/TopBar/menu}}\n</div>",
"title": "$:/plugins/jd/mob/template/titlebar",
"tags": "",
"modifier": "JD",
"modified": "20171122134204001"
},
"$:/plugins/jd/mob/template/controls": {
"created": "20171111135718973",
"creator": "JD",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]!tag[$:/tags/jd/mobno]]\">\n<$transclude/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]!tag[$:/tags/jd/mobno]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>>/>\n</$reveal>\n</$list>\n{{$:/plugins/jd/mob/template/mobbuttons}}\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]!tag[$:/tags/jd/mobno]]\">\n<$transclude/>\n</$list>\n</div>",
"title": "$:/plugins/jd/mob/template/controls",
"tags": "",
"modifier": "JD",
"modified": "20171119140040863"
},
"$:/plugins/jd/mob/template/bottombar": {
"text": "<div class=\"jd-bottombar\">\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"controls\">\n{{$:/plugins/jd/mob/template/controls}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"mobbuttons\">\n<div class=\"tc-page-controls\">\n{{$:/plugins/jd/mob/template/mobbuttons}}\n</div>\n</$reveal>\n</div>",
"title": "$:/plugins/jd/mob/template/bottombar",
"tags": "$:/tags/PageTemplate",
"modifier": "JD",
"modified": "20171118170729880",
"creator": "JD",
"created": "20171115114644869"
},
"$:/plugins/jd/mob/template/mobbuttons": {
"text": "\\define config-mobtitle()\n$:/config/jd/mobbutton/visibility/$(listItem)$\n\\end\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/jd/mobbutton]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-mobtitle>> text=\"hide\">\n<$transclude tiddler=<<listItem>>/>\n</$reveal>\n</$list>",
"title": "$:/plugins/jd/mob/template/mobbuttons",
"tags": "",
"modifier": "JD",
"modified": "20171118161831963",
"creator": "JD",
"created": "20171118055005587"
},
"$:/plugins/jd/mob/config/mobbuttons": {
"created": "20171118051624478",
"creator": "JD",
"text": "\\define config-base() $:/config/jd/mobbutton/visibility/\n<h2>Mob buttons</h2>\n<p>Here are buttons tagged <b>~$:/tags/jd/mobbutton</b></p>\n<p>Choose which ones are displayed. Drag and drop to change the ordering</p>\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/jd/mobbutton\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n</$set>\n</$set>\n<br>",
"title": "$:/plugins/jd/mob/config/mobbuttons",
"tags": "$:/tags/jd/config",
"modifier": "JD",
"modified": "20171122150902808",
"caption": "Mob buttons"
},
"$:/plugins/jd/mob/button/config": {
"text": "<$button tooltip=\"Configure JD mobile layout\" class=\"tc-btn-invisible\">{{$:/core/images/theme-button}}<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/jd/mob/config\"/></$button>",
"title": "$:/plugins/jd/mob/button/config",
"tags": "$:/tags/jd/mobbutton",
"modifier": "JD",
"modified": "20171122114923959",
"description": "Configure JD mobile layout",
"creator": "JD",
"created": "20171117090228867",
"caption": "{{$:/core/images/theme-button}} configure JDmob"
},
"$:/plugins/jd/mob/stylesheet": {
"created": "20171016123229521",
"creator": "JD",
"text": "@media print\n{\n.tc-sidebar-scrollable,\n.jd-search,\n.jd-topbar,\n.jd-bottombar { display: none !important; }\n}\n\n/** CONFIG RADIO BUTTONS **/\n\n.radbutton, .radbuttoff { \n display: inline-block; \n height: 12px; \n width: 12px; \n border: 2px solid <<colour muted-foreground>>; \n -webkit-transition-duration: {{$:/config/AnimationDuration}}ms;\n -moz-transition-duration: {{$:/config/AnimationDuration}}ms;\n -ms-transition-duration: {{$:/config/AnimationDuration}}ms;\n -o-transition-duration: {{$:/config/AnimationDuration}}ms;\n transition-duration: {{$:/config/AnimationDuration}}ms;\n}\n\n.radbutton { background: <<colour primary>>; }\n.radbuttoff { background: <<colour muted-foreground>>; }\n.radbutton:hover, .radbuttoff:hover { \n border: 2px solid <<colour primary>>;\n background: <<colour primary>>; \n}\n\n.jd-bq {\n margin: 5px;\n padding: 5px;\n border: 1px solid <<colour tab-border>>;\n}\n\n.jd-bq, .radbutton, .radbuttoff {\n -webkit-border-radius: 6px;\n -moz-border-radius: 6px;\n -ms-border-radius: 6px;\n -o-border-radius: 6px;\n border-radius: 6px;\n}\n\n.jd-btn-txt {\n border: none;\n background: none;\n font-size: inherit;\n text-decoration: underline;\n padding: 0;\n margin: 0;\n}\n\n.jd-btn-txt:hover {\n text-decoration: none;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { \n.jd-topbar, \n.jd-bottombar,\n.jd-search { display: none; }\n} \n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { \n\n.tc-topbar { display: none !important; } \n\n.tc-tags-wrapper { margin: 5px 0 !important; }\n\n\n/** NOTIFICATIONS **/\n\n.tc-notification {\n position: fixed; \n top: 60px !important;\n right: 10px !important;\n z-index: {{!!z-bar}} !important;\n}\n\n.tc-modal {\n top: 50px !important;\n left: 50px !important;\n right: 50px !important;\n}\n\n.tc-modal-body { max-height: calc(100vh - 200px) !important; }\n\n.tc-modal-wrapper,\n.tc-plugin-reload-warning { z-index: {{!!z-notif}} !important; }\n\n\n/** STORY RIVER **/\n\n.tc-story-river { \n margin: 0 !important;\n padding-top: 0 !important;\n}\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##storyfix\" text=\"no\">\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n@media print\n{\n.tc-story-river { margin-top: 0 !important; }\n}\n\n@media screen\n{\n.tc-story-river { margin-top: 50px !important; }\n}\n\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n\n.tc-story-river { margin-bottom: 50px !important; }\n\n</$reveal>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##storyfix\" text=\"yes\">\n\n.tc-story-river { \n width: 100% !important;\n position: fixed !important;\n left: 0 !important;\n overflow-y: auto !important;\n}\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 50px !important;\n height: calc(100% - 50px) !important;\n}\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 50px !important; \n height: calc(100% - 100px) !important;\n}\n</$reveal>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 0 !important; \n height: 100% !important;\n}\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 0 !important; \n height: calc(100% - 50px) !important;\n}\n</$reveal>\n\n</$reveal>\n\n</$reveal>\n\n.tc-tiddler-frame {\n margin-bottom: 2px !important;\n padding: 15px 10px;\n overflow: auto;\n}\n\n\n/** POPUPS AND DROPDOWNS INSIDE VIEW AREA **/\n\n.tc-drop-down,\n.tc-block-dropdown {\n position: fixed !important;\n top: 50% !important;\n left: 50% !important;\n text-align: left;\n white-space: normal !important;\n max-height: calc(100% - 160px) !important;\n min-width: calc(100% - 90px) !important;\n max-width: calc(100% - 60px) !important;\n -webkit-transform: translate(-50%, -50%) !important;\n -moz-transform: translate(-50%, -50%) !important;\n -ms-transform: translate(-50%, -50%) !important;\n -o-transform: translate(-50%, -50%) !important;\n transform: translate(-50%, -50%) !important;\n -webkit-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n -moz-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n -ms-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n -o-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n overflow: auto !important;\n z-index: {{!!z-dropdown}} !important;\n}\n\n.tc-menu-list-item {\n padding-left: 5px;\n text-indent: -5px;\n white-space: normal !important;\n word-wrap: break-word !important;\n -webkit-word-break: break-all !important;\n -moz-word-break: break-all !important;\n -ms-word-break: break-all !important;\n -o-word-break: break-all !important;\n word-break: break-all !important;\n}\n\n.tc-edit-type-dropdown { overflow: auto; }\n\n\n/** SCROLLBARS **/\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##scrollbars\" text=\"hide\">\n\nbody { \n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\ndiv::-webkit-scrollbar,\n.tc-edit-type-dropdown::-webkit-scrollbar,\n.tc-block-dropdown::-webkit-scrollbar,\n.tc-drop-down::-webkit-scrollbar,\n.jd-search-results::-webkit-scrollbar,\n.tc-story-river::-webkit-scrollbar,\n.tc-sidebar-scrollable::-webkit-scrollbar {\n background: transparent;\n width: 0;\n}\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##scrollbars\" text=\"show\">\n\nbody { \n scrollbar-face-color: <<colour background>>;\n scrollbar-arrow-color: <<colour page-background>>;\n scrollbar-track-color: <<colour page-background>>;\n scrollbar-shadow-color: <<colour page-background>>;\n}\n\ndiv::-webkit-scrollbar,\n.tc-edit-type-dropdown::-webkit-scrollbar,\n.tc-block-dropdown::-webkit-scrollbar,\n.tc-drop-down::-webkit-scrollbar,\n.tc-story-river::-webkit-scrollbar,\n.tc-sidebar-scrollable::-webkit-scrollbar {\n background: <<colour background>>;\n width: 6px;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n}\n\ndiv::-webkit-scrollbar-thumb,\n.tc-edit-type-dropdown::-webkit-scrollbar-thumb,\n.tc-block-dropdown::-webkit-scrollbar-thumb,\n.tc-drop-down::-webkit-scrollbar-thumb,\n.jd-search-results::-webkit-scrollbar,\n.tc-story-river::-webkit-scrollbar-thumb,\n.tc-sidebar-scrollable::-webkit-scrollbar-thumb {\n background: <<colour page-background>>; \n width: 6px;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n}\n\n.jd-search-results::-webkit-scrollbar-thumb {\n background: <<colour primary>>;\n width: 6px;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n}\n\n</$reveal>\n\n\n/** FOCUS **/\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##focus\" text=\"hide\">\ntextarea:focus, select:focus, button:focus, input:focus { outline: none; }\n</$reveal>\n\n\n/** TOPBAR & BOTTOMBAR **/\n\n.jd-topbar,\n.jd-bottombar {\n width: 100%;\n position: fixed;\n left: 0;\n background: <<colour page-background>>;\n overflow: hidden;\n z-index: {{!!z-bar}};\n}\n\n.jd-topbar { top: 0; height: 50px; }\n.jd-bottombar { bottom: 0; }\n\n\n/** SEARCH **/\n\n.jd-search { z-index: {{!!z-search}}; }\n\n.jd-search-results {\n background: <<colour page-background>>;\n width: 100%;\n position: fixed;\n top: 50px;\n left: 0;\n margin: 0;\n padding: 0 10px;\n overflow-y: auto;\n z-index: {{!!z-searchwrapper}};\n}\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.jd-search-results { max-height: calc(100% - 100px); }\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.jd-search-results { max-height: calc(100% - 50px); }\n</$reveal>\n\n.jd-searchwrapper {\n background: <<colour page-background>>;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n z-index: {{!!z-searchwrapper}};\n}\n\n.jd-searchbar {\n width: calc(100% - 20px);\n height: 30px; \n position: fixed;\n top: 0;\n left: 0;\n font-size: 16px !important;\n background: transparent !important;\n border: none;\n border-bottom: 2px solid<<colour primary>>;\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"combined\">\n padding: 0 160px 0 10px;\n</$reveal>\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"simple\">\n padding: 0 100px 0 10px;\n</$reveal>\n margin: 10px;\n}\n\n.jd-search-buttons {\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"combined\">\n width: 160px; \n</$reveal>\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"simple\">\n width: 100px; \n</$reveal>\n position: fixed; \n top: 12px;\n right: 0; \n background: <<colour page-background>>;\n border: transparent;\n margin-right: 20px; \n text-align: right;\n vertical-align: middle;\n}\n\n.jd-search-buttons {\n z-index: {{!!z-searchbuttons}};\n}\n\n.jd-search-buttons .tc-popup-keep,\n.jd-search-buttons .tc-btn-invisible {\n font-size: 18px;\n background: transparent;\n border: transparent;\n cursor: pointer;\n}\n\n.jd-search-buttons .tc-btn-invisible { margin-left: 8px; }\n\n\n/** CONTROLS **/\n\n.jd-title-controls {\n display: flex;\n justify-content: space-between;\n margin: 10px;\n}\n\n.jd-search-buttons button,\n.jd-title-controls button {\n fill: <<colour sidebar-controls-foreground>>;\n font-size: 1.6em;\n -webkit-transition-duration: {{$:/config/AnimationDuration}}ms;\n -moz-transition-duration: {{$:/config/AnimationDuration}}ms;\n -ms-transition-duration: {{$:/config/AnimationDuration}}ms;\n -o-transition-duration: {{$:/config/AnimationDuration}}ms;\n transition-duration: {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-search-buttons button:hover,\n.jd-title-controls button:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.jd-topbar .tc-page-controls,\n.jd-bottombar .tc-page-controls {\n display: flex;\n justify-content: space-between;\n height: 30px;\n margin: 10px;\n}\n\n.tc-page-controls button { margin: 0 !important;}\n\n\n/** TITLEBAR **/\n\n.jd-title-wrapper .tc-site-title,\n.jd-title-wrapper .tc-site-subtitle {\n position: absolute;\n left: 50%;\n text-align: center;\n -webkit-transform: translate(-50%, 50%);\n -moz-transform: translate(-50%, 50%);\n -ms-transform: translate(-50%, 50%);\n -o-transform: translate(-50%, 50%);\n transform: translate(-50%, 50%);\n}\n\n.jd-title-wrapper .tc-site-subtitle {\n width: calc(100% - 100px);\n}\n\n\n/** SIDEBAR LISTS **/\n\n.tc-sidebar-scrollable .tc-site-title,\n.tc-sidebar-scrollable .tc-site-subtitle,\n.tc-sidebar-scrollable .tc-page-controls,\n.tc-sidebar-scrollable .tc-search\n { display: none; }\n\n.tc-sidebar-header { padding: 0 !important; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n.tc-sidebar-scrollable {\n background: <<colour background>>;\n width: 100%;\n position: fixed;\n left: 0; \n z-index: {{!!z-sidebar}};\n overflow: auto !important;\n}\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/sidebar\" text=\"no\">\n\n.tc-sidebar-scrollable { display:none; }\n\n.tc-tab-set { overflow-y: auto !important; }\n\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 50px !important;\n height: calc(100% - 50px) !important;\n}\n\n.tc-sidebar-scrollable .tc-tab-buttons { top: 50px; }\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 50px !important;\n height: calc(100% - 100px) !important;\n}\n\n.tc-sidebar-scrollable .tc-tab-buttons { top: 50px; }\n</$reveal>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 0 !important;\n height: 100% !important;\n}\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 0 !important;\n height: calc(100% - 50px) !important;\n}\n</$reveal>\n\n</$reveal>\n\n\n/** SIDEBAR LISTS BUTTONS **/\n\n.tc-sidebar-scrollable .tc-tab-buttons { margin: 10px; }\n\n.tc-sidebar-scrollable .tc-tab-content { \n margin: 10px !important; \n border: 0 !important;\n}\n\n\n/** ADJUSTABLE FONTS AND HEIGHTS **/\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##titlebaradjust\" text=\"no\">\n.jd-title-wrapper .tc-site-title { top: -3px; font-size: 18px; }\n.jd-title-wrapper .tc-site-subtitle { top: 15px; font-size: 12px; }\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##titlebaradjust\" text=\"yes\">\n.jd-title-wrapper .tc-site-title { top: {{!!height-sitetitle}}; font-size: {{!!font-sitetitle}}; }\n.jd-title-wrapper .tc-site-subtitle { top: {{!!height-subsitetitle}}; font-size: {{!!font-subsitetitle}}; }\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##fontsize\" text=\"default\">\n\n.tc-tiddler-view-frame h2.tc-title,\ninput.tc-titlebar.tc-edit-texteditor { \n font-size: {{!!font-title}} !important; \n}\n\n.tc-tiddler-view-frame .tc-subtitle { \n font-size: calc({{!!font-body}} - 4px) !important; \n}\n\nh1, h1 a { \n font-size: calc({{!!font-body}} + 6px) !important; \n}\n\nh2, h2 a { \n font-size: calc({{!!font-body}} + 4px) !important; \n}\n\nh3, h3 a { \n font-size: calc({{!!font-body}} + 2px) !important; \n}\n\nh4, a, li, table,\ninput, textarea, select,\n.tc-tiddler-preview-preview p,\n.tc-tiddler-view-frame p,\n.tc-modal p,\n.tc-btn-text,\n.jd-search-results,\n.tc-tab-content,\n.tc-modal-header h3 { \n font-size: {{!!font-body}} !important; \n line-height: {{!!lineheight}} !important;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button,\n.tc-tag-label.tc-btn-invisible { \n font-size: calc({{!!font-body}} - 4px) !important; \n}\n\n.tc-tab-buttons button,\n.tc-tab-buttons.tc-vertical button,\n.tc-sidebar-scrollable .tc-tab-buttons button,\n.tc-sidebar-scrollable .tc-tab-buttons.tc-vertical button {\n font-size: {{!!font-tab-button}} !important;\n}\n\n.tc-btn-invisible,\n.tc-tiddler-controls button, \n.tc-tiddler-controls button svg, \n.tc-tiddler-controls button img,\n.tc-image-buttons,\n.tc-page-controls { \n font-size: {{!!font-button}} !important; \n}\n\n.tc-tiddler-controls button svg, \n.tc-tiddler-controls button img,\n.tc-image-buttons { \n height: {{!!font-button}} !important; \n width: {{!!font-button}} !important; \n}\n\n</$reveal>\n\n}",
"z-sidebar": "1500",
"z-searchwrapper": "2500",
"z-searchbuttons": "4100",
"z-search": "4000",
"z-notif": "9000",
"z-dropdown": "4000",
"z-bar": "2000",
"title": "$:/plugins/jd/mob/stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "JD",
"modified": "20180903124046078",
"lineheight": "{{$:/temp/jd/mob/font/lineheight}}",
"height-subsitetitle": "{{$:/temp/jd/mob/font/height-subsitetitle}}",
"height-sitetitle": "{{$:/temp/jd/mob/font/height-sitetitle}}",
"font-title": "{{$:/temp/jd/mob/font/font-title}}",
"font-tab-button": "{{$:/temp/jd/mob/font/font-tab-button}}",
"font-subsitetitle": "{{$:/temp/jd/mob/font/font-subsitetitle}}",
"font-sitetitle": "{{$:/temp/jd/mob/font/font-sitetitle}}",
"font-button": "{{$:/temp/jd/mob/font/font-button}}",
"font-body": "{{$:/temp/jd/mob/font/font-body}}",
"list-after": "$:/themes/tiddlywiki/vanilla/base"
},
"$:/plugins/jd/mob/config/searchbutton": {
"created": "20171118142818660",
"creator": "JD",
"text": "<h3>Choose search button</h3>\n\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"hide\"/>\n<<jdconfig searchbarchoice simple>>\n<<jdconfig searchbutton simple>>\n<<jdradbut searchbutton simple>>\n</$button> Toggle for simple searchbar\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"hide\"/>\n<<jdconfig searchbarchoice combined>>\n<<jdconfig searchbutton combined>>\n<<jdradbut searchbutton combined>>\n</$button> Toggle for combined searchbar\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch hide>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"show\"/>\n<<jdconfig searchbutton core>>\n<<jdradbut searchbutton core>>\n</$button> Button to core search\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch hide>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"hide\"/>\n<<jdconfig searchbutton hide>>\n<<jdradbut searchbutton hide>>\n</$button> Hidden\n<br><br>",
"title": "$:/plugins/jd/mob/config/searchbutton",
"tags": "",
"modifier": "JD",
"modified": "20171122125953528",
"caption": "Choose search button"
},
"$:/plugins/jd/mob/config/titlebar": {
"created": "20171118171842911",
"creator": "JD",
"text": "<h3>Vertical position</h3>\n\n<$button class=tc-btn-invisible>\n<<jdconfig titlebaradjust no>>\n<<jdradbut titlebaradjust no>>\n</$button> Default\n<br>\n<$button class=tc-btn-invisible>\n<<jdconfig titlebaradjust yes>>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/height-sitetitle\" caption=\"Site title vertical position\" text=\"-3px\" list-after=\"$:/temp/jd/mob/font/font-sitetitle\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-sitetitle\" caption=\"Site title font size\" text=\"18px\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/height-subsitetitle\" caption=\"Site subtitle vertical position\" text=\"15px\" list-after=\"$:/temp/jd/mob/font/font-subsitetitle\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-subsitetitle\" caption=\"Site subtitle font size\" text=\"12px\"/>\n<<jdradbut titlebaradjust yes>>\n</$button> Custom\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##titlebaradjust\" text=\"yes\">\n\nInclude unit (''px'' or ''em'') when entering custom values\n\n<table style=\"width:100%\">\n<tr>\n<th style=\"width:40%\">Element</th>\n<th style=\"width:60%\">Adjust</th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/temp/jd/mob/font/]suffix[sitetitle]]\">\n<tr>\n<td><$view field=\"caption\"/></td>\n<td><$edit-text tiddler={{!!title}} field=\"temp\" placeholder={{!!text}} class=\"texte\"/>\n<$reveal type=\"match\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✓</$button>\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✕</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} text={{!!temp}}/>\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✓</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✕</$button>\n</$reveal>\n</td>\n</tr>\n</$list>\n</table>\n</$reveal>\n{{$:/plugins/jd/mob/config/searchbutton}}",
"title": "$:/plugins/jd/mob/config/titlebar",
"modifier": "JD",
"modified": "20171119072342630",
"caption": "Fonts and heights",
"tags": ""
},
"$:/plugins/jd/mob/config/searchbar": {
"created": "20171118171759396",
"creator": "JD",
"text": "<h3>Choose searchbar style</h3>\n\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<<jdconfig searchbarchoice combined>>\n<<jdconfig searchbutton combined>>\n<<jdradbut searchbutton combined>>\n</$button> Combined search\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<<jdconfig searchbarchoice simple>>\n<<jdconfig searchbutton simple>>\n<<jdradbut searchbutton simple>>\n</$button> Simple search\n<p>\n<$checkbox tiddler=\"$:/config/jd/mobbutton/visibility/$:/plugins/jd/mob/button/search\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> Show search button at controls\n</p>",
"title": "$:/plugins/jd/mob/config/searchbar",
"tags": "",
"modifier": "JD",
"modified": "20171122123127279",
"caption": "Choose searchbar style"
},
"$:/plugins/jd/mob/macros": {
"created": "20171119044207910",
"creator": "JD",
"text": "\\define jdconf() $:/plugins/jd/mob/config/config\n\\define jdconfont() $:/temp/jd/mob/font/\n\\define jdconfig(config:\"\" choice:\"\")\n<$action-setfield $tiddler=<<jdconf>> $index=\"$config$\" $value=$choice$/>\n\\end\n\\define moreOps(config:\"\" choice:\"\" option:\"\")\n<$reveal type=\"match\" state=\"$(jdconf)$##$config$\" text=\"$choice$\">\n<$reveal type=\"nomatch\" state=\"$(jdconf)$##$config$$choice$ops\" text=\"show\">\n<$button class =\"jd-btn-txt\" set=\"$(jdconf)$##$config$$choice$ops\" setTo=\"show\"> Show options</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$(jdconf)$##$config$$choice$ops\" text=\"show\">\n<$button class =\"jd-btn-txt\" set=\"$(jdconf)$##$config$$choice$ops\" setTo=\"hide\"> Hide options</$button>\n<div class=\"jd-bq\">{{$:/plugins/jd/mob/config/$option$}}</div>\n</$reveal>\n</$reveal>\n<br>\n\\end\n\\define jdfont(font-title:\"\" font-body:\"\" lineheight:\"\" font-tab:\"\" font-button:\"\")\n<$action-setfield $tiddler=\"$(jdconfont)$font-title\" text=\"$font-title$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$font-body\" text=\"$font-body$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$lineheight\" text=\"$lineheight$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$font-tab-button\" text=\"$font-tab$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$font-button\" text=\"$font-button$\"/>\n\\end\n\\define jdradbut(config:\"\" choice:\"\")\n<$reveal type=\"match\" state=\"$(jdconf)$##$config$\" text=\"$choice$\"><div class=\"radbutton\"></div></$reveal>\n<$reveal type=\"nomatch\" state=\"$(jdconf)$##$config$\" text=\"$choice$\"><div class=\"radbuttoff\"></div></$reveal>\n\\end\n\\define tglSearch(choice:\"show\")\n<$action-setfield $tiddler=\"$:/config/jd/mobbutton/visibility/$:/plugins/jd/mob/button/search\" text=$choice$/>\n\\end\n\\define notPreset()\n<<jdconfig barpreset 0>>\n\\end\n\\define setTopsearchbar()\n<<jdconfig topbar fixedsearch>>\n<<jdconfig topbarchoice hide>>\n<<jdconfig searchbar yes>>\n<<jdconfig radbuttop fixedsearch>>\n\\end\n\\define setToptitlebar()\n<<jdconfig searchbar no>>\n<<jdconfig topbar title>>\n<<jdconfig topbarchoice title>>\n<<jdconfig radbuttop title>>\n\\end\n\\define setTopcontrols()\n<<jdconfig searchbar no>>\n<<jdconfig topbar controls>>\n<<jdconfig topbarchoice controls>>\n<<jdconfig radbuttop controls>>\n\\end\n\\define setTopmobbuttons()\n<<jdconfig searchbar no>>\n<<jdconfig topbar mobbuttons>>\n<<jdconfig topbarchoice mobbuttons>>\n<<jdconfig radbuttop mobbuttons>>\n\\end\n\\define setTophide()\n<<jdconfig searchbar no>>\n<<jdconfig topbar hide>>\n<<jdconfig topbarchoice hide>>\n<<jdconfig radbuttop hide>>\n\\end\n\\define noBottom()\n<<jdconfig bottombar hide>>\n\\end\n\\define setBottomcontrols()\n<<jdconfig bottombar controls>>\n\\end\n\\define setJDmobdefaults()\n<<tglSearch>>\n<<jdconfig freshinstall yes>>\n<<jdconfig configtype list>>\n<<jdfont>>\n<<jdconfig fontsize default>>\n<<jdconfig scrollbars show>>\n<<jdconfig focus show>>\n<<jdconfig storyfix no>>\n<<jdconfig titlebaradjust no>>\n<<jdconfig topbarchoice hide>>\n<<jdconfig searchbarchoice simple>>\n<<jdconfig searchbutton simple>>\n<<jdconfig barpreset 4>>\n<<setTopsearchbar>>\n<<setBottomcontrols>>\n<<jdconfig radbuttopfixedsearchops hide>>\n<<jdconfig radbuttopcontrolsops hide>>\n<<jdconfig radbuttopmobbuttonsops hide>>\n<<jdconfig radbuttoptitleops hide>>\n<<jdconfig bottombarcontrolsops hide>>\n<<jdconfig bottombarmobbuttonsops hide>>\n<<jdconfig barpreset1ops hide>>\n<<jdconfig barpreset2ops hide>>\n<<jdconfig barpreset3ops hide>>\n<<jdconfig barpreset4ops hide>>\n<$fieldmangler tiddler=\"$:/plugins/jd/mob/button/search\">\n<$action-sendmessage $message=\"tm-add-tag\" $param=\"$:/tags/jd/mobbutton\"/>\n</$fieldmangler>\n\\end",
"title": "$:/plugins/jd/mob/macros",
"tags": "$:/tags/Macro",
"modifier": "JD",
"modified": "20171122150921869"
},
"$:/plugins/jd/mob/button/search": {
"created": "20171122115403541",
"creator": "JD",
"text": "<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##searchbar\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Show searchbar\" set=\"$:/plugins/jd/mob/config/config##searchbar\" setTo=\"yes\">\n<<jdconfig topbar search>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbar\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Hide searchbar\" set=\"$:/plugins/jd/mob/config/config##searchbar\" setTo=\"no\">\n<<jdconfig topbar hide>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>",
"title": "$:/plugins/jd/mob/button/search",
"tags": "$:/tags/jd/mobbutton",
"modifier": "JD",
"modified": "20171122154523596",
"description": "Toggle searchbar visibility",
"caption": "{{$:/core/images/advanced-search-button}} search"
},
"$:/plugins/jd/mob/template/search": {
"created": "20171018115714311",
"creator": "JD",
"text": "\\define NewTidActions(searcharea)\n<$action-createtiddler $basetitle={{$searcharea$}} $savetitle=\"$:/temp/NewTidTitle\"/>\n<$action-sendmessage $message=\"tm-edit-tiddler\" $param={{$:/temp/NewTidTitle}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTidTitle\"/>\n<$action-setfield $tiddler=\"$searcharea$\" text=\"\"/>\n\\end\n\n\\define NewTidBtn(searcharea)\n<$button tooltip=\"Create new tiddler with this title\" class=\"tc-btn-invisible\" actions=<<NewTidActions \"$searcharea$\">>>\n{{$:/core/images/new-button}}\n</$button>\n\\end\n\n\\define lingo-base() $:/language/Search/\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"simple\">\n<div class=\"jd-search\">\n<$keyboard class=\"jd-searchwrapper\" tag=\"div\" key=\"ctrl+space\" actions=<<NewTidActions \"$:/temp/search\">>>\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" placeholder={{$:/language/Search/Search}} class=\"jd-searchbar\"/>\n</$keyboard>\n<div class=\"jd-search-buttons\">\n<$list filter=\"[[$:/temp/search]!text[]]\" variable=\"statecheck\">\n<<NewTidBtn \"$:/temp/search\">>\n</$list>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$list filter=\"[[$:/temp/search]!text[]]\" variable=\"statecheck\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Clear searchbar\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<jdconfig searchbar no>>\n<<jdconfig topbar {{$:/plugins/jd/mob/config/config##topbarchoice}}>>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\" tooltip=\"Clear and hide searchbar\">\n<<jdconfig searchbar no>>\n<<jdconfig topbar {{$:/plugins/jd/mob/config/config##topbarchoice}}>>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n<div class=\"jd-search-results\">\n<$list filter=\"[[$:/temp/search]!text[]]\" variable=\"statecheck\">\n<$scrollable fallthrough=\"no\" class=\"results\">\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$scrollable>\n</$list>\n</div>\n</div>\n</$reveal>\n\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"combined\">\n<div class=\"jd-search\">\n<$keyboard class=\"jd-searchwrapper\" tag=\"div\" key=\"ctrl+space\" actions=<<NewTidActions \"$:/temp/advancedsearch\">>>\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" placeholder={{$:/language/Search/Search}} class=\"jd-searchbar\"/>\n</$linkcatcher>\n</$keyboard>\n<div class=\"jd-search-buttons\">\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<<NewTidBtn \"$:/temp/advancedsearch\">>\n</$list>\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete}}\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown}}\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/export}}\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear}} \n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Clear and hide searchbar\">\n<<jdconfig searchbar no>>\n<<jdconfig topbar {{$:/plugins/jd/mob/config/config##topbarchoice}}>>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n<div class=\"jd-search-results\">\n<!--STANDARD-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br>\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"{{$:/language/Search/Search/TooShort}}\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$list>\n<!--STANDARD-->\n<!--FILTER-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br><br>\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nFilter search: <<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n</$list>\n<!--FILTER-->\n<!--SYSTEM-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br>\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\nSystem search: <<lingo System/Matches>>\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n</$list>\n</$list>\n<!--SYSTEM-->\n<!--SHADOWS-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br>\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\nShadows search: <<lingo Shadows/Matches>>\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n</$list>\n</$list>\n<!--SHADOWS-->\n</div>\n</div>\n</$reveal>\n</$reveal>",
"title": "$:/plugins/jd/mob/template/search",
"tags": "$:/tags/PageTemplate",
"modifier": "JD",
"modified": "20180903123722931"
},
"$:/plugins/jd/mob/config/misc": {
"created": "20171122140327337",
"creator": "JD",
"text": "<h2>Miscellaneous</h2>\n<h3>Config button</h3>\n<$checkbox tiddler=\"$:/config/jd/mobbutton/visibility/$:/plugins/jd/mob/button/config\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> Show {{$:/core/images/theme-button}} button at ''Controls'' / ''Mobbuttons''\n<br><br>\n<hr>\n<h3>Scrollbars</h3>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig scrollbars hide>>\n<<jdradbut scrollbars hide>>\n</$button> Invisible scrollbars\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig scrollbars show>>\n<<jdradbut scrollbars show>>\n</$button> Visible scrollbars\n<br><br>\n<hr>\n<h3>Focus</h3>\n<p>Here we can hide the hightlight / outline on focused text inputs and buttons</p>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig focus show>>\n<<jdradbut focus show>>\n</$button> Default\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig focus hide>>\n<<jdradbut focus hide>>\n</$button> Hide focus\n<br><br>\n<hr>\n<h3>Story river</h3>\nHere we can try to stop the fist tiddler in the story river from scrolling past the topbar\n<br>\n''Side effects:''\n<br>\n<li>For ''classic'' and ''pop'' story view: tiddlers won't automatically scroll into view on link click</li>\n<li>Browser search bar won't automatically hide on scroll up (tested on Chrome for Android)</li>\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig storyfix yes>>\n<<jdradbut storyfix yes>>\n</$button> Apply \n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig storyfix no>>\n<<jdradbut storyfix no>>\n</$button> Don't apply\n<br><br>\n<hr>\n<h3>Restore defaults</h3>\n<div class=\"jd-bq\">\n<p>\nTo reset to...\n</p>\n<p>\nDefault font size, Visible scrollbars, ''Simple searchbar'' on top, ''Controls'' on bottom, ''Simple searchbar button'' on controls, Story river hack not applied...\n</p>\n<p>\nClick:\n</p>\n<p>\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##defaultconfirm\" text=\"confirm\">\n<$button class=\"jd-btn-txt\">\n<<jdconfig defaultconfirm confirm>>\nRestore defaults\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##defaultconfirm\" text=\"confirm\">\n<$button class=\"jd-btn-txt\">\n<<setJDmobdefaults>>\n<<jdconfig defaultconfirm cancel>>\nConfirm\n</$button>\n<$button class=\"jd-btn-txt\">\n<<jdconfig defaultconfirm cancel>>\nCancel\n</$button>\n</$reveal>\n</p>\n</div>\n<br>",
"title": "$:/plugins/jd/mob/config/misc",
"tags": "$:/tags/jd/config",
"modified": "20171122141012375",
"modifier": "JD",
"caption": "Miscellaneous"
}
}
}
freshinstall: no
defaultconfirm: cancel
configtype: list
fontsize: default
scrollbars: show
barpreset: 4
storyfix: no
titlebaradjust: no
topbar: fixedsearch
topbarchoice: hide
searchbar: yes
radbuttop: fixedsearch
searchbarchoice: simple
bottombar: controls
radbuttopfixedsearchops: hide
radbuttopcontrolsops: hide
radbuttopmobbuttonsops: hide
radbuttoptitleops: hide
bottombarcontrolsops: hide
bottombarmobbuttonsops: hide
barpreset1ops: hide
barpreset2ops: hide
barpreset3ops: hide
barpreset4ops: hide
searchbutton: simple
focus: show
{
"tiddlers": {
"$:/plugins/jd/plainrevs/TiddlerInfo/Revisions": {
"text": "<style>\n.diff-wrapper { margin: 0 0 1em 0; }\n.diff-wrapper div { width: 100%; }\n.diff-wrapper pre {\n margin: 0;\n width: 100%;\n max-height: 24em;\n overflow-y: auto;\n}\n</style>\n<$list filter=\"[[$:/state/revTab/tabType]!text[vertical]]\" variable=\"tabType\" emptyMessage=\"\"\"<<revTabs \"tc-vertical\">>\"\"\">\n<<revTabs>>\n</$list>",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/jd/plainrevs/TiddlerInfo/Revisions",
"tags": "$:/tags/TiddlerInfo",
"revision": "2-6c1651bc53216f77697bbeefe012fcbe",
"modifier": "jd",
"modified": "20180715090724978",
"creator": "jd",
"created": "20180713032258699",
"caption": "Revisions"
},
"$:/plugins/jd/plainrevs/Buttons/save": {
"text": "<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[[$:/config/plainrevs/whitelist]text[yes]]\" emptyMessage=\"\"\"\n<$macrocall $name=\"saveRev\" from=\"{!!draft.title}\" source=\"{{!!draft.title}}\"/>\n<$macrocall $name=\"keepRev\" from=\"{!!draft.title}\"/>\n\"\"\" variable=\"checkWhitelist\">\n<$list filter=\"[<currentTiddler>!keep-rev[]]\" variable=\"checkkeepRev\">\n<$macrocall $name=\"saveRev\" from=\"{!!draft.title}\" source=\"{{!!draft.title}}\"/>\n<$macrocall $name=\"keepRev\" from=\"{!!draft.title}\"/>\n</$list></$list>\n<$action-deletetiddler $tiddler=\"$:/temp/recentTiddler\"/>\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/jd/plainrevs/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/jd/plainrevs/Buttons/save",
"tags": "$:/tags/EditToolbar",
"revision": "16-5872e5975ec10785e4fafc91be2aad4c",
"modifier": "jd",
"modified": "20180716071810229",
"description": "{{$:/language/Buttons/Save/Hint}}",
"creator": "jd",
"created": "20180713010525088",
"caption": "{{$:/plugins/jd/plainrevs/images/done-button}} {{$:/language/Buttons/Save/Caption}}"
},
"$:/config/ViewToolbarButtons/Visibility/$:/plugins/jd/plainrevs/Buttons/delete": {
"created": "20180714131951888",
"creator": "jd",
"text": "hide",
"title": "$:/config/ViewToolbarButtons/Visibility/$:/plugins/jd/plainrevs/Buttons/delete",
"tags": "",
"modified": "20180714131955980",
"modifier": "jd"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/save": {
"created": "20180714131822371",
"creator": "jd",
"text": "show",
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/save",
"modified": "20180714131823794",
"modifier": "jd"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"created": "20180714131815374",
"creator": "jd",
"text": "hide",
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"modified": "20180714131835620",
"modifier": "jd"
},
"$:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/save": {
"created": "20180714123039108",
"creator": "jd",
"text": "hide",
"title": "$:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/save",
"modifier": "jd",
"modified": "20180714131847296"
},
"$:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"created": "20180714123228657",
"creator": "jd",
"text": "hide",
"title": "$:/config/EditToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"modifier": "jd",
"modified": "20180714131847892"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"created": "20180714132453956",
"creator": "jd",
"text": "show",
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"modified": "20180714132453956",
"modifier": "jd"
},
"$:/plugins/jd/plainrevs/images/done-button": {
"created": "20180714141039720",
"creator": "jd",
"title": "$:/plugins/jd/plainrevs/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n<g fill-rule=\"evenodd\">\n <path d=\"M67.69959179085937,124.00743809555664 C66.24911522085938,122.55796199555664 65.35028459085937,120.55468269555664 65.35028459085937,118.34177299555664 L65.35028459085937,70.35880379555664 C65.35028459085937,65.92834339555664 68.93200659085937,62.35028839555664 73.35028459085937,62.35028839555664 C77.75957228085937,62.35028839555664 81.35028458085938,65.93582289555664 81.35028458085938,70.35880379555664 L81.35028458085938,110.35028839555665 L183.3488563808594,110.35028839555665 C187.7655973808594,110.35028839555665 191.35028438085936,113.93201039555665 191.35028438085936,118.35028839555665 C191.35028438085936,122.75957609555664 187.76792338085937,126.35028839555665 183.3488563808594,126.35028839555665 L73.35171265085937,126.35028839555665 C71.14310441085938,126.35028839555665 69.14255458085938,125.45466519555664 67.69425323085937,124.00667539555664 z\" transform=\"rotate(-45 64.17514038085936,47.17514419555664) translate(-64.17514038085938,-47.17514419555664) \"/>\n </g><g fill-rule=\"evenodd\">\n <path d=\"M43.10235881862292,71.2176778633562 C42.18194403889733,71.21799540211612 41.26084456731168,70.86745489508218 40.55849007196121,70.1651003997317 L25.32919530323049,54.935805631000974 C23.92301330745711,53.5296236352276 23.92417717507198,51.257184971482324 25.3264926039429,49.85486954261142 C26.72595460203754,48.45540754451677 29.003620608799807,48.45376416471414 30.407428689158564,49.8575722450729 L43.1003094626259,62.55045301854023 L75.47359402234308,30.177168458823054 C76.87542162341906,28.77534085774708 79.14996521490409,28.774399797622173 80.55228064377499,30.176715226493094 C81.95174264504355,31.57617722776163 81.95439326069994,33.852835998670116 80.55182741144506,35.25540184792503 L45.63987941172413,70.16734984764594 C44.93889015498578,70.86833910438429 44.019674993638105,71.21903131094516 43.10042234223245,71.21913019367094 z\"/>\n </g>\n</svg>",
"modified": "20180715053654185",
"modifier": "jd"
},
"$:/plugins/jd/plainrevs/readme": {
"created": "20180714083837795",
"creator": "jd",
"text": "This plugin is a simple versioning system for edited tiddlers, recorded as they are saved. It works through the following buttons:\n\n* {{$:/plugins/jd/plainrevs/images/done-button}} will not just save the tiddler as usual, but will also save the previous version of that tiddler (all fields including //tags//, except //title//).\n\n* {{$:/plugins/jd/plainrevs/images/delete-button}} will not just delete the tiddler as usual, but will also delete that tiddler's revisions.\n\nA ''Revisions'' tab can be found under ''info'' {{$:/core/images/info-button}}, and from there the following actions can be done to each revision:\n\n* → / ↓ : show the revision list as horizontal or vertical tabs\n* ''(show differences)'' / ''(hide differences)'' : shows/hides the differences between the revision and the current state of the tiddler.\n* ''(restore)'' : replace the current state of the tiddler with that revision (all fields including //tags//, except //title//).\n* ''(pin)'' / ''(unpin)'' : makes it so that the revision will not be deleted when the source tiddler is deleted, nor when the user-defined limit of revisions is reached.\n* ''(delete)'' : deletes that revision, pinned or not.\n\n!!! ''Changing the source tiddler's title''\n\n* The source tiddler's title may be changed; its rev tiddlers will always follow it as long as \"//Update (oldtitle) to (newtitle) in the tags and list fields of other tiddlers//\" is checked when editing the source tiddler's title.\n\n!!! ''Filter search for rev tiddlers''\n\nFor rev tiddlers of `Tiddler title`:\n\n`[prefix[$:/rev]search:list[Tiddler title]]`\n\n!!! ''Whitelisting / Blacklisting''\n<em class=\"tc-muted\">The options below are available at ''~$:/ControlPanel'' → ''Settings'' tab </em>\n\n{{$:/plugins/jd/plainrevs/config}}\n\n!!! ''Rev tiddler structure''\n\n```\ntitle: $:/rev/<<now YYYY0MM0DD.0hh:0MM:0ss>>\nlist: [[Title of source tiddler]]\nrev-list: listItems [[inside list field]] of [[source tiddler]]\nrev-tags: [[tag 1]] tag2\nrev-someotherfield: someotherfield's value\n... and all other fields of source tiddler, to be prefixed 'rev-'\n```\n\nIf the title already exists, it is incremented numerically. \n\nRestoring the revision will re-copy the stored rev-fields (the \"rev-\" prefix will be removed). \n\n!!! ''Notes''\n\nThe ~$:/core ''save'' and ''delete'' buttons are neither replaced nor overwritten. You can still use them alongside this plugin's buttons by setting their visibility at ~$:/ControlPanel → Appearance → Toolbars\n\n<a target=\"blank\" href=\"http://j.d.revisions.tiddlyspot.com/\">Project Homepage on Tiddlyspot</a>",
"title": "$:/plugins/jd/plainrevs/readme",
"tags": "",
"modifier": "jd",
"modified": "20180831134625577"
},
"$:/plugins/jd/plainrevs/images/delete-button": {
"created": "20180715050023671",
"creator": "jd",
"text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n<g fill-rule=\"evenodd\">\n <rect x=\"12\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\" id=\"svg_2\"/>\n <rect x=\"40\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\" id=\"svg_3\"/>\n <rect x=\"20\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\" id=\"svg_4\"/>\n <rect x=\"20\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\" id=\"svg_5\"/>\n <rect x=\"92\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\" id=\"svg_6\"/>\n <rect x=\"68\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\" id=\"svg_7\"/>\n <rect x=\"44\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\" id=\"svg_8\"/>\n <rect x=\"30\" y=\"62\" width=\"70\" height=\"10\" rx=\"8\" id=\"svg_9\"/>\n </g>\n</svg>",
"title": "$:/plugins/jd/plainrevs/images/delete-button",
"tags": "$:/tags/Image",
"modified": "20180715103423963",
"modifier": "jd"
},
"$:/plugins/jd/plainrevs/macros/save": {
"created": "20180715075800922",
"creator": "jd",
"text": "\\define saveRev(from source)\n<$wikify name=\"revSource\" text=\"\"\"<$text text=\"[[\"/>$source$<$text text=\"]]\"/>\"\"\">\n<$wikify name=\"revTitle\" text=\"\"\"$:/rev/<<now YYYY0MM0DD.0hh:0MM:0ss>>\"\"\">\n<$list filter=\"[$from$!is[missing]]\" variable=\"checker\">\n<$action-createtiddler $basetitle=<<revTitle>> $savetitle=\"$:/temp/saveTid\" text={{{ [$from$get[text]] }}} list=<<revSource>>/>\n<$list filter=\"[$from$fields[]] -title -text\" variable=\"field\">\n<$action-setfield $tiddler={{$:/temp/saveTid}} $field={{{ [<field>addprefix[rev-]] }}} $value={{{ [$from$get<field>] }}}/>\n</$list>\n<$action-deletetiddler $tiddler=\"$:/temp/saveTid\"/>\n</$list>\n</$wikify>\n</$wikify>\n\\end\n\n\\define keepRev(from)\n<$wikify name=\"deleteFilter\" text=\"\"\"\n<$list filter=\"[$from$keep-rev[no]]\">[$from$listed[]prefix[$:/rev]!has[pin]]</$list>\n<$list filter=\"[$from$!keep-rev[no]]\" variable=\"notNo\">\n<$list filter=\"[$from$!keep-rev[all]]\" variable=\"notAll\">\n<$list filter=\"[$from$get[keep-rev]]\" variable=\"num\"><$text text=\"[$from$listed[]prefix[$:/rev]!has[pin]] +[butlast[\"/><<num>><$text text=\"]]\"/></$list>\n</$list>\n</$list>\n<$list filter=\"[$from$keep-rev[]]\">[$from$listed[]prefix[$:/rev]!has[pin]] +[butlast[<$list filter=\"[[$:/config/plainrevs/default]!is[missing]get[text]]\" emptyMessage=\"3\"/>]]</$list>\n\"\"\">\n<$action-deletetiddler $filter=<<deleteFilter>>/>\n</$wikify>\n\\end\n\n\\define RestoreButton()\n<$button class=\"tc-btn-invisible tc-tiddlylink\">(restore checked fields)\n<$macrocall $name=\"saveRev\" from=\"<currentTiddler>\" source=\"<<currentTiddler>>\"/>\n<$list filter=\"[[$:/config/plainrevs/restorefield]get:field[text]!prefix[no]]\" variable=\"checkFieldRestore\" emptyMessage=\"\"\"<$action-setfield $tiddler=<<currentTiddler>> text={{{ [<revTitle>get[text]] }}}/>\"\"\">\n<$action-setfield $tiddler=<<currentTiddler>> text={{{ [<revTitle>get[text]] }}}/>\n</$list>\n<$list filter=\"[<currentTiddler>fields[]] -title -text\" variable=\"field\">\n<$list filter=\"[[$:/config/plainrevs/restorefield]get:field<field>!prefix[no]]\" variable=\"checkFieldRestore\" emptyMessage=\"\"\"<$action-setfield $tiddler={{$:/temp/recentTiddler}} $field={{{ [<field>addprefix[rev-]] }}} $value={{{ [<currentTiddler>get<field>] }}}/>\"\"\">\n<$action-setfield $tiddler={{$:/temp/recentTiddler}} $field={{{ [<field>addprefix[rev-]] }}} $value={{{ [<currentTiddler>get<field>] }}}/>\n<$action-deletefield $tiddler=<<currentTiddler>> $field=<<field>>/>\n</$list>\n</$list>\n<$list filter=\"[<revTitle>fields[]prefix[rev-]]\" variable=\"field\">\n<$list filter=\"[[$:/config/plainrevs/restorefield]get:field<field>!prefix[no]]\" variable=\"checkFieldRestore\" emptyMessage=\"\"\"<$action-setfield $tiddler=<<currentTiddler>> $field={{{ [<field>removeprefix[rev-]] }}} $value={{{ [<revTitle>get<field>] }}}/>\"\"\">\n<$action-setfield $tiddler=<<currentTiddler>> $field={{{ [<field>removeprefix[rev-]] }}} $value={{{ [<revTitle>get<field>] }}}/>\n</$list>\n</$list>\n<$action-deletetiddler $tiddler=\"$:/temp/recentTiddler\"/>\n</$button>\n\\end\n\n\\define PinButton()\n<$list filter=\"[<revTitle>!has[pin]]\" emptyMessage=\"\"\"\n<$button class=\"tc-btn-invisible tc-tiddlylink\">(unpin)\n<$action-deletefield $tiddler=<<revTitle>> pin/>\n</$button>\n\"\"\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\">(pin)\n<$action-setfield $tiddler=<<revTitle>> pin=\"yes\"/>\n</$button>\n</$list>\n\\end\n\n\\define DeleteButton()\n<$button class=\"tc-btn-invisible tc-tiddlylink\">(delete)\n<$action-deletetiddler $tiddler=<<revTitle>>/>\n</$button>\n\\end\n\n\\define DiffTextButton()\n<$list filter=\"[[$:/state/revTab/difftext]!text[yes]]\" variable=\"stateCheck\" emptyMessage=\"\"\"\n<$button set=\"$:/state/revTab/difftext\" setTo=\"no\" class=\"tc-btn-invisible tc-tiddlylink\">\n(hide differences)\n</$button>\n\"\"\">\n<$button set=\"$:/state/revTab/difftext\" setTo=\"yes\" class=\"tc-btn-invisible tc-tiddlylink\">\n(show differences)\n</$button>\n</$list>\n\\end\n\n\\define revTabs(type)\n<div class=\"tc-tab-set $type$\">\n<div class=\"tc-tab-buttons $type$\">\n<$list filter=\"[[$:/state/revTab/tabType]!text[vertical]]\" variable=\"tabType\" emptyMessage=\"\"\"\n<$button set=\"$:/state/revTab/tabType\" setTo=\"horizontal\" style=\"width: auto; margin-left: auto;\">→\n</$button>\n\"\"\">\n<$button set=\"$:/state/revTab/tabType\" setTo=\"vertical\" style=\"width: auto; margin-left: auto;\">↓\n</$button>\n</$list>\n<$list filter=\"[<currentTiddler>listed[]has[pin]][<currentTiddler>listed[]!has[pin]] -[!prefix[$:/rev]]\" variable=\"revTitle\">\n<$button set=\"$:/state/revTab\" setTo=<<revTitle>> selectedClass=\" tc-tab-selected\">\n<$list filter=\"[<revTitle>has[pin]]\" variable=\"checkPin\">\n・<$text text={{{ [<currentTiddler>listed[]prefix[$:/rev]has[pin]allbefore:include<revTitle>count[]] }}}/></$list>\n<$list filter=\"[<revTitle>!has[pin]]\" variable=\"checkPin\">\n<$text text={{{ [<currentTiddler>listed[]prefix[$:/rev]!has[pin]allbefore:include<revTitle>count[]] }}}/></$list>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider $type$\"></div>\n<div class=\"tc-tab-content $type$\" style=\"overflow: auto;\">\n<$list filter=\"[<currentTiddler>listed[]] -[!prefix[$:/rev]]\" variable=\"revTitle\">\n<$reveal type=\"match\" state=\"$:/state/revTab\" text=<<revTitle>> tag=\"div\">\n<div style=\"padding-bottom: 0.4em; float: right;\">\n<<DiffTextButton>> <<RestoreButton>> <<PinButton>> <<DeleteButton>>\n</div>\n<div class=\"diff-wrapper\">\n\n<b style=\"float: left;\"><$checkbox tiddler=\"$:/config/plainrevs/restorefield\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> text: </$checkbox></b>\n<$list filter=\"[[$:/state/revTab/difftext]!text[yes]]\" variable=\"stateCheck\">\n<div><pre><$text text={{{ [<revTitle>get[text]] }}}/></pre></div>\n</$list>\n<$list filter=\"[[$:/state/revTab/difftext]text[yes]]\" variable=\"stateCheck\">\n<$diff-text source={{{ [<revTitle>get[text]] }}} dest={{{ [<currentTiddler>get[text]] }}}/>\n</$list>\n\n<$list filter=\"[<revTitle>fields[]prefix[rev-]] +[sort[]]\" variable=\"field\">\n\n<b style=\"float: left;\"><$checkbox tiddler=\"$:/config/plainrevs/restorefield\" field=<<field>> checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$text text={{{ [<field>removeprefix[rev-]] }}}/>: </$checkbox></b>\n<$list filter=\"[[$:/state/revTab/difftext]!text[yes]]\" variable=\"stateCheck\">\n<div><pre><$text text={{{ [<revTitle>get<field>] }}}/></pre></div>\n</$list>\n<$list filter=\"[[$:/state/revTab/difftext]text[yes]]\" variable=\"stateCheck\">\n<$list filter=\"[<field>removeprefix[rev-]]\" variable=\"currfield\">\n<$diff-text source={{{ [<revTitle>get<field>] }}} dest={{{ [<currentTiddler>get<currfield>] }}}/>\n</$list>\n</$list>\n\n</$list>\n\n<em style=\"line-height: 2.5em;\">Field/s of currentTiddler not present in this revision (or was empty):</em>\n<$list filter=\"[<currentTiddler>fields[]] -title -text -tags -type -created -creator -modified -modifier +[addprefix[rev-]] +[sort[]]\" variable=\"revField\">\n<$list filter=\"[<revTitle>!has<revField>]\" variable=\"fieldCheck\" >\n<$list filter=\"[<revField>removeprefix[rev-]]\" variable=\"field\">''<<field>>'', \n</$list>\n</$list>\n</$list>\n\n<em style=\"line-height: 2.5em;\">Field/s of this revision not present in currentTiddler (or is empty):</em>\n<$list filter=\"[<revTitle>fields[]prefix[rev-]] +[removeprefix[rev-]] +[sort[]] -tags -type\" variable=\"revField\">\n<$list filter=\"[<currentTiddler>!has<revField>]\" variable=\"fieldCheck\" >\n<$list filter=\"[<revField>]\" variable=\"field\">''<<field>>'', \n</$list>\n</$list>\n</$list>\n\n</div>\n</$reveal>\n</$list>\n</div>\n</div>\n\\end",
"title": "$:/plugins/jd/plainrevs/macros/save",
"tags": "$:/tags/Macro",
"modifier": "jd",
"modified": "20180717155443896"
},
"$:/plugins/jd/plainrevs/config": {
"text": "\\define num()\n<$text text={{{ [[$:/config/plainrevs/default]!is[missing]get[text]] }}}/>\n<$text text={{{ [[$:/config/plainrevs/default]is[missing]removeprefix[$:/config/plainrevs/default]addprefix[3]] }}}/>\n\\end\n\n<style>\n.pr-config-wrapper input[type=\"number\"] { width: 3em; }\n</style>\n\n<$radio tiddler=\"$:/config/plainrevs/whitelist\" value=\"yes\"> Whitelist system</$radio>\n\n<$reveal type=\"match\" state=\"$:/config/plainrevs/whitelist\" text=\"yes\" tag=\"div\" class=\"pr-config-wrapper\" animate=\"yes\" retain=\"yes\">\n\n<<<\nIn the Whitelist system, no __future__ revision will be kept for tiddlers without the ''keep-rev'' field, nor when it exists but is empty. \n\nSelecting this will not delete currently existing revisions.\n<<<\n\n</$reveal>\n\n<$radio tiddler=\"$:/config/plainrevs/whitelist\" value=\"no\"> Blacklist system</$radio>\n\n<$reveal type=\"nomatch\" state=\"$:/config/plainrevs/whitelist\" text=\"yes\" tag=\"div\" class=\"pr-config-wrapper\" animate=\"yes\" retain=\"yes\">\n\n<<<\nIn the Blacklist system, a number of revisions will be kept for tiddlers without the ''keep-rev'' field, or when it exists but is empty.\n\nDefault number of revisions to keep when the tiddler has no ''keep-rev'' field: <$edit-text tiddler=\"$:/config/plainrevs/default\" tag=\"input\" type=\"number\" default=\"3\"/>\n<<<\n\n</$reveal>\n\n!!! ''keep-rev field''\n\nThe ''keep-rev'' field of a tiddler will define how many revisions will be kept for that tiddler. Here are possible values for the field:\n\n* `no`: no revision will be saved\n\n* `all`: all revisions will be saved / no limit\n\n* any `integer` greater than `0`: that number of revisions will be saved",
"title": "$:/plugins/jd/plainrevs/config",
"tags": "$:/tags/ControlPanel/Settings",
"modifier": "jd",
"modified": "20180716081157055",
"creator": "jd",
"created": "20180716065308401",
"caption": "Plainrevs"
},
"$:/language/Buttons/jd/Delete/Hint": {
"title": "$:/language/Buttons/jd/Delete/Hint",
"created": "20180829113622274",
"modified": "20180829115204340",
"tags": "$:/language/Buttons/jd/Delete/Hint",
"text": "Delete this tiddler and ALL revisions"
},
"$:/language/Buttons/jd/Delete/Caption": {
"title": "$:/language/Buttons/jd/Delete/Caption",
"created": "20180829113508656",
"modified": "20180829115159620",
"tags": "$:/language/Buttons/jd/Delete/Hint",
"text": "delete this and ALL revisions"
},
"$:/plugins/jd/plainrevs/Buttons/delete": {
"created": "20180713175814792",
"creator": "jd",
"title": "$:/plugins/jd/plainrevs/Buttons/delete",
"caption": "{{$:/plugins/jd/plainrevs/images/delete-button}} {{$:/language/Buttons/jd/Delete/Caption}}",
"description": "{{$:/language/Buttons/jd/Delete/Hint}}",
"modified": "20180831122536725",
"modifier": "jd",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/jd/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-deletetiddler $filter=\"[<currentTiddler>listed[]prefix[$:/rev]!has[pin]]\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/plugins/jd/plainrevs/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/jd/Delete/Caption}}/></span>\n</$list>\n</$button>"
}
}
}
{
"tiddlers": {
"$:/plugins/tg/ro/advanced-search-button-style": {
"created": "20150519114003182",
"text": "/* Hide advanced search button */\n.tc-image-advanced-search-button.tc-image-button {\n padding-left: 15px;\n}",
"type": "text/css",
"title": "$:/plugins/tg/ro/advanced-search-button-style",
"tags": "$:/tags/advanced-search-button",
"modifier": "TonGerner",
"modified": "20191230134649191",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/change-settings": {
"created": "20161108100322449",
"text": "!!4) Settings\nTo customise the behaviour of TiddlyWiki\n\n{{$:/snippets/viewswitcher}}\n{{$:/plugins/tg/ro/sidebar-layout}}\n{{$:/core/ui/ControlPanel/Settings}}\n",
"title": "$:/plugins/tg/ro/change-settings",
"tags": "",
"modified": "20191230134715488",
"caption": "4. Settings"
},
"$:/plugins/tg/ro/help": {
"created": "20140716184603499",
"text": "!! Help\n\nBefore you 'publish' your ~TiddlyWiki:\n\n# Make a backup of your wiki\n# Get a defined start-up situation for your TW:\n#* Define your starting tiddler(s) in [[$:/DefaultTiddlers]]\n#* If required, define the state of the sidebar tabs\n# Follow the procedure given in the following tabs (1 - 5).\n\n<<<\n''Note:''\n\n@@.RED When in readonly mode@@, search in ''~AdvancedSearch'' (click the hidden, but still active!) {{$:/core/images/advanced-search-button}} (next to the search box), tab ''Shadows'':\n\n* for ''Publish'' to have access to:\n** $:/plugins/tg/ro/publish\n\nor\n\n* for ''~ControlPanel'' to have access to:\n** ''$:/ControlPanel > Appearance > Publish''\n\nto recover tabs, unhide buttons, ...\n<<<",
"title": "$:/plugins/tg/ro/help",
"modifier": "TonGerner",
"modified": "20191230134741078",
"creator": "TonGerner",
"caption": "Help"
},
"$:/plugins/tg/ro/hide-sidebar-buttons": {
"created": "20161108100124814",
"text": "!! Show/hide sidebar buttons\nUncheck to hide the appropriate sidebar button\n\n|Button |visible |note |h\n|Sidebar button ({{$:/core/images/chevron-left}}/{{$:/core/images/chevron-right}}) | <$checkbox tiddler=\"$:/core/ui/TopBar/menu\" tag=\"$:/tags/TopRightBar\"/> | 1 |\n|Advanced search button ({{$:/core/images/advanced-search-button}}) | <$checkbox tiddler=\"$:/plugins/tg/ro/advanced-search-button-style\" tag=\"$:/tags/Stylesheet\" invertTag=\"yes\"/> | 1 |\n|Publish button ({{$:/plugins/tg/ro/images/publish}}) | <$checkbox tiddler=\"$:/plugins/tg/ro/publish-button\" tag=\"$:/tags/TopRightBar\"/> | 2 |\n\n<<<\n''Note:''\n\n# Although 'invisible' (`display:none;`), ''Sidebar'' and ''Advanced search'' buttons stay active!\n# The ''Publish'' button is invisible and inactive (`$:/tags/TopRightBar` removed)\n<<<",
"title": "$:/plugins/tg/ro/hide-sidebar-buttons",
"tags": "",
"modified": "20191230134819484",
"caption": "3. Sidebar buttons"
},
"$:/plugins/tg/ro/hide-sidebar-tabs": {
"created": "20161108100017749",
"text": "!! Show/hide sidebar tabs\nUncheck to hide the appropriate sidebar tab\n\n|Tab |visible |h\n|Open | <$checkbox tiddler=\"$:/core/ui/SideBar/Open\" tag=\"$:/tags/SideBar\"/> |\n|Recent | <$checkbox tiddler=\"$:/core/ui/SideBar/Recent\" tag=\"$:/tags/SideBar\"/> |\n|Tools | <$checkbox tiddler=\"$:/core/ui/SideBar/Tools\" tag=\"$:/tags/SideBar\"/> |\n|More | <$checkbox tiddler=\"$:/core/ui/SideBar/More\" tag=\"$:/tags/SideBar\"/> |\n\n",
"title": "$:/plugins/tg/ro/hide-sidebar-tabs",
"tags": "",
"modified": "20191230134837792",
"caption": "2. Sidebar tabs"
},
"$:/plugins/tg/ro/hide-toolbar-buttons": {
"created": "20161108095713019",
"text": "!! Hide toolbar buttons\n\nDisable in Control panel (Appearance > Toolbars) the buttons you do not need in read-only mode.\n\n''//Disable at least the following buttons://''\n\n* ~ViewToolbar\n** Edit button {{$:/core/images/edit-button}}\n** More button {{$:/core/images/down-arrow}}\n** Info button {{$:/core/images/info-button}} (Tools tab contains button configuration!)\n* Page control buttons\n** New tiddler button {{$:/core/images/new-button}}\n** Control panel button {{$:/core/images/options-button}}\n** Save button {{$:/core/images/save-button}}\n** More button {{$:/core/images/down-arrow}}\n\n{{$:/core/ui/ControlPanel/Toolbars}}",
"title": "$:/plugins/tg/ro/hide-toolbar-buttons",
"tags": "",
"modified": "20191230134859443",
"caption": "1. Buttons"
},
"$:/plugins/tg/ro/icon": {
"created": "20170322100000766",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n <metadata id=\"metadata7\">image/svg+xml</metadata>\n <g>\n <g stroke=\"null\" id=\"layer1\">\n <path stroke=\"#a0a0ff\" d=\"m62.98237,124.8691l-52.98313,-30.489l0,-60.97796l52.98313,-30.48897l52.98313,30.48897l0,60.97796l-52.98313,30.489z\" id=\"path4142\" stroke-miterlimit=\"4\" stroke-width=\"1.2218\" fill=\"#a0a0ff\"/>\n <g stroke=\"null\" transform=\"matrix(3.659923335400057,0,0,3.647856469142962,20.327076261330674,1218.0946222935067) \" id=\"g4657\">\n <path stroke=\"null\" d=\"m3.22135,-313.27808l4.72483,4.70973l10.79962,-10.7651l-4.72483,-4.70973l-10.79962,10.7651zm13.51982,-13.47661l-1.99364,1.98727l4.72409,4.70899l1.99364,-1.98727c0.6766,-0.67444 -0.00001,-1.34889 -0.00001,-1.34889l-3.37088,-3.3601c0,0 -0.6766,-0.67444 -1.3532,0zm-14.18411,14.11637l-0.99229,5.72125l5.7273,-1.00138l-4.735,-4.71987l-0.00001,0z\" id=\"editor_pencil_pen_edit_write_glyph\" fill=\"#000000\"/>\n <rect stroke=\"null\" stroke-width=\"null\" stroke-linejoin=\"null\" stroke-linecap=\"null\" x=\"-236.34445\" y=\"-219.86093\" width=\"26.11743\" height=\"2.10315\" id=\"svg_1\" transform=\"matrix(0.69825835,0.71584585,-0.71584585,0.69825835,11.119094,-4.6050809) \"/>\n </g>\n </g>\n </g>\n</svg>",
"type": "image/svg+xml",
"title": "$:/plugins/tg/ro/icon",
"tags": "",
"modified": "20191230134918451"
},
"$:/plugins/tg/ro/image-save-button": {
"created": "20140715185836189",
"text": "<svg class=\"tgc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n </g>\n</svg>",
"creator": "TonGerner",
"modified": "20191230134931683",
"modifier": "TonGerner",
"title": "$:/plugins/tg/ro/image-save-button"
},
"$:/plugins/tg/ro/images/publish": {
"created": "20170322105731731",
"text": "<svg class=\"tgc-publish-ro tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 486 438\">\n<style>\n .ro {\n fill:none;\n stroke-width:40;\n stroke:#FF00FF;\n }\n</style>\n <path class=\"ro\" d=\"m203.2 81.6l-141.6 0 0 311.7 313.3 0 0-139.5\"/>\n <path class=\"ro\" d=\"m176.4 279.6l0-60 188-188 60.5 60.5 -189.5 189.5 -59 0\"/>\n <path class=\"ro\" d=\"m326.9 69l61.1 61.1\"/>\n</svg>",
"title": "$:/plugins/tg/ro/images/publish",
"tags": "",
"modified": "20191230134946688"
},
"$:/plugins/tg/ro/license": {
"created": "20180124175202510",
"text": "[[Readonly plugin|http://tongerner.tiddlyspot.com/#Readonly%20plugin]] © Ton Gerner — 2018-2020\n\nMIT License: https://opensource.org/licenses/MIT\n",
"title": "$:/plugins/tg/ro/license",
"tags": "",
"modified": "20191230135005582"
},
"$:/plugins/tg/ro/publish": {
"created": "20140715185723459",
"text": "!! Readonly plugin\n<<tabs \"$:/plugins/tg/ro/help $:/plugins/tg/ro/hide-toolbar-buttons $:/plugins/tg/ro/hide-sidebar-tabs $:/plugins/tg/ro/hide-sidebar-buttons $:/plugins/tg/ro/change-settings $:/plugins/tg/ro/save\" \"Help\">>\n\n\n\n\n\n",
"title": "$:/plugins/tg/ro/publish",
"tags": "$:/tags/ControlPanel/Appearance",
"modifier": "TonGerner",
"modified": "20191230135048784",
"creator": "TonGerner",
"caption": "Publish"
},
"$:/plugins/tg/ro/publish-button": {
"created": "20170506162930803",
"text": "<$button class=\"tc-btn-invisible\" tooltip=\"Publish read-only\">\n<$action-sendmessage $message=\"tm-open-window\" $param=\"$:/plugins/tg/ro/publish\" height=\"700px\" width=\"550px\"/>\n{{$:/plugins/tg/ro/images/publish}}\n</$button>",
"title": "$:/plugins/tg/ro/publish-button",
"tags": "$:/tags/publish-button $:/tags/TopRightBar",
"modifier": "TonGerner",
"modified": "20191231184447737",
"list-before": "$:/core/ui/TopBar/menu",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/readme": {
"created": "20140821172500339",
"text": "A plugin to make ~TiddlyWiki read-only.\n\nYou can hide:\n\n* ''All'' toolbar buttons\n* 'Sidebar' button (to switch Sidebar) and 'Advanced search' button (next to Search)\n* The standard Sidebar tabs.\n\nClick the Publish button {{$:/plugins/tg/ro/images/publish}} next to the sidebar button {{$:/core/images/chevron-left}}/{{$:/core/images/chevron-right}} to start making your TW 'publish-ready'. A new window with four tabs opens. Follow the 5 steps.\n\n<<<\n''Note:''\n\n* [[$:/plugins/tg/ro/publish]] is also available as a tab in $:/ControlPanel (''$:/ControlPanel > Appearance > Publish'')\n* @@.RED Although you can hide the 'Sidebar' and 'Advanced Search' button, they remain 'active'!@@\n* @@.RED When in readonly mode@@, search in ''~AdvancedSearch'' (click the hidden (but still active!) {{$:/core/images/advanced-search-button}} (next to the search box), tab ''Shadows'':\n\n** for ''Publish'' to have access to:\n*** $:/plugins/tg/ro/publish\n** ''or''\n** for ''~ControlPanel'' to have access to:\n*** ''$:/ControlPanel > Appearance > Publish''\n\n:to recover tabs, unhide buttons, ...\n<<<\n\n ",
"title": "$:/plugins/tg/ro/readme",
"modifier": "TonGerner",
"modified": "20191230135209746",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/save": {
"created": "20161108100434387",
"text": "! Save\n\n{{$:/core/ui/ControlPanel/Saving}}\n\n@@.BLUE ''Save''@@ {{$:/plugins/tg/ro/save-button}}\n",
"title": "$:/plugins/tg/ro/save",
"tags": "",
"modified": "20191230135228815",
"caption": "5. Save"
},
"$:/plugins/tg/ro/save-button": {
"created": "20170405200808621",
"text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}}>\n<span class=\"tc-dirty-indicator\">\n{{$:/plugins/tg/ro/image-save-button}}\n</span>\n</$button>",
"title": "$:/plugins/tg/ro/save-button",
"tags": "",
"modifier": "TonGerner",
"modified": "20191230135303043",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/sidebar-button-style": {
"created": "20140715185800387",
"text": "/* Hide sidebar button */\nsvg.tc-image-chevron-left {\n display: none;\n}\n\nsvg.tc-image-chevron-right {\n display: none;\n}\n",
"type": "text/css",
"title": "$:/plugins/tg/ro/sidebar-button-style",
"tags": "$:/tags/sidebar-button",
"modifier": "TonGerner",
"modified": "20191230135322974",
"creator": "TonGerner"
},
"$:/plugins/tg/ro/sidebar-layout": {
"created": "20170307110734575",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\nSidebar layout: <$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select>\n",
"title": "$:/plugins/tg/ro/sidebar-layout",
"tags": "",
"modified": "20191230135338759"
},
"$:/plugins/tg/ro/styles": {
"created": "20161104132710834",
"text": "/* Slider style */\n\nhtml .tgc-slider {\n color: #5778D8;\n font-weight: bold;\n}\n\n.tgc-slider:hover {\n color: #5778D8;\n text-decoration: underline;\n}\n\n.RED {\n color: red;\n font-weight: bold;\n}",
"title": "$:/plugins/tg/ro/styles",
"tags": "$:/tags/Stylesheet",
"modified": "20191230135353718",
"type": "text/css"
}
}
}
/* Hide advanced search button */
.tc-image-advanced-search-button.tc-image-button {
padding-left: 15px;
}
<$button class="tc-btn-invisible" tooltip="Publish read-only">
<$action-sendmessage $message="tm-open-window" $param="$:/plugins/tg/ro/publish" height="700px" width="550px"/>
{{$:/plugins/tg/ro/images/publish}}
</$button>
{
"tiddlers": {
"$:/plugins/tiddlywiki/github-fork-ribbon/readme": {
"title": "$:/plugins/tiddlywiki/github-fork-ribbon/readme",
"text": "This plugin provides a diagonal ribbon across the corner of the window. It resembles the design used by ~GitHub for their \"Fork me on ~GitHub\" ribbons.\n\nThe ribbon can be positioned over any corner, and can incorporate user defined text, colours and a link.\n\nThe CSS stylesheet is adapted from work by Simon Whitaker:\n\nhttps://github.com/simonwhitaker/github-fork-ribbon-css/\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/github-fork-ribbon]]\n"
},
"$:/plugins/tiddlywiki/github-fork-ribbon/styles": {
"title": "$:/plugins/tiddlywiki/github-fork-ribbon/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "/* Left will inherit from right (so we don't need to duplicate code */\n.github-fork-ribbon {\n /* The right and left lasses determine the side we attach our banner to */\n position: absolute;\n\n /* Add a bit of padding to give some substance outside the \"stitching\" */\n padding: 2px 0;\n\n /* Set the base colour */\n background-color: #a00;\n\n /* Set a gradient: transparent black at the top to almost-transparent black at the bottom */\n background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.00)), to(rgba(0, 0, 0, 0.15)));\n background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\n background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\n background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\n background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\n background-image: linear-gradient(top, rgba(0, 0, 0, 0.00), rgba(0, 0, 0, 0.15));\n filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#000000', EndColorStr='#000000');\n\n /* Add a drop shadow */\n -webkit-box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);\n box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);\n\n z-index: 999;\n pointer-events: auto;\n}\n\n.github-fork-ribbon a, .github-fork-ribbon a.tc-tiddlylink,\n.github-fork-ribbon a:hover, .github-fork-ribbon a.tc-tiddlylink:hover {\n /* Set the font */\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 13px;\n font-weight: 700;\n color: white;\n\n /* Set the text properties */\n text-decoration: none;\n text-shadow: 0 -1px rgba(0,0,0,0.5);\n text-align: center;\n\n /* Set the geometry. If you fiddle with these you'll also need to tweak the top and right values in #github-fork-ribbon. */\n width: 200px;\n line-height: 20px;\n\n /* Set the layout properties */\n display: inline-block;\n padding: 2px 0;\n\n /* Add \"stitching\" effect */\n border-width: 1px 0;\n border-style: dotted;\n border-color: rgba(255,255,255,0.7);\n}\n\n.github-fork-ribbon-wrapper {\n width: 150px;\n height: 150px;\n position: absolute;\n overflow: hidden;\n top: 0;\n z-index: 999;\n pointer-events: none;\n}\n\n.github-fork-ribbon-wrapper.fixed {\n position: fixed;\n}\n\n.github-fork-ribbon-wrapper.left {\n left: 0;\n}\n\n.github-fork-ribbon-wrapper.right {\n right: 0;\n}\n\n.github-fork-ribbon-wrapper.left-bottom {\n position: fixed;\n top: inherit;\n bottom: 0;\n left: 0;\n}\n\n.github-fork-ribbon-wrapper.right-bottom {\n position: fixed;\n top: inherit;\n bottom: 0;\n right: 0;\n}\n\n.github-fork-ribbon-wrapper.right .github-fork-ribbon {\n top: 42px;\n right: -43px;\n\n /* Rotate the banner 45 degrees */\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\n.github-fork-ribbon-wrapper.left .github-fork-ribbon {\n top: 42px;\n left: -43px;\n\n /* Rotate the banner -45 degrees */\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n\n\n.github-fork-ribbon-wrapper.left-bottom .github-fork-ribbon {\n top: 80px;\n left: -43px;\n\n /* Rotate the banner -45 degrees */\n -webkit-transform: rotate(45deg);\n -moz-transform: rotate(45deg);\n -o-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\n.github-fork-ribbon-wrapper.right-bottom .github-fork-ribbon {\n top: 80px;\n right: -43px;\n\n /* Rotate the banner -45 degrees */\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n transform: rotate(-45deg);\n}\n"
},
"$:/plugins/tiddlywiki/github-fork-ribbon/usage": {
"title": "$:/plugins/tiddlywiki/github-fork-ribbon/usage",
"text": "Copy appropriate chunks on a new tiddler and tag it `$:/tags/PageControls`. Name of the new tiddler does not matter. Only the tag matters.\n\n```\n<!-- TOP RIGHT RIBBON: START COPYING HERE -->\n<div class=\"github-fork-ribbon-wrapper right\"><div class=\"github-fork-ribbon\"><a href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub</a></div>\n</div>\n<!-- TOP RIGHT RIBBON: END COPYING HERE -->\n\n<!-- TOP LEFT RIBBON: START COPYING HERE -->\n<div class=\"github-fork-ribbon-wrapper left\"><div class=\"github-fork-ribbon\"><a href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub</a></div>\n</div>\n<!-- TOP LEFT RIBBON: END COPYING HERE -->\n\n\n<!-- BOTTOM RIGHT RIBBON: START COPYING HERE -->\n<div class=\"github-fork-ribbon-wrapper right-bottom\"><div class=\"github-fork-ribbon\"><a href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub</a></div>\n</div>\n<!-- BOTTOM RIGHT RIBBON: END COPYING HERE -->\n\n<!-- BOTTOM LEFT RIBBON: START COPYING HERE -->\n<div class=\"github-fork-ribbon-wrapper left-bottom\"><div class=\"github-fork-ribbon\"><a href=\"https://github.com/simonwhitaker/github-fork-ribbon-css\">Fork me on ~GitHub</a></div>\n</div>\n<!-- BOTTOM LEFT RIBBON: END COPYING HERE -->\n```\n"
}
}
}
https://discord.gg/bFcky8a
$:/core/ui/EditTemplate/body/preview/output
$:/core/ui/AdvancedSearch/Shadows
$:/core/ui/ControlPanel/Basics
$:/core/ui/ControlPanel/Saving/GitHub
$:/core/ui/ControlPanel/Appearance
$:/core/ui/ControlPanel/Saving/GitHub
$:/core/ui/MoreSideBar/All
Особенности чистокровных юань-ти
Практика Астрального тела
Орден Истребителей призраков
Воплощающий мудрость ааракокра
Взаимодействие с предметом
Описание драконорождённых
Воплощающий мудрость ааракокра
Орден Истребителей призраков
Инструменты ремесленников
Практика Астрального тела
Описание кровавых охотников
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
{
"tiddlers": {
"$:/info/browser": {
"title": "$:/info/browser",
"text": "yes"
},
"$:/info/node": {
"title": "$:/info/node",
"text": "no"
},
"$:/info/url/full": {
"title": "$:/info/url/full",
"text": "file:///D:/D&D/Tiddlywiki/tiddlywiki.html"
},
"$:/info/url/host": {
"title": "$:/info/url/host",
"text": ""
},
"$:/info/url/hostname": {
"title": "$:/info/url/hostname",
"text": ""
},
"$:/info/url/protocol": {
"title": "$:/info/url/protocol",
"text": "file:"
},
"$:/info/url/port": {
"title": "$:/info/url/port",
"text": ""
},
"$:/info/url/pathname": {
"title": "$:/info/url/pathname",
"text": "/D:/D&D/Tiddlywiki/tiddlywiki.html"
},
"$:/info/url/search": {
"title": "$:/info/url/search",
"text": ""
},
"$:/info/url/origin": {
"title": "$:/info/url/origin",
"text": "file://"
},
"$:/info/browser/screen/width": {
"title": "$:/info/browser/screen/width",
"text": "2560"
},
"$:/info/browser/screen/height": {
"title": "$:/info/browser/screen/height",
"text": "1440"
},
"$:/info/browser/language": {
"title": "$:/info/browser/language",
"text": "ru"
}
}
}
$:/themes/tiddlywiki/centralised
{
"tiddlers": {
"$:/themes/jd/Whitespace/template/sidebar": {
"created": "20171201152819844",
"creator": "JD",
"text": "\\define wsconfig(name) $:/config/Whitespace/$name$\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\\define config-title-sidebar()\n$:/config/SideBar/Visibility/$(currentTiddler)$\n\\end\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/tags/SideBar\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=\"$:/tags/SideBar\"/>\n</$fieldmangler>\n\\end\n\\define drop-actions-PageControls-buttons()\n<$action-listops $tiddler=\"$:/tags/PageControls\" $subfilter=\"+[insertbefore:listItem<actionTiddler>]\"/>\n\\end\n\\define sidebar-title()\n<$list filter=\"[all[shadows+tiddlers]!has[draft.of]is[current]has[caption]]\">{{!!caption}}</$list>\n<$list filter=\"[all[shadows+tiddlers]!has[draft.of]is[current]!has[caption]]\">{{!!title}}</$list>\n\\end\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$action-setfield $tiddler=<<wsconfig search>> text=\"no\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\\define NewTidActions()\n<$action-setfield $tiddler=<<wsconfig search>> text=\"no\"/>\n<$action-createtiddler $basetitle={{$:/temp/search}} $savetitle=\"$:/temp/NewTidTitle\"/>\n<$action-sendmessage $message=\"tm-edit-tiddler\" $param={{$:/temp/NewTidTitle}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTidTitle\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n\\end\n\\define ws-page-controls()\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$droppable actions=<<drop-actions-PageControls-buttons>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<$list filter=\"[<config-title>!text[hide]]\" variable=\"checker\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$draggable tiddler=<<listItem>> tag=\"span\"><$transclude tiddler=<<listItem>>/></$draggable>\n</$set>\n</$list>\n</$droppable>\n</$list>\n\\end\n\n<div class=\"vertical-controls\">\n<<ws-page-controls>>\n</div>\n\n<div class=\"jd-sidebar\">\n<div class=\"jd-header\">\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip=\"Unfix sidebar\" class=\"tc-btn-invisible\">{{$:/core/images/menu-button}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip=\"Fix sidebar\" class=\"tc-btn-invisible\">{{$:/core/images/menu-button}}</$button>\n</$reveal>\n<span class=\"header-buttons\">\n<<ws-page-controls>>\n</span>\n</div>\n<$list filter=\"[[$:/config/Whitespace/show-sitetitle]!text[no]]\" variable=\"checker\">\n<div class=\"jd-sitetitle-wrapper\">\n<$list filter=\"[[$:/SiteTitle]!text[]]\" variable=\"checker\">\n<div class=\"jd-sitetitle\"><$transclude tiddler=\"$:/SiteTitle\"/></div>\n</$list>\n<$list filter=\"[[$:/SiteSubtitle]!text[]]\" variable=\"checker\">\n<div class=\"jd-sitesubtitle\"><$transclude tiddler=\"$:/SiteSubtitle\"/></div>\n</$list>\n</div>\n</$list>\n<div class=\"jd-sidebar-column\">\n<div class=\"jd-search-wrapper\">\n<div class=\"jd-search-header\">\n<$keyboard class=\"jd-searchbar-wrapper\" tag=\"div\" key=\"ctrl+space\" actions=<<NewTidActions>>>\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" placeholder=\"Search / create\" class=\"jd-searchbar\"/>\n</$keyboard>\n<div class=\"jd-searchbar-buttons\">\n<$list filter=\"[[$:/temp/search]!text[]]\">\n<$button tooltip=\"Create new tiddler with this title\" class=\"tc-btn-invisible\" actions=<<NewTidActions>>>\n{{$:/core/images/new-button}}\n</$button>\n<$button tooltip=\"Clear searchbar\" class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=<<wsconfig search>> text=\"no\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n</div>\n</div>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<div class=\"jd-search-results\">\n<$scrollable fallthrough=\"no\" class=\"results\">\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$scrollable>\n</div>\n</$reveal>\n</div>\n</div>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" variable=\"currentTiddler\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div class=\"jd-sidebar-column\">\n<div class=\"jd-sidebar-column-header\">\n<$list variable=\"checker\" filter=\"[<config-title-sidebar>!text[hide]]\" emptyMessage=\"\"\"\n<$button set=<<config-title-sidebar>> setTo=\"show\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\" tag=\"text\">\n<<sidebar-title>>\n</$button>\n\"\"\">\n<$button set=<<config-title-sidebar>> setTo=\"hide\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\" tag=\"text\">\n<<sidebar-title>>\n</$button>\n</$list>\n<div class=\"jd-sidebar-column-header-buttons\">\n<$button tooltip=\"Open in story river\" to=<<currentTiddler>> dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\">{{$:/core/images/open-window}}</$button>\n<$button tooltip=\"Edit this tiddler\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-edit-tiddler\"/>{{$:/core/images/edit-button}}</$button>\n<$button tooltip=\"Remove from sidebar\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\">\n<$fieldmangler tiddler=<<currentTiddler>>>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=\"$:/tags/SideBar\"/>\n</$fieldmangler>{{$:/core/images/close-button}}</$button>\n</div>\n</div>\n<$list variable=\"checker\" filter=\"[<config-title-sidebar>!text[hide]]\">\n<div class=\"jd-sidebar-column-header-border\"></div>\n<div class=\"jd-sidebar-column-body\">\n\n<$transclude/>\n\n</div>\n</$list>\n</div>\n</$droppable>\n</$list>\n<div style=\"height:32px;\">\n</div>\n</div>",
"title": "$:/themes/jd/Whitespace/template/sidebar",
"tags": "$:/tags/PageTemplate",
"modifier": "jd",
"modified": "20180826115839800"
},
"$:/themes/jd/Whitespace/Stylesheet": {
"created": "20171127170053658",
"creator": "JD",
"text": "\\define wsconfig(name) $:/config/Whitespace/$name$\n\\define ws-sidebar-op() <$list filter=\"[[$:/themes/jd/Whitespace/config]text[right]]\" emptyMessage=\"right\">left</$list>\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { \n\n<$reveal state=<<wsconfig ThemeEditFrame>> type=\"match\" text=\"yes\" default=\"yes\">\n\n\n/** NO BOX SHADOW ON INPUTS **/\n\n.tc-tiddler-edit-frame .tc-edit-field-add input.tc-edit-texteditor, \n.tc-tiddler-edit-frame text, \n.tc-tiddler-edit-frame textarea, \n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame textarea.tc-edit-texteditor {\n -moz-box-shadow: none !important;\n -ms-box-shadow: none !important;\n -o-box-shadow: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor,\n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame text, \n.tc-tiddler-edit-frame textarea, \n.tc-tiddler-edit-frame textarea.tc-edit-texteditor { border: none !important; }\n\n\n/** EDIT TIDDLER **/\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor {\n -moz-box-shadow: none !important;\n -ms-box-shadow: none !important;\n -o-box-shadow: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n padding: .25em .5em !important;\n font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}}; \n font-weight: normal;\n}\n\n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame .tc-editor-toolbar,\n.tc-tiddler-edit-frame .tc-type-selector,\n.tc-tiddler-edit-frame .tc-edit-field-add {\n background-color: <<colour tiddler-editor-background>>;\n padding: 8px 4px;\n}\n\n.tc-tiddler-edit-frame input.tc-edit-texteditor,\n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame .tc-editor-toolbar,\n.tc-tiddler-edit-frame .tc-type-selector,\n.tc-tiddler-edit-frame .tc-edit-field-add {\n margin: 0 0 4px 0 !important;\n}\n\n.tc-tiddler-edit-frame iframe.tc-edit-texteditor,\n.tc-tiddler-edit-frame table.tc-edit-fields { margin: 0 !important; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar { background: <<colour tiddler-editor-border>>; margin-bottom: 0 !important; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible { background: transparent; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible:hover {\n background: transparent;\n fill: <<colour primary>>;\n}\n\n</$reveal>\n\n\n.borderless { border: none !important; }\n\ntextarea.large-textarea { \n min-height: 100px;\n width: 100%;\n max-width: 100%;\n border: 1px solid <<colour table-border>> !important;\n}\n\ninput.scene-textarea { \n border: 1px solid <<colour table-border>> !important;\n}\n\n.tc-tiddler-frame {\n width: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}} !important;\n border-radius: {{!!box-radius}};\n margin-left: auto;\n margin-right: auto;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n}\n\n.tc-storyview-zoomin-tiddler {\n position: relative !important;\n width: calc({{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}} - 84px) !important;\n}\n\n\n/** CARD BUTTONS **/\n\n.jd-sidebar-column-header > .tc-btn-invisible {\n color: <<colour foreground>>;\n margin-top: -3px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n.tc-tiddler-view-frame .tc-tiddler-controls svg {\n opacity: 0; \n <<transition \"opacity 150ms ease-in-out\">>\n}\n\n.tc-tiddler-view-frame .tc-tiddler-controls:hover svg { opacity: 1; }\n</$reveal>\n\n/** FONT SIZES **/\n\n.jd-buttons .tc-btn-invisible { font-size: 18px; }\n.jd-sidebar:hover .jd-header .tc-btn-invisible, \n.jd-sidebar .header-buttons .tc-btn-invisible { font-size: 16px; }\n.jd-header .tc-btn-invisible,\n.jd-sidebar .jd-header .tc-btn-invisible,\n.vertical-controls .tc-btn-invisible { font-size: 20px; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar .jd-header .tc-btn-invisible { font-size: 16px; }\n</$reveal>\n\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n\n/** AUTOHIDE VERTICAL BUTTONS **/\n\n.vertical-controls {\n opacity: 0;\n <<transition \"opacity 150ms ease-in-out\">>\n}\n\n.vertical-controls:hover {\n opacity: 1;\n}\n\n</$reveal>\n\n\n/** STORY RIVER **/\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.tc-story-river { padding: 42px 2em !important; }\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"yes\">\n.tc-story-river { padding: 42px 10% !important; }\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.tc-story-river {\n {{$:/themes/jd/Whitespace/config!!sidebar-position}}: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} !important;\n width: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}}) !important;\n}\n.jd-sidebar { opacity: 1; }\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"yes\">\n\n.tc-story-river { width: 100% !important; }\n\n</$reveal>\n\n.tc-tiddler-body {\n margin-top: 10px;\n padding-right: 10px;\n padding-bottom: 20px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n/** VERTICAL CONTROLS **/\n\n.jd-header {\n width: 50px;\n height: 50px;\n position: fixed;\n top: 0;\n overflow: hidden;\n {{$:/themes/jd/Whitespace/config!!sidebar-position}}: 0;\n padding: 15px;\n z-index: 700;\n}\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n\n.jd-header .header-buttons {\n opacity: 0;\n -webkit-transition: opacity {{$:/config/AnimationDuration}}ms;\n transition: opacity {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-header:hover .header-buttons { opacity: 1; }\n\n</$reveal>\n\n.jd-header .header-buttons .tc-image-button {\n width: 0;\n height: 0;\n}\n\n.jd-sidebar:hover .header-buttons .tc-image-button {\n width: 1em;\n height: 1em;\n margin: 0 0 0 10px;\n}\n\n.jd-header .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n -webkit-transition: fill {{$:/config/AnimationDuration}}ms, font-size {{$:/config/AnimationDuration}}ms;\n transition: fill {{$:/config/AnimationDuration}}ms, font-size {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-sidebar:hover .jd-header {\n width: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} - 1.5em);\n height: 39px;\n background: <<colour page-background>>;\n padding: 10px 20px;\n -webkit-transition: width {{$:/config/AnimationDuration}}ms;\n transition: width {{$:/config/AnimationDuration}}ms;\n}\n\n<$reveal state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" type=\"match\" text=\"left\" default=\"right\">\n.jd-sidebar:hover .jd-header {\n box-shadow: -5px 0 5px 0 <<colour page-background>>;\n}\n</$reveal>\n\n<$reveal state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" type=\"match\" text=\"right\" default=\"right\">\n.jd-sidebar:hover .jd-header {\n box-shadow: 5px 0 5px 0 <<colour page-background>>;\n margin-right: calc(1.5em - 1px);\n}\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-header {\n margin-right: calc(1.5em - 1px);\n}\n</$reveal>\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar .jd-header {\n width: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} - 1.5em);\n height: 39px;\n background: <<colour page-background>>;\n padding: 10px 20px;\n}\n.jd-sidebar .header-buttons .tc-image-button {\n width: 1em;\n height: 1em;\n margin: 0 0 0 10px;\n}\n</$reveal>\n\n.vertical-controls {\n background: <<colour page-background>>;\n position: fixed;\n top: 50px;\n {{$:/themes/jd/Whitespace/config!!sidebar-position}}: 0;\n width: 50px;\n height: calc(100% - 50px);\n padding: 5px 15px;\n z-index: 600;\n}\n\n.vertical-controls button {\n margin-bottom: 15px;\n outline: none;\n}\n\n.vertical-controls .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.jd-header .tc-droppable.tc-dragover > .tc-droppable-placeholder { display: inline; }\n\n\n/** STYLED SIDEBAR **/\n\n.jd-sitetitle-wrapper { text-align: center; }\n\n.jd-sitetitle { font-size: 2em; padding: 0.2em 0; }\n\n.jd-sitesubtitle { padding-bottom: 2em; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n\n.jd-sitetitle-wrapper { opacity: 0; }\n\n.jd-sidebar:hover .jd-sitetitle-wrapper { opacity: 1; }\n\n</$reveal>\n\n<$reveal state=\"$:/SiteSubtitle\" type=\"match\" text=\"\">\n\n.jd-sitetitle { padding-bottom: 1em; }\n\n</$reveal>\n\n.jd-sidebar p {\n margin: 5px 0;\n}\n\n.jd-sidebar {\n background: <<colour page-background>>;\n height: 50px;\n display: inline-block;\n position: fixed;\n top: 0;\n {{$:/themes/jd/Whitespace/config!!sidebar-position}}: 0;\n justify-content: center;\n z-index: 800;\n -webkit-transition: width {{$:/config/AnimationDuration}}ms, height {{$:/config/AnimationDuration}}ms;\n transition: width {{$:/config/AnimationDuration}}ms, height {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-sidebar:hover {\n width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n border-<<ws-sidebar-op>>: 1px solid<<colour page-background>>;\n padding: 42px 20px 0 20px;\n height: 100%;\n overflow-y: auto;\n}\n<$reveal state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" type=\"match\" text=\"left\" default=\"right\">\n.jd-sidebar:hover {\n <<box-shadow \"6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$reveal>\n<$reveal state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" type=\"match\" text=\"right\" default=\"right\">\n.jd-sidebar:hover {\n <<box-shadow \"-6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar {\n width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n padding: 42px 20px 0 20px;\n border-<<ws-sidebar-op>>: 1px solid<<colour page-background>>;\n height: 100%;\n overflow-y: auto;\n}\n.jd-sidebar-column { opacity: 1; }\n<$reveal state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" type=\"match\" text=\"left\">\n.jd-sidebar {\n <<box-shadow \"6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$reveal>\n<$reveal state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" type=\"match\" text=\"right\" default=\"right\">\n.jd-sidebar {\n <<box-shadow \"-6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$reveal>\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"yes\">\n.jd-sidebar {\n width: 50px;\n overflow: hidden;\n}\n.jd-sidebar-column {\n opacity: 0;\n}\n</$reveal>\n\n.jd-sidebar-column {\n display: block;\n background: <<colour background>>;\n padding: 10px;\n margin-bottom: 10px;\n border: 1px solid <<colour tiddler-border>>;\n border-radius: {{!!box-radius}};\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n overflow: hidden;\n -webkit-transition: opacity {{$:/config/AnimationDuration}}ms;\n transition: opacity {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-sidebar-column-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 2px 0;\n overflow: hidden;\n}\n\n.jd-sidebar-column-header-border {\n height: 10px;\n width: 100%;\n border-top: 1px solid <<colour table-border>>;\n margin-top: 8px;\n}\n\n.jd-sidebar-column-header .jd-sidebar-column-header-buttons {\n display: flex;\n align-items: flex-end;\n}\n\n.jd-sidebar-column-header .jd-sidebar-column-header-buttons button {\n margin-left: 6px;\n}\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar-column-header .jd-sidebar-column-header-buttons {\n opacity: 0;\n <<transition \"opacity 150ms ease-in-out\">>\n}\n.jd-sidebar-column-header:hover .jd-sidebar-column-header-buttons { opacity: 1; }\n</$reveal>\n\n<$reveal type=\"match\" state=<<wsconfig SidebarHeight>> text=\"limit\" default=\"limit\">\n.jd-sidebar-column-body {\n max-height: <$list filter=\"[[$:/config/Whitespace/SidebarHeight]!height[]]\" emptyMessage=\"300px\">{{$:/config/Whitespace/SidebarHeight!!height}}</$list>;\n overflow-y: auto;\n overflow-x: hidden;\n}\n</$reveal>\n\n.jd-sidebar:hover .jd-sidebar-column {\n opacity: 1;\n}\n\n.tc-droppable {\n padding: 0;\n margin: 0;\n}\n\n.tc-sidebar-scrollable,\n.jd-config,\n.tc-topbar,\n.tc-bottombar { \n width: 0; \n height: 0; \n margin: 0; \n padding: 0; \n display: none; \n}\n\n\n/** POPUPS AND DROPDOWNS **/\n\n.jd-sidebar .tc-drop-down,\n.tc-tiddler-frame .tc-drop-down,\n.tc-tiddler-frame .tc-block-dropdown {\n overflow: auto;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n}\n\n.jd-sidebar .tc-drop-down {\n position: fixed;\n {{$:/themes/jd/Whitespace/config!!sidebar-position}}: 20px;\n top: 50px;\n min-width: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} - 40px) !important;\n max-width: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} - 40px) !important;\n max-height: 360px !important;\n}\n\n.tc-tiddler-frame .tc-drop-down,\n.tc-tiddler-frame .tc-block-dropdown {\n min-width: 230px !important;\n max-height: 230px !important;\n}\n\n.tc-menu-list-item {\n -webkit-word-break: break-all !important;\n -moz-word-break: break-all !important;\n -ms-word-break: break-all !important;\n -o-word-break: break-all !important;\n word-break: break-all !important;\n}\n\n.tc-edit-type-dropdown { overflow: auto; }\n\n\n/** BUTTONS **/\n\n.jd-sidebar-column .tc-btn-invisible,\n.jd-edit-title-controls .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.vertical-controls .tc-btn-invisible:hover,\n.jd-edit-title-controls .tc-btn-invisible:hover,\n.jd-sidebar .tc-btn-invisible:hover,\n.jd-sidebar-column .tc-btn-invisible:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n\n/** NOTIFICATION **/\n\n<$reveal type=\"nomatch\" state=\"$:/themes/jd/Whitespace/config!!sidebar-position\" text=\"left\">\n.tc-notification { left: 14px; width: initial; }\n</$reveal>\n\n\n/** SCROLLBARS **/\n\n<$reveal state=<<wsconfig scrollbar-style>> type=\"match\" text=\"visible\" default=\"visible\">\n.tc-tiddler-frame .tc-drop-down::-webkit-scrollbar,\n.tc-tiddler-frame .tc-block-dropdown::-webkit-scrollbar,\ndiv::-webkit-scrollbar {\n background: transparent;\n width: 6px;\n}\n\n.tc-tiddler-frame .tc-drop-down::-webkit-scrollbar-thumb,\n.tc-tiddler-frame .tc-block-dropdown::-webkit-scrollbar-thumb,\ndiv::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.3); \n -webkit-border-radius: {{!!box-radius}};\n border-radius: {{!!box-radius}};\n}\n\n.jd-sidebar::-webkit-scrollbar-thumb {\n background: <<colour primary>>; \n}\n</$reveal>\n<$reveal state=<<wsconfig scrollbar-style>> type=\"match\" text=\"invisible\" default=\"visible\">\n.tc-tiddler-frame .tc-drop-down::-webkit-scrollbar,\n.tc-tiddler-frame .tc-block-dropdown::-webkit-scrollbar,\n.jd-sidebar::-webkit-scrollbar,\ndiv::-webkit-scrollbar {\n background: transparent;\n width: 0;\n}\n</$reveal>\n\n\n/** SIDEBAR SEARCH **/\n\n.jd-search-wrapper {\n width: 100%;\n display: inline-block;\n}\n\n.jd-search-header {\n background: <<colour background>>;\n display: flex;\n justify-content: space-between;\n}\n\n.jd-searchbar-wrapper { width: 100%; }\n\n.jd-searchbar-buttons {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n width: 120px;\n}\n\n.jd-searchbar {\n width: 100%;\n outline: none !important;\n border: none !important;\n background: transparent !important;\n}\n\n.jd-search-results {\n margin-top: 10px;\n padding-right: 15px;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n<$reveal type=\"match\" state=<<wsconfig SidebarHeight>> text=\"limit\" default=\"limit\">\n.jd-search-results { max-height: <$list filter=\"[<$:/config/Whitespace/SidebarHeight>!height[]]\" emptyMessage=\"300px\">{{$:/config/Whitespace/SidebarHeight!!height}}</$list>; }\n</$reveal>\n\n.jd-searchbar-buttons button {\n outline: none;\n margin-left: 10px;\n}\n\n.jd-searchbar-buttons .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.jd-searchbar-buttons .tc-btn-invisible:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n color: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.jd-search-results .tc-menu-list-item {\n white-space: normal;\n word-wrap: break-word;\n padding-left: 5px;\n text-indent: -5px;\n}\n\n\n/** SIDEBAR CONTROLS**/\n\n.jd-buttons { \n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n}\n\n.jd-buttons > .tc-reveal {\n min-width: 0 !important;\n width: 20% !important;\n text-align: center;\n}\n\n.jd-buttons > .tc-btn-invisible {\n margin: 5px 0;\n outline: none;\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.jd-buttons > .tc-btn-invisible:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\nbutton, button:hover { outline: none; }\n\ninput, input:focus { outline: none !important; }\n\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { \n\n.jd-sidebar, .vertical-controls { display: none; }\n.tc-titlebar text, input.tc-titlebar.tc-edit-texteditor { font-size: 18px; }\n\n}",
"title": "$:/themes/jd/Whitespace/Stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "jd",
"modified": "20180826124908994",
"box-radius": "1px"
},
"$:/themes/jd/Whitespace/readme": {
"text": "This theme uses an overhauled sidebar, which can be accessed via a hamburger button at the topright or topleft of the screen. I turned this into a theme just to make it easier for me to move it around my TW5's. \n\n''The hamburger button:''\n\n* When the sidebar is minimized, hovering on the hamburger button will expand the sidebar. The sidebar will minimize when it loses mouse focus. Clicking on the hamburger button will make the sidebar \"sticky\" until it is clicked again.\n\n* Below the hamburger button (when sidebar is minimized) are the usual Page Control buttons. \n\n''Changes to the sidebar:''\n\n# Minimize-able via the hamburger button\n# Movable to the left or the right of the screen\n# Sidebar tabs are turned into draggable, removable, and minimize-able \"card\"-things\n\n''Changes to the sidebar tabs:''\n\n# Draggable = click on the card title + drag above or below other \"cards\" in the sidebar\n# Removable = hover on card title + click the right-most button that appears\n# Minimize-able = click on the card title (expand by clicking again)\n* The card title is the \"caption\" of the tiddler. Otherwise, it's the tiddler title\n\n''~PageControls:''\n\n* ~PageControls appear beside the hamburger button on hover (when sidebar is expanded), or below it when sidebar is \"minimized\"\n\n//Note:// \n\nThis theme is best used with [[Very Simple Mobile Layout (plugin)|http://j.d.tiddlyspot.com/#Very%20Simple%20Mobile%20Layout%20(plugin)]].\n\n<a target=\"blank\" href=\"http://j.d.whitespace.tiddlyspot.com\">Project Homepage on Tiddlyspot</a>",
"title": "$:/themes/jd/Whitespace/readme",
"modifier": "jd",
"modified": "20180826055758382",
"creator": "JD",
"created": "20180203113849420"
},
"$:/themes/jd/Whitespace/config": {
"created": "20171203134043686",
"creator": "JD",
"title": "$:/themes/jd/Whitespace/config",
"text": "\\define wsconfig(name) $:/config/Whitespace/$name$\n\\define config-base() $:/config/SideBar/Visibility/\n\\define config-title-sidebar()\n$(config-base)$$(currentTiddler)$\n\\end\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/tags/SideBar\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<style>\n.tc-control-panel table input[type=\"radio\"] { width: auto; }\n.ws-select-button {\n display: inline-flex;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n border: 1px solid <<colour primary>>;\n}\n.ws-disabled-btn {\n background: <<colour muted-background>>;\n}\n.ws-enabled-btn {\n background: <<colour primary>>;\n}\n</style>\n\n<table width=\"99%\">\n<tr>\n<td>\nSidebar width:\n</td>\n<td>\n<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" tag=\"input\"/>\n</td>\n</tr>\n<tr>\n<td>\nTiddler width:\n</td>\n<td>\n<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" tag=\"input\"/>\n</td>\n</tr>\n<tr>\n<td>\nLimit sidebar card height:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig SidebarHeight>> field=\"text\" checked=\"limit\" unchecked=\"full\" default=\"limit\"/>\n<$list filter=\"[[$:/config/Whitespace/SidebarHeight]text[limit]]\"><$edit-text tiddler=<<wsconfig SidebarHeight>> field=\"height\" tag=\"input\" placeholder=\"300px\"/></$list>\n</td>\n</tr>\n<tr>\n<td>\nVisible scrollbars:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig scrollbar-style>> field=\"text\" checked=\"visible\" unchecked=\"invisible\" default=\"visible\"/>\n</td>\n</tr>\n<tr>\n<td>\nShow Sitetitle and Subtitle:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig show-sitetitle>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"/>\n</td>\n</tr>\n<tr>\n<td>\nShow buttons on hover:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig Spacious>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"/>\n</td>\n</tr>\n<tr>\n<td>\nTheme the tiddler edit mode:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig ThemeEditFrame>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"/>\n</td>\n</tr>\n<tr>\n<td>\nSidebar position:\n</td>\n<td>\n<$radio tiddler=\"$:/themes/jd/Whitespace/config\" field=\"sidebar-position\" value=\"left\"> left</$radio><br>\n<$radio tiddler=\"$:/themes/jd/Whitespace/config\" field=\"sidebar-position\" value=\"right\"> right</$radio>\n</td>\n</tr>\n</table>",
"tags": "$:/tags/ControlPanel/Appearance",
"sidebar-position": "left",
"modifier": "jd",
"modified": "20180826103034713",
"caption": "Whitespace tweaks"
}
}
}
{
"tiddlers": {
"$:/themes/telmiger/bricks/metrics/fontsize": {
"text": "12",
"title": "$:/themes/telmiger/bricks/metrics/fontsize",
"modifier": "Thomas Elmiger",
"modified": "20190318212420615",
"creator": "Thomas Elmiger",
"created": "20190318212420359"
},
"$:/themes/telmiger/bricks/wikilogic-42-77": {
"text": "\\define --breakpoint-not-small() min-width: 28rem\n\\define --breakpoint-medium() min-width: 42rem\n\\define --breakpoint-large() min-width: 77rem\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n/*\n** Styles containing Wikilogic\n** inspired by TW vanilla\n** \"\"\" \n*/\n\nhtml {\n\tfont-size: {{$:/themes/telmiger/bricks/metrics/fontsize}};\n}\n\n/*\n** from .../001-page.css\n*/\n\n@media (<<--breakpoint-medium>>) {\n\n<<if-no-sidebar \"\n\n\tbody .tc-tiddler-view-frame, body .tc-tiddler-frame.tc-tiddler-edit-frame {\n\t\tmargin-right: auto;\n\t}\n\n\">>\n}\n\n@media (<<--breakpoint-large>>) {\n\n<<if-no-sidebar \"\n\n\tbody .tc-story-river {\n\t\tmargin-right: auto;\n\t\tpadding-right: 2rem;\n\t}\n\n\tbody .tc-tiddler-frame {\n\t\tmargin-right: auto;\n\t}\n\n\">>\n}\n\n\n/*\n** from .../components/tiddler.css\n*/\n\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tmargin-right: 0rem;\n\tmargin-left: -1rem;\n\tpadding-right: 4rem;\n\tpadding-left: 1rem;\n\tmin-width: calc(100% + 2rem);\n\tz-index: 300;\n\tbackground: <<colour tiddler-background>>;\n\tborder-bottom: 1px solid <<colour tab-divider>>;\n}\n\n@media (<<--breakpoint-not-small>>) {\n\t.tc-tiddler-title {\n\t\tmargin-right: 0rem;\n\t\tmargin-left: -1rem;\n\t\tpadding-right: 2rem;\n\t\tpadding-left: 1rem;\n\t\tmin-width: calc(100% + 2rem);\n\t}\n}\n\n@media (<<--breakpoint-medium>>) {\n\t.tc-tiddler-title {\n\t\tpadding-right: 1rem;\n\t}\n}\n</$reveal>\n\n\n/*\n** from .../edit/tiddler.css\n*/\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n\n@media (<<--breakpoint-large>>) {\n\n<<if-no-sidebar \"\n\n\tbody .tc-tiddler-frame.tc-tiddler-edit-frame {\n\t\tmargin-right: 1rem;\n\t\twidth: calc(100% - 2rem);\n\t}\n\n\">>\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\nbody .tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n\n/* End \"\"\" */",
"title": "$:/themes/telmiger/bricks/wikilogic-42-77",
"tags": "$:/tags/Stylesheet",
"modifier": "Thomas Elmiger",
"modified": "20180304204301357",
"creator": "Thomas Elmiger",
"created": "20171231111937546"
},
"$:/themes/tiddlywiki/vanilla": {
"text": "{\n \"tiddlers\": {\n \"$:/themes/tiddlywiki/vanilla/themetweaks\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/themetweaks\",\n \"tags\": \"$:/tags/ControlPanel/Appearance\",\n \"caption\": \"{{$:/language/ThemeTweaks/ThemeTweaks}}\",\n \"text\": \"\\\\define lingo-base() $:/language/ThemeTweaks/\\n\\n\\\\define replacement-text()\\n[img[$(imageTitle)$]]\\n\\\\end\\n\\n\\\\define backgroundimage-dropdown()\\n<div class=\\\"tc-drop-down-wrapper\\\">\\n<$button popup=<<qualify \\\"$:/state/popup/themetweaks/backgroundimage\\\">> class=\\\"tc-btn-invisible tc-btn-dropdown\\\">{{$:/core/images/down-arrow}}</$button>\\n<$reveal state=<<qualify \\\"$:/state/popup/themetweaks/backgroundimage\\\">> type=\\\"popup\\\" position=\\\"belowleft\\\" text=\\\"\\\" default=\\\"\\\">\\n<div class=\\\"tc-drop-down\\\">\\n<$macrocall $name=\\\"image-picker\\\" actions=\\\"\\\"\\\"\\n\\n<$action-setfield\\n\\t$tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"\\n\\t$value=<<imageTitle>>\\n/>\\n\\n\\\"\\\"\\\"/>\\n</div>\\n</$reveal>\\n</div>\\n\\\\end\\n\\n\\\\define backgroundimageattachment-dropdown()\\n<$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\" default=\\\"scroll\\\">\\n<option value=\\\"scroll\\\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\\n<option value=\\\"fixed\\\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\\n</$select>\\n\\\\end\\n\\n\\\\define backgroundimagesize-dropdown()\\n<$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\" default=\\\"scroll\\\">\\n<option value=\\\"auto\\\"><<lingo Settings/BackgroundImageSize/Auto>></option>\\n<option value=\\\"cover\\\"><<lingo Settings/BackgroundImageSize/Cover>></option>\\n<option value=\\\"contain\\\"><<lingo Settings/BackgroundImageSize/Contain>></option>\\n</$select>\\n\\\\end\\n\\n<<lingo ThemeTweaks/Hint>>\\n\\n! <<lingo Options>>\\n\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\"><option value=\\\"fixed-fluid\\\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\\\"fluid-fixed\\\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\"><option value=\\\"no\\\">{{$:/language/No}}</option><option value=\\\"yes\\\">{{$:/language/Yes}}</option></$select> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\\\"$:/themes/tiddlywiki/vanilla/options/codewrapping\\\"><option value=\\\"pre\\\">{{$:/language/No}}</option><option value=\\\"pre-wrap\\\">{{$:/language/Yes}}</option></$select> |\\n\\n! <<lingo Settings>>\\n\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\\\" default=\\\"\\\" tag=\\\"input\\\"/> | |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\\\" default=\\\"\\\" tag=\\\"input\\\"/> |<<backgroundimage-dropdown>> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\\\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\\\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\\n\\n! <<lingo Metrics>>\\n\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\\\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storytop\\\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storytop\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyright\\\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storyright\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\\\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\\\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n|<$link to=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\\\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\\\" default=\\\"\\\" tag=\\\"input\\\"/> |\\n\"\n },\n \"$:/themes/tiddlywiki/vanilla/base\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/base\",\n \"tags\": \"[[$:/tags/Stylesheet]]\",\n \"text\": \"\\\\define custom-background-datauri()\\n<$set name=\\\"background\\\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\\n<$list filter=\\\"[<background>is[image]]\\\">\\n`background: url(`\\n<$list filter=\\\"[<background>!has[_canonical_uri]]\\\">\\n`\\\"`<$macrocall $name=\\\"datauri\\\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\\\"`\\n</$list>\\n<$list filter=\\\"[<background>has[_canonical_uri]]\\\">\\n`\\\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\\\"_canonical_uri\\\"/>`\\\"`\\n</$list>\\n`) center center;`\\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\\n</$list>\\n</$set>\\n\\\\end\\n\\n\\\\define if-fluid-fixed(text,hiddenSidebarText)\\n<$reveal state=\\\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\\\" type=\\\"match\\\" text=\\\"fluid-fixed\\\">\\n$text$\\n<$reveal state=\\\"$:/state/sidebar\\\" type=\\\"nomatch\\\" text=\\\"yes\\\" default=\\\"yes\\\">\\n$hiddenSidebarText$\\n</$reveal>\\n</$reveal>\\n\\\\end\\n\\n\\\\define if-editor-height-fixed(then,else)\\n<$reveal state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\" type=\\\"match\\\" text=\\\"fixed\\\">\\n$then$\\n</$reveal>\\n<$reveal state=\\\"$:/config/TextEditor/EditorHeight/Mode\\\" type=\\\"match\\\" text=\\\"auto\\\">\\n$else$\\n</$reveal>\\n\\\\end\\n\\n\\\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\\n\\n/*\\n** Start with the normalize CSS reset, and then belay some of its effects\\n*/\\n\\n{{$:/themes/tiddlywiki/vanilla/reset}}\\n\\n*, input[type=\\\"search\\\"] {\\n\\tbox-sizing: border-box;\\n\\t-moz-box-sizing: border-box;\\n\\t-webkit-box-sizing: border-box;\\n}\\n\\nhtml button {\\n\\tline-height: 1.2;\\n\\tcolor: <<colour button-foreground>>;\\n\\tbackground: <<colour button-background>>;\\n\\tborder-color: <<colour button-border>>;\\n}\\n\\n/*\\n** Basic element styles\\n*/\\n\\nhtml {\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\\n\\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\\n\\t-webkit-font-smoothing: antialiased;\\n\\t-moz-osx-font-smoothing: grayscale;\\n}\\n\\nhtml:-webkit-full-screen {\\n\\tbackground-color: <<colour page-background>>;\\n}\\n\\nbody.tc-body {\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\\n\\tword-wrap: break-word;\\n\\t<<custom-background-datauri>>\\n\\tcolor: <<colour foreground>>;\\n\\tbackground-color: <<colour page-background>>;\\n\\tfill: <<colour foreground>>;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n\\tline-height: 1.2;\\n\\tfont-weight: 300;\\n}\\n\\npre {\\n\\tdisplay: block;\\n\\tpadding: 14px;\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n\\tword-break: normal;\\n\\tword-wrap: break-word;\\n\\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\\n\\tbackground-color: <<colour pre-background>>;\\n\\tborder: 1px solid <<colour pre-border>>;\\n\\tpadding: 0 3px 2px;\\n\\tborder-radius: 3px;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\ncode {\\n\\tcolor: <<colour code-foreground>>;\\n\\tbackground-color: <<colour code-background>>;\\n\\tborder: 1px solid <<colour code-border>>;\\n\\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\\n\\tpadding: 0 3px 2px;\\n\\tborder-radius: 3px;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\\n}\\n\\nblockquote {\\n\\tborder-left: 5px solid <<colour blockquote-bar>>;\\n\\tmargin-left: 25px;\\n\\tpadding-left: 10px;\\n\\tquotes: \\\"\\\\201C\\\"\\\"\\\\201D\\\"\\\"\\\\2018\\\"\\\"\\\\2019\\\";\\n}\\n\\nblockquote.tc-big-quote {\\n\\tfont-family: Georgia, serif;\\n\\tposition: relative;\\n\\tbackground: <<colour pre-background>>;\\n\\tborder-left: none;\\n\\tmargin-left: 50px;\\n\\tmargin-right: 50px;\\n\\tpadding: 10px;\\n border-radius: 8px;\\n}\\n\\nblockquote.tc-big-quote cite:before {\\n\\tcontent: \\\"\\\\2014 \\\\2009\\\";\\n}\\n\\nblockquote.tc-big-quote:before {\\n\\tfont-family: Georgia, serif;\\n\\tcolor: <<colour blockquote-bar>>;\\n\\tcontent: open-quote;\\n\\tfont-size: 8em;\\n\\tline-height: 0.1em;\\n\\tmargin-right: 0.25em;\\n\\tvertical-align: -0.4em;\\n\\tposition: absolute;\\n left: -50px;\\n top: 42px;\\n}\\n\\nblockquote.tc-big-quote:after {\\n\\tfont-family: Georgia, serif;\\n\\tcolor: <<colour blockquote-bar>>;\\n\\tcontent: close-quote;\\n\\tfont-size: 8em;\\n\\tline-height: 0.1em;\\n\\tmargin-right: 0.25em;\\n\\tvertical-align: -0.4em;\\n\\tposition: absolute;\\n right: -80px;\\n bottom: -20px;\\n}\\n\\ndl dt {\\n\\tfont-weight: bold;\\n\\tmargin-top: 6px;\\n}\\n\\ntextarea,\\ninput[type=text],\\ninput[type=search],\\ninput[type=\\\"\\\"],\\ninput:not([type]) {\\n\\tcolor: <<colour foreground>>;\\n\\tbackground: <<colour background>>;\\n}\\n\\n.tc-muted {\\n\\tcolor: <<colour muted-foreground>>;\\n}\\n\\nsvg.tc-image-button {\\n\\tpadding: 0px 1px 1px 0px;\\n}\\n\\n.tc-icon-wrapper > svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\nkbd {\\n\\tdisplay: inline-block;\\n\\tpadding: 3px 5px;\\n\\tfont-size: 0.8em;\\n\\tline-height: 1.2;\\n\\tcolor: <<colour foreground>>;\\n\\tvertical-align: middle;\\n\\tbackground-color: <<colour background>>;\\n\\tborder: solid 1px <<colour muted-foreground>>;\\n\\tborder-bottom-color: <<colour muted-foreground>>;\\n\\tborder-radius: 3px;\\n\\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\\n}\\n\\n/*\\nMarkdown likes putting code elements inside pre elements\\n*/\\npre > code {\\n\\tpadding: 0;\\n\\tborder: none;\\n\\tbackground-color: inherit;\\n\\tcolor: inherit;\\n}\\n\\ntable {\\n\\tborder: 1px solid <<colour table-border>>;\\n\\twidth: auto;\\n\\tmax-width: 100%;\\n\\tcaption-side: bottom;\\n\\tmargin-top: 1em;\\n\\tmargin-bottom: 1em;\\n}\\n\\ntable th, table td {\\n\\tpadding: 0 7px 0 7px;\\n\\tborder-top: 1px solid <<colour table-border>>;\\n\\tborder-left: 1px solid <<colour table-border>>;\\n}\\n\\ntable thead tr td, table th {\\n\\tbackground-color: <<colour table-header-background>>;\\n\\tfont-weight: bold;\\n}\\n\\ntable tfoot tr td {\\n\\tbackground-color: <<colour table-footer-background>>;\\n}\\n\\n.tc-csv-table {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-tiddler-frame img,\\n.tc-tiddler-frame svg,\\n.tc-tiddler-frame canvas,\\n.tc-tiddler-frame embed,\\n.tc-tiddler-frame iframe {\\n\\tmax-width: 100%;\\n}\\n\\n.tc-tiddler-body > embed,\\n.tc-tiddler-body > iframe {\\n\\twidth: 100%;\\n\\theight: 600px;\\n}\\n\\n/*\\n** Links\\n*/\\n\\nbutton.tc-tiddlylink,\\na.tc-tiddlylink {\\n\\ttext-decoration: none;\\n\\tfont-weight: normal;\\n\\tcolor: <<colour tiddler-link-foreground>>;\\n\\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink {\\n\\tcolor: <<colour sidebar-tiddler-link-foreground>>;\\n}\\n\\n.tc-sidebar-lists a.tc-tiddlylink:hover {\\n\\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\\n}\\n\\nbutton.tc-tiddlylink:hover,\\na.tc-tiddlylink:hover {\\n\\ttext-decoration: underline;\\n}\\n\\na.tc-tiddlylink-resolves {\\n}\\n\\na.tc-tiddlylink-shadow {\\n\\tfont-weight: bold;\\n}\\n\\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\\n\\tfont-weight: normal;\\n}\\n\\na.tc-tiddlylink-missing {\\n\\tfont-style: italic;\\n}\\n\\na.tc-tiddlylink-external {\\n\\ttext-decoration: underline;\\n\\tcolor: <<colour external-link-foreground>>;\\n\\tbackground-color: <<colour external-link-background>>;\\n}\\n\\na.tc-tiddlylink-external:visited {\\n\\tcolor: <<colour external-link-foreground-visited>>;\\n\\tbackground-color: <<colour external-link-background-visited>>;\\n}\\n\\na.tc-tiddlylink-external:hover {\\n\\tcolor: <<colour external-link-foreground-hover>>;\\n\\tbackground-color: <<colour external-link-background-hover>>;\\n}\\n\\n/*\\n** Drag and drop styles\\n*/\\n\\n.tc-tiddler-dragger {\\n\\tposition: relative;\\n\\tz-index: -10000;\\n}\\n\\n.tc-tiddler-dragger-inner {\\n\\tposition: absolute;\\n\\ttop: -1000px;\\n\\tleft: -1000px;\\n\\tdisplay: inline-block;\\n\\tpadding: 8px 20px;\\n\\tfont-size: 16.9px;\\n\\tfont-weight: bold;\\n\\tline-height: 20px;\\n\\tcolor: <<colour dragger-foreground>>;\\n\\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n\\tbackground-color: <<colour dragger-background>>;\\n\\tborder-radius: 20px;\\n}\\n\\n.tc-tiddler-dragger-cover {\\n\\tposition: absolute;\\n\\tbackground-color: <<colour page-background>>;\\n}\\n\\n.tc-dropzone {\\n\\tposition: relative;\\n}\\n\\n.tc-dropzone.tc-dragover:before {\\n\\tz-index: 10000;\\n\\tdisplay: block;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: <<colour dropzone-background>>;\\n\\ttext-align: center;\\n\\tcontent: \\\"<<lingo DropMessage>>\\\";\\n}\\n\\n.tc-droppable > .tc-droppable-placeholder {\\n\\tdisplay: none;\\n}\\n\\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\\n\\tdisplay: block;\\n\\tborder: 2px dashed <<colour dropzone-background>>;\\n}\\n\\n.tc-draggable {\\n\\tcursor: move;\\n}\\n\\n/*\\n** Plugin reload warning\\n*/\\n\\n.tc-plugin-reload-warning {\\n\\tz-index: 1000;\\n\\tdisplay: block;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbackground: <<colour alert-background>>;\\n\\ttext-align: center;\\n}\\n\\n/*\\n** Buttons\\n*/\\n\\nbutton svg, button img, label svg, label img {\\n\\tvertical-align: middle;\\n}\\n\\n.tc-btn-invisible {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n cursor: pointer;\\n}\\n\\n.tc-btn-boxed {\\n\\tfont-size: 0.6em;\\n\\tpadding: 0.2em;\\n\\tmargin: 1px;\\n\\tbackground: none;\\n\\tborder: 1px solid <<colour tiddler-controls-foreground>>;\\n\\tborder-radius: 0.25em;\\n}\\n\\nhtml body.tc-body .tc-btn-boxed svg {\\n\\tfont-size: 1.6666em;\\n}\\n\\n.tc-btn-boxed:hover {\\n\\tbackground: <<colour muted-foreground>>;\\n\\tcolor: <<colour background>>;\\n}\\n\\nhtml body.tc-body .tc-btn-boxed:hover svg {\\n\\tfill: <<colour background>>;\\n}\\n\\n.tc-btn-rounded {\\n\\tfont-size: 0.5em;\\n\\tline-height: 2;\\n\\tpadding: 0em 0.3em 0.2em 0.4em;\\n\\tmargin: 1px;\\n\\tborder: 1px solid <<colour muted-foreground>>;\\n\\tbackground: <<colour muted-foreground>>;\\n\\tcolor: <<colour background>>;\\n\\tborder-radius: 2em;\\n}\\n\\nhtml body.tc-body .tc-btn-rounded svg {\\n\\tfont-size: 1.6666em;\\n\\tfill: <<colour background>>;\\n}\\n\\n.tc-btn-rounded:hover {\\n\\tborder: 1px solid <<colour muted-foreground>>;\\n\\tbackground: <<colour background>>;\\n\\tcolor: <<colour muted-foreground>>;\\n}\\n\\nhtml body.tc-body .tc-btn-rounded:hover svg {\\n\\tfill: <<colour muted-foreground>>;\\n}\\n\\n.tc-btn-icon svg {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: <<colour muted-foreground>>;\\n}\\n\\n.tc-btn-text {\\n\\tpadding: 0;\\n\\tmargin: 0;\\n}\\n\\n.tc-btn-big-green {\\n\\tdisplay: inline-block;\\n\\tpadding: 8px;\\n\\tmargin: 4px 8px 4px 8px;\\n\\tbackground: <<colour download-background>>;\\n\\tcolor: <<colour download-foreground>>;\\n\\tfill: <<colour download-foreground>>;\\n\\tborder: none;\\n\\tfont-size: 1.2em;\\n\\tline-height: 1.4em;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-btn-big-green svg,\\n.tc-btn-big-green img {\\n\\theight: 2em;\\n\\twidth: 2em;\\n\\tvertical-align: middle;\\n\\tfill: <<colour download-foreground>>;\\n}\\n\\n.tc-sidebar-lists input {\\n\\tcolor: <<colour foreground>>;\\n}\\n\\n.tc-sidebar-lists button {\\n\\tcolor: <<colour sidebar-button-foreground>>;\\n\\tfill: <<colour sidebar-button-foreground>>;\\n}\\n\\n.tc-sidebar-lists button.tc-btn-mini {\\n\\tcolor: <<colour sidebar-muted-foreground>>;\\n}\\n\\n.tc-sidebar-lists button.tc-btn-mini:hover {\\n\\tcolor: <<colour sidebar-muted-foreground-hover>>;\\n}\\n\\nbutton svg.tc-image-button, button .tc-image-button img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n}\\n\\n.tc-unfold-banner {\\n\\tposition: absolute;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\twidth: 100%;\\n\\twidth: calc(100% + 2px);\\n\\tmargin-left: -43px;\\n\\ttext-align: center;\\n\\tborder-top: 2px solid <<colour tiddler-info-background>>;\\n\\tmargin-top: 4px;\\n}\\n\\n.tc-unfold-banner:hover {\\n\\tbackground: <<colour tiddler-info-background>>;\\n\\tborder-top: 2px solid <<colour tiddler-info-border>>;\\n}\\n\\n.tc-unfold-banner svg, .tc-fold-banner svg {\\n\\theight: 0.75em;\\n\\tfill: <<colour tiddler-controls-foreground>>;\\n}\\n\\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\\n\\tfill: <<colour tiddler-controls-foreground-hover>>;\\n}\\n\\n.tc-fold-banner {\\n\\tposition: absolute;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n\\tbackground: none;\\n\\tborder: none;\\n\\twidth: 23px;\\n\\ttext-align: center;\\n\\tmargin-left: -35px;\\n\\ttop: 6px;\\n\\tbottom: 6px;\\n}\\n\\n.tc-fold-banner:hover {\\n\\tbackground: <<colour tiddler-info-background>>;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\n\\t.tc-unfold-banner {\\n\\t\\tposition: static;\\n\\t\\twidth: calc(100% + 59px);\\n\\t}\\n\\n\\t.tc-fold-banner {\\n\\t\\twidth: 16px;\\n\\t\\tmargin-left: -16px;\\n\\t\\tfont-size: 0.75em;\\n\\t}\\n\\n}\\n\\n/*\\n** Tags and missing tiddlers\\n*/\\n\\n.tc-tag-list-item {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\tmargin-right: 7px;\\n}\\n\\n.tc-tags-wrapper {\\n\\tmargin: 4px 0 14px 0;\\n}\\n\\n.tc-missing-tiddler-label {\\n\\tfont-style: italic;\\n\\tfont-weight: normal;\\n\\tdisplay: inline-block;\\n\\tfont-size: 11.844px;\\n\\tline-height: 14px;\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n}\\n\\nbutton.tc-tag-label, span.tc-tag-label {\\n\\tdisplay: inline-block;\\n\\tpadding: 0.16em 0.7em;\\n\\tfont-size: 0.9em;\\n\\tfont-weight: 400;\\n\\tline-height: 1.2em;\\n\\tcolor: <<colour tag-foreground>>;\\n\\twhite-space: nowrap;\\n\\tvertical-align: baseline;\\n\\tbackground-color: <<colour tag-background>>;\\n\\tborder-radius: 1em;\\n}\\n\\n.tc-untagged-separator {\\n\\twidth: 10em;\\n\\tleft: 0;\\n\\tmargin-left: 0;\\n\\tborder: 0;\\n\\theight: 1px;\\n\\tbackground: <<colour tab-divider>>;\\n}\\n\\nbutton.tc-untagged-label {\\n\\tbackground-color: <<colour untagged-background>>;\\n}\\n\\n.tc-tag-label svg, .tc-tag-label img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: <<colour tag-foreground>>;\\n\\tvertical-align: text-bottom;\\n}\\n\\n.tc-tag-manager-table .tc-tag-label {\\n\\twhite-space: normal;\\n}\\n\\n.tc-tag-manager-tag {\\n\\twidth: 100%;\\n}\\n\\n/*\\n** Page layout\\n*/\\n\\n.tc-topbar {\\n\\tposition: fixed;\\n\\tz-index: 1200;\\n}\\n\\n.tc-topbar-left {\\n\\tleft: 29px;\\n\\ttop: 5px;\\n}\\n\\n.tc-topbar-right {\\n\\ttop: 5px;\\n\\tright: 29px;\\n}\\n\\n.tc-topbar button {\\n\\tpadding: 8px;\\n}\\n\\n.tc-topbar svg {\\n\\tfill: <<colour muted-foreground>>;\\n}\\n\\n.tc-topbar button:hover svg {\\n\\tfill: <<colour foreground>>;\\n}\\n\\n.tc-sidebar-header {\\n\\tcolor: <<colour sidebar-foreground>>;\\n\\tfill: <<colour sidebar-foreground>>;\\n}\\n\\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\\n\\tfont-weight: 300;\\n}\\n\\n.tc-sidebar-header .tc-sidebar-lists p {\\n\\tmargin-top: 3px;\\n\\tmargin-bottom: 3px;\\n}\\n\\n.tc-sidebar-header .tc-missing-tiddler-label {\\n\\tcolor: <<colour sidebar-foreground>>;\\n}\\n\\n.tc-advanced-search input {\\n\\twidth: 60%;\\n}\\n\\n.tc-search a svg {\\n\\twidth: 1.2em;\\n\\theight: 1.2em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-page-controls {\\n\\tmargin-top: 14px;\\n\\tfont-size: 1.5em;\\n}\\n\\n.tc-page-controls button {\\n\\tmargin-right: 0.5em;\\n}\\n\\n.tc-page-controls a.tc-tiddlylink:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-page-controls img {\\n\\twidth: 1em;\\n}\\n\\n.tc-page-controls svg {\\n\\tfill: <<colour sidebar-controls-foreground>>;\\n}\\n\\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\\n\\tfill: <<colour sidebar-controls-foreground-hover>>;\\n}\\n\\n.tc-menu-list-item {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-menu-list-count {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-menu-list-subitem {\\n\\tpadding-left: 7px;\\n}\\n\\n.tc-story-river {\\n\\tposition: relative;\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\n\\t.tc-sidebar-header {\\n\\t\\tpadding: 14px;\\n\\t\\tmin-height: 32px;\\n\\t\\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t}\\n\\n\\t.tc-story-river {\\n\\t\\tposition: relative;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\n\\t.tc-message-box {\\n\\t\\tmargin: 21px -21px 21px -21px;\\n\\t}\\n\\n\\t.tc-sidebar-scrollable {\\n\\t\\tposition: fixed;\\n\\t\\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\\n\\t\\tbottom: 0;\\n\\t\\tright: 0;\\n\\t\\toverflow-y: auto;\\n\\t\\toverflow-x: auto;\\n\\t\\t-webkit-overflow-scrolling: touch;\\n\\t\\tmargin: 0 0 0 -42px;\\n\\t\\tpadding: 71px 0 28px 42px;\\n\\t}\\n\\n\\thtml[dir=\\\"rtl\\\"] .tc-sidebar-scrollable {\\n\\t\\tleft: auto;\\n\\t\\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\\n\\t}\\n\\n\\t.tc-story-river {\\n\\t\\tposition: relative;\\n\\t\\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\\n\\t\\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\\n\\t\\tpadding: 42px 42px 42px 42px;\\n\\t}\\n\\n<<if-no-sidebar \\\"\\n\\n\\t.tc-story-river {\\n\\t\\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\\n\\t}\\n\\n\\\">>\\n\\n}\\n\\n@media print {\\n\\n\\tbody.tc-body {\\n\\t\\tbackground-color: transparent;\\n\\t}\\n\\n\\t.tc-sidebar-header, .tc-topbar {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t.tc-story-river {\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t}\\n\\n\\t.tc-story-river .tc-tiddler-frame {\\n\\t\\tmargin: 0;\\n\\t\\tborder: none;\\n\\t\\tpadding: 0;\\n\\t}\\n}\\n\\n/*\\n** Tiddler styles\\n*/\\n\\n.tc-tiddler-frame {\\n\\tposition: relative;\\n\\tmargin-bottom: 28px;\\n\\tbackground-color: <<colour tiddler-background>>;\\n\\tborder: 1px solid <<colour tiddler-border>>;\\n}\\n\\n{{$:/themes/tiddlywiki/vanilla/sticky}}\\n\\n.tc-tiddler-info {\\n\\tpadding: 14px 42px 14px 42px;\\n\\tbackground-color: <<colour tiddler-info-background>>;\\n\\tborder-top: 1px solid <<colour tiddler-info-border>>;\\n\\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\\n}\\n\\n.tc-tiddler-info p {\\n\\tmargin-top: 3px;\\n\\tmargin-bottom: 3px;\\n}\\n\\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: <<colour tiddler-info-tab-background>>;\\n\\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\\n}\\n\\n.tc-view-field-table {\\n\\twidth: 100%;\\n}\\n\\n.tc-view-field-name {\\n\\twidth: 1%; /* Makes this column be as narrow as possible */\\n\\ttext-align: right;\\n\\tfont-style: italic;\\n\\tfont-weight: 200;\\n}\\n\\n.tc-view-field-value {\\n}\\n\\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\t.tc-tiddler-frame {\\n\\t\\tpadding: 14px 14px 14px 14px;\\n\\t}\\n\\n\\t.tc-tiddler-info {\\n\\t\\tmargin: 0 -14px 0 -14px;\\n\\t}\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\t.tc-tiddler-frame {\\n\\t\\tpadding: 28px 42px 42px 42px;\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\\n\\t\\tborder-radius: 2px;\\n\\t}\\n\\n<<if-no-sidebar \\\"\\n\\n\\t.tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\\">>\\n\\n\\t.tc-tiddler-info {\\n\\t\\tmargin: 0 -42px 0 -42px;\\n\\t}\\n}\\n\\n.tc-site-title,\\n.tc-titlebar {\\n\\tfont-weight: 300;\\n\\tfont-size: 2.35em;\\n\\tline-height: 1.2em;\\n\\tcolor: <<colour tiddler-title-foreground>>;\\n\\tmargin: 0;\\n}\\n\\n.tc-site-title {\\n\\tcolor: <<colour site-title-foreground>>;\\n}\\n\\n.tc-tiddler-title-icon {\\n\\tvertical-align: middle;\\n}\\n\\n.tc-system-title-prefix {\\n\\tcolor: <<colour muted-foreground>>;\\n}\\n\\n.tc-titlebar h2 {\\n\\tfont-size: 1em;\\n\\tdisplay: inline;\\n}\\n\\n.tc-titlebar img {\\n\\theight: 1em;\\n}\\n\\n.tc-subtitle {\\n\\tfont-size: 0.9em;\\n\\tcolor: <<colour tiddler-subtitle-foreground>>;\\n\\tfont-weight: 300;\\n}\\n\\n.tc-tiddler-missing .tc-title {\\n font-style: italic;\\n font-weight: normal;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-controls {\\n\\tfloat: right;\\n}\\n\\n.tc-tiddler-controls .tc-drop-down {\\n\\tfont-size: 0.6em;\\n}\\n\\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\\n\\tfont-size: 1em;\\n}\\n\\n.tc-tiddler-controls > span > button,\\n.tc-tiddler-controls > span > span > button,\\n.tc-tiddler-controls > span > span > span > button {\\n\\tvertical-align: baseline;\\n\\tmargin-left:5px;\\n}\\n\\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\\n.tc-search button svg, .tc-search a svg {\\n\\tfill: <<colour tiddler-controls-foreground>>;\\n}\\n\\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\\n\\theight: 0.75em;\\n}\\n\\n.tc-search button svg, .tc-search a svg {\\n height: 1.2em;\\n width: 1.2em;\\n margin: 0 0.25em;\\n}\\n\\n.tc-tiddler-controls button.tc-selected svg,\\n.tc-page-controls button.tc-selected svg {\\n\\tfill: <<colour tiddler-controls-foreground-selected>>;\\n}\\n\\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\\n.tc-search button:hover svg, .tc-search a:hover svg {\\n\\tfill: <<colour tiddler-controls-foreground-hover>>;\\n}\\n\\n@media print {\\n\\t.tc-tiddler-controls {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.tc-tiddler-help { /* Help prompts within tiddler template */\\n\\tcolor: <<colour muted-foreground>>;\\n\\tmargin-top: 14px;\\n}\\n\\n.tc-tiddler-help a.tc-tiddlylink {\\n\\tcolor: <<colour very-muted-foreground>>;\\n}\\n\\n.tc-tiddler-frame .tc-edit-texteditor {\\n\\twidth: 100%;\\n\\tmargin: 4px 0 4px 0;\\n}\\n\\n.tc-tiddler-frame input.tc-edit-texteditor,\\n.tc-tiddler-frame textarea.tc-edit-texteditor,\\n.tc-tiddler-frame iframe.tc-edit-texteditor {\\n\\tpadding: 3px 3px 3px 3px;\\n\\tborder: 1px solid <<colour tiddler-editor-border>>;\\n\\tbackground-color: <<colour tiddler-editor-background>>;\\n\\tline-height: 1.3em;\\n\\t-webkit-appearance: none;\\n\\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\\n}\\n\\n.tc-tiddler-frame .tc-binary-warning {\\n\\twidth: 100%;\\n\\theight: 5em;\\n\\ttext-align: center;\\n\\tpadding: 3em 3em 6em 3em;\\n\\tbackground: <<colour alert-background>>;\\n\\tborder: 1px solid <<colour alert-border>>;\\n}\\n\\ncanvas.tc-edit-bitmapeditor {\\n\\tborder: 6px solid <<colour tiddler-editor-border-image>>;\\n\\tcursor: crosshair;\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tmargin-top: 6px;\\n\\tmargin-bottom: 6px;\\n}\\n\\n.tc-edit-bitmapeditor-width {\\n\\tdisplay: block;\\n}\\n\\n.tc-edit-bitmapeditor-height {\\n\\tdisplay: block;\\n}\\n\\n.tc-tiddler-body {\\n\\tclear: both;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-body {\\n\\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\\n\\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\\n}\\n\\n.tc-titlebar, .tc-tiddler-edit-title {\\n\\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\\n}\\n\\nhtml body.tc-body.tc-single-tiddler-window {\\n\\tmargin: 1em;\\n\\tbackground: <<colour tiddler-background>>;\\n}\\n\\n.tc-single-tiddler-window img,\\n.tc-single-tiddler-window svg,\\n.tc-single-tiddler-window canvas,\\n.tc-single-tiddler-window embed,\\n.tc-single-tiddler-window iframe {\\n\\tmax-width: 100%;\\n}\\n\\n/*\\n** Editor\\n*/\\n\\n.tc-editor-toolbar {\\n\\tmargin-top: 8px;\\n}\\n\\n.tc-editor-toolbar button {\\n\\tvertical-align: middle;\\n\\tbackground-color: <<colour tiddler-controls-foreground>>;\\n\\tfill: <<colour tiddler-controls-foreground-selected>>;\\n\\tborder-radius: 4px;\\n\\tpadding: 3px;\\n\\tmargin: 2px 0 2px 4px;\\n}\\n\\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\\n\\tmargin-left: 1px;\\n\\twidth: 1em;\\n\\tborder-radius: 8px;\\n}\\n\\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\\n\\tmargin-left: 11px;\\n}\\n\\n.tc-editor-toolbar button.tc-selected {\\n\\tbackground-color: <<colour primary>>;\\n}\\n\\n.tc-editor-toolbar button svg {\\n\\twidth: 1.6em;\\n\\theight: 1.2em;\\n}\\n\\n.tc-editor-toolbar button:hover {\\n\\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\\n\\tfill: <<colour background>>;\\n}\\n\\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\\n\\twhite-space: normal;\\n}\\n\\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\\n\\tdisplay: inline-block;\\n\\tpadding: 3px;\\n\\twidth: auto;\\n}\\n\\n.tc-editor-toolbar .tc-search-results {\\n\\tpadding: 0;\\n}\\n\\n/*\\n** Adjustments for fluid-fixed mode\\n*/\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\n<<if-fluid-fixed text:\\\"\\\"\\\"\\n\\n\\t.tc-story-river {\\n\\t\\tpadding-right: 0;\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\t\\tleft: 0;\\n\\t\\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\\n\\t\\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n\\t}\\n\\n\\t.tc-tiddler-frame {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.tc-sidebar-scrollable {\\n\\t\\tleft: auto;\\n\\t\\tbottom: 0;\\n\\t\\tright: 0;\\n\\t\\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\\n\\t}\\n\\n\\tbody.tc-body .tc-storyview-zoomin-tiddler {\\n\\t\\twidth: 100%;\\n\\t\\twidth: calc(100% - 42px);\\n\\t}\\n\\n\\\"\\\"\\\" hiddenSidebarText:\\\"\\\"\\\"\\n\\n\\t.tc-story-river {\\n\\t\\tpadding-right: 3em;\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\tbody.tc-body .tc-storyview-zoomin-tiddler {\\n\\t\\twidth: 100%;\\n\\t\\twidth: calc(100% - 84px);\\n\\t}\\n\\n\\\"\\\"\\\">>\\n\\n}\\n\\n/*\\n** Toolbar buttons\\n*/\\n\\n.tc-page-controls svg.tc-image-new-button {\\n fill: <<colour toolbar-new-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-options-button {\\n fill: <<colour toolbar-options-button>>;\\n}\\n\\n.tc-page-controls svg.tc-image-save-button {\\n fill: <<colour toolbar-save-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-info-button {\\n fill: <<colour toolbar-info-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-edit-button {\\n fill: <<colour toolbar-edit-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-close-button {\\n fill: <<colour toolbar-close-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-delete-button {\\n fill: <<colour toolbar-delete-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-cancel-button {\\n fill: <<colour toolbar-cancel-button>>;\\n}\\n\\n.tc-tiddler-controls button svg.tc-image-done-button {\\n fill: <<colour toolbar-done-button>>;\\n}\\n\\n/*\\n** Tiddler edit mode\\n*/\\n\\n.tc-tiddler-edit-frame em.tc-edit {\\n\\tcolor: <<colour muted-foreground>>;\\n\\tfont-style: normal;\\n}\\n\\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\\n\\tfont-style: normal;\\n}\\n\\n.tc-edit-tags {\\n\\tborder: 1px solid <<colour tiddler-editor-border>>;\\n\\tpadding: 4px 8px 4px 8px;\\n}\\n\\n.tc-edit-add-tag {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-add-tag .tc-add-tag-name input {\\n\\twidth: 50%;\\n}\\n\\n.tc-edit-add-tag .tc-keyboard {\\n\\tdisplay:inline;\\n}\\n\\n.tc-edit-tags .tc-tag-label {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-edit-tags-list {\\n\\tmargin: 14px 0 14px 0;\\n}\\n\\n.tc-remove-tag-button {\\n\\tpadding-left: 4px;\\n}\\n\\n.tc-tiddler-preview {\\n\\toverflow: auto;\\n}\\n\\n.tc-tiddler-preview-preview {\\n\\tfloat: right;\\n\\twidth: 49%;\\n\\tborder: 1px solid <<colour tiddler-editor-border>>;\\n\\tmargin: 4px 0 3px 3px;\\n\\tpadding: 3px 3px 3px 3px;\\n}\\n\\n<<if-editor-height-fixed then:\\\"\\\"\\\"\\n\\n.tc-tiddler-preview-preview {\\n\\toverflow-y: scroll;\\n\\theight: {{$:/config/TextEditor/EditorHeight/Height}};\\n}\\n\\n\\\"\\\"\\\">>\\n\\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\\n\\twidth: 49%;\\n}\\n\\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\\n\\tmax-width: 49%;\\n}\\n\\n.tc-edit-fields {\\n\\twidth: 100%;\\n}\\n\\n\\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\\n\\tborder: none;\\n\\tpadding: 4px;\\n}\\n\\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\\n\\tbackground-color: <<colour tiddler-editor-fields-odd>>;\\n}\\n\\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\\n\\tbackground-color: <<colour tiddler-editor-fields-even>>;\\n}\\n\\n.tc-edit-field-name {\\n\\ttext-align: right;\\n}\\n\\n.tc-edit-field-value input {\\n\\twidth: 100%;\\n}\\n\\n.tc-edit-field-remove {\\n}\\n\\n.tc-edit-field-remove svg {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: <<colour muted-foreground>>;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-edit-field-add-name {\\n\\tdisplay: inline-block;\\n\\twidth: 15%;\\n}\\n\\n.tc-edit-field-add-value {\\n\\tdisplay: inline-block;\\n\\twidth: 40%;\\n}\\n\\n.tc-edit-field-add-button {\\n\\tdisplay: inline-block;\\n\\twidth: 10%;\\n}\\n\\n/*\\n** Storyview Classes\\n*/\\n\\n.tc-storyview-zoomin-tiddler {\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\twidth: 100%;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\n\\t.tc-storyview-zoomin-tiddler {\\n\\t\\twidth: calc(100% - 84px);\\n\\t}\\n\\n}\\n\\n/*\\n** Dropdowns\\n*/\\n\\n.tc-btn-dropdown {\\n\\ttext-align: left;\\n}\\n\\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\\n\\theight: 1em;\\n\\twidth: 1em;\\n\\tfill: <<colour muted-foreground>>;\\n}\\n\\n.tc-drop-down-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-drop-down {\\n\\tmin-width: 380px;\\n\\tborder: 1px solid <<colour dropdown-border>>;\\n\\tbackground-color: <<colour dropdown-background>>;\\n\\tpadding: 7px 0 7px 0;\\n\\tmargin: 4px 0 0 0;\\n\\twhite-space: nowrap;\\n\\ttext-shadow: none;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-drop-down .tc-drop-down {\\n\\tmargin-left: 14px;\\n}\\n\\n.tc-drop-down button svg, .tc-drop-down a svg {\\n\\tfill: <<colour foreground>>;\\n}\\n\\n.tc-drop-down button.tc-btn-invisible:hover svg {\\n\\tfill: <<colour foreground>>;\\n}\\n\\n.tc-drop-down p {\\n\\tpadding: 0 14px 0 14px;\\n}\\n\\n.tc-drop-down svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-drop-down img {\\n\\twidth: 1em;\\n}\\n\\n.tc-drop-down-language-chooser img {\\n\\twidth: 2em;\\n\\tvertical-align: baseline;\\n}\\n\\n.tc-drop-down a, .tc-drop-down button {\\n\\tdisplay: block;\\n\\tpadding: 0 14px 0 14px;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n\\tcolor: <<colour foreground>>;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\\n\\tdisplay: inline-block;\\n width: auto;\\n margin-bottom: 0px;\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n.tc-drop-down .tc-prompt {\\n\\tpadding: 0 14px;\\n}\\n\\n.tc-drop-down .tc-chooser {\\n\\tborder: none;\\n}\\n\\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\\n\\tfont-size: 0.4em;\\n\\tpadding-left: 1.2em;\\n}\\n\\n.tc-drop-down .tc-file-input-wrapper {\\n\\twidth: 100%;\\n}\\n\\n.tc-drop-down .tc-file-input-wrapper button {\\n\\tcolor: <<colour foreground>>;\\n}\\n\\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\\n\\tcolor: <<colour tiddler-link-background>>;\\n\\tbackground-color: <<colour tiddler-link-foreground>>;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-drop-down .tc-tab-buttons button {\\n\\tbackground-color: <<colour dropdown-tab-background>>;\\n}\\n\\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: <<colour dropdown-tab-background-selected>>;\\n\\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\\n}\\n\\n.tc-drop-down-bullet {\\n\\tdisplay: inline-block;\\n\\twidth: 0.5em;\\n}\\n\\n.tc-drop-down .tc-tab-contents a {\\n\\tpadding: 0 0.5em 0 0.5em;\\n}\\n\\n.tc-block-dropdown-wrapper {\\n\\tposition: relative;\\n}\\n\\n.tc-block-dropdown {\\n\\tposition: absolute;\\n\\tmin-width: 220px;\\n\\tborder: 1px solid <<colour dropdown-border>>;\\n\\tbackground-color: <<colour dropdown-background>>;\\n\\tpadding: 7px 0;\\n\\tmargin: 4px 0 0 0;\\n\\twhite-space: nowrap;\\n\\tz-index: 1000;\\n\\ttext-shadow: none;\\n}\\n\\n.tc-block-dropdown.tc-search-drop-down {\\n\\tmargin-left: -12px;\\n}\\n\\n.tc-block-dropdown a {\\n\\tdisplay: block;\\n\\tpadding: 4px 14px 4px 14px;\\n}\\n\\n.tc-block-dropdown.tc-search-drop-down a {\\n\\tdisplay: block;\\n\\tpadding: 0px 10px 0px 10px;\\n}\\n\\n.tc-drop-down .tc-dropdown-item-plain,\\n.tc-block-dropdown .tc-dropdown-item-plain {\\n\\tpadding: 4px 14px 4px 7px;\\n}\\n\\n.tc-drop-down .tc-dropdown-item,\\n.tc-block-dropdown .tc-dropdown-item {\\n\\tpadding: 4px 14px 4px 7px;\\n\\tcolor: <<colour muted-foreground>>;\\n}\\n\\n.tc-block-dropdown a:hover {\\n\\tcolor: <<colour tiddler-link-background>>;\\n\\tbackground-color: <<colour tiddler-link-foreground>>;\\n\\ttext-decoration: none;\\n}\\n\\n.tc-search-results {\\n\\tpadding: 0 7px 0 7px;\\n}\\n\\n.tc-image-chooser, .tc-colour-chooser {\\n\\twhite-space: normal;\\n}\\n\\n.tc-image-chooser a,\\n.tc-colour-chooser a {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\ttext-align: center;\\n\\tposition: relative;\\n}\\n\\n.tc-image-chooser a {\\n\\tborder: 1px solid <<colour muted-foreground>>;\\n\\tpadding: 2px;\\n\\tmargin: 2px;\\n\\twidth: 4em;\\n\\theight: 4em;\\n}\\n\\n.tc-colour-chooser a {\\n\\tpadding: 3px;\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-image-chooser a:hover,\\n.tc-colour-chooser a:hover {\\n\\tbackground: <<colour primary>>;\\n\\tpadding: 0px;\\n\\tborder: 3px solid <<colour primary>>;\\n}\\n\\n.tc-image-chooser a svg,\\n.tc-image-chooser a img {\\n\\tdisplay: inline-block;\\n\\twidth: auto;\\n\\theight: auto;\\n\\tmax-width: 3.5em;\\n\\tmax-height: 3.5em;\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tmargin: auto;\\n}\\n\\n/*\\n** Modals\\n*/\\n\\n.tc-modal-wrapper {\\n\\tposition: fixed;\\n\\toverflow: auto;\\n\\toverflow-y: scroll;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tz-index: 900;\\n}\\n\\n.tc-modal-backdrop {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tz-index: 1000;\\n\\tbackground-color: <<colour modal-backdrop>>;\\n}\\n\\n.tc-modal {\\n\\tz-index: 1100;\\n\\tbackground-color: <<colour modal-background>>;\\n\\tborder: 1px solid <<colour modal-border>>;\\n}\\n\\n@media (max-width: 55em) {\\n\\t.tc-modal {\\n\\t\\tposition: fixed;\\n\\t\\ttop: 1em;\\n\\t\\tleft: 1em;\\n\\t\\tright: 1em;\\n\\t}\\n\\n\\t.tc-modal-body {\\n\\t\\toverflow-y: auto;\\n\\t\\tmax-height: 400px;\\n\\t\\tmax-height: 60vh;\\n\\t}\\n}\\n\\n@media (min-width: 55em) {\\n\\t.tc-modal {\\n\\t\\tposition: fixed;\\n\\t\\ttop: 2em;\\n\\t\\tleft: 25%;\\n\\t\\twidth: 50%;\\n\\t}\\n\\n\\t.tc-modal-body {\\n\\t\\toverflow-y: auto;\\n\\t\\tmax-height: 400px;\\n\\t\\tmax-height: 60vh;\\n\\t}\\n}\\n\\n.tc-modal-header {\\n\\tpadding: 9px 15px;\\n\\tborder-bottom: 1px solid <<colour modal-header-border>>;\\n}\\n\\n.tc-modal-header h3 {\\n\\tmargin: 0;\\n\\tline-height: 30px;\\n}\\n\\n.tc-modal-header img, .tc-modal-header svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-modal-body {\\n\\tpadding: 15px;\\n}\\n\\n.tc-modal-footer {\\n\\tpadding: 14px 15px 15px;\\n\\tmargin-bottom: 0;\\n\\ttext-align: right;\\n\\tbackground-color: <<colour modal-footer-background>>;\\n\\tborder-top: 1px solid <<colour modal-footer-border>>;\\n}\\n\\n/*\\n** Notifications\\n*/\\n\\n.tc-notification {\\n\\tposition: fixed;\\n\\ttop: 14px;\\n\\tright: 42px;\\n\\tz-index: 1300;\\n\\tmax-width: 280px;\\n\\tpadding: 0 14px 0 14px;\\n\\tbackground-color: <<colour notification-background>>;\\n\\tborder: 1px solid <<colour notification-border>>;\\n}\\n\\n/*\\n** Tabs\\n*/\\n\\n.tc-tab-set.tc-vertical {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-tab-buttons {\\n\\tfont-size: 0.85em;\\n\\tpadding-top: 1em;\\n\\tmargin-bottom: -2px;\\n}\\n\\n.tc-tab-buttons.tc-vertical {\\n\\tz-index: 100;\\n\\tdisplay: block;\\n\\tpadding-top: 14px;\\n\\tvertical-align: top;\\n\\ttext-align: right;\\n\\tmargin-bottom: inherit;\\n\\tmargin-right: -1px;\\n\\tmax-width: 33%;\\n\\t-webkit-flex: 0 0 auto;\\n\\tflex: 0 0 auto;\\n}\\n\\n.tc-tab-buttons button.tc-tab-selected {\\n\\tcolor: <<colour tab-foreground-selected>>;\\n\\tbackground-color: <<colour tab-background-selected>>;\\n\\tborder-left: 1px solid <<colour tab-border-selected>>;\\n\\tborder-top: 1px solid <<colour tab-border-selected>>;\\n\\tborder-right: 1px solid <<colour tab-border-selected>>;\\n}\\n\\n.tc-tab-buttons button {\\n\\tcolor: <<colour tab-foreground>>;\\n\\tpadding: 3px 5px 3px 5px;\\n\\tmargin-right: 0.3em;\\n\\tfont-weight: 300;\\n\\tborder: none;\\n\\tbackground: inherit;\\n\\tbackground-color: <<colour tab-background>>;\\n\\tborder-left: 1px solid <<colour tab-border>>;\\n\\tborder-top: 1px solid <<colour tab-border>>;\\n\\tborder-right: 1px solid <<colour tab-border>>;\\n\\tborder-top-left-radius: 2px;\\n\\tborder-top-right-radius: 2px;\\n\\tborder-bottom-left-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-tab-buttons.tc-vertical button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tmargin-top: 3px;\\n\\tmargin-right: 0;\\n\\ttext-align: right;\\n\\tbackground-color: <<colour tab-background>>;\\n\\tborder-left: 1px solid <<colour tab-border>>;\\n\\tborder-bottom: 1px solid <<colour tab-border>>;\\n\\tborder-right: none;\\n\\tborder-top-left-radius: 2px;\\n\\tborder-bottom-left-radius: 2px;\\n\\tborder-top-right-radius: 0;\\n\\tborder-bottom-right-radius: 0;\\n}\\n\\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\\n\\tbackground-color: <<colour tab-background-selected>>;\\n\\tborder-right: 1px solid <<colour tab-background-selected>>;\\n}\\n\\n.tc-tab-divider {\\n\\tborder-top: 1px solid <<colour tab-divider>>;\\n}\\n\\n.tc-tab-divider.tc-vertical {\\n\\tdisplay: none;\\n}\\n\\n.tc-tab-content {\\n\\tmargin-top: 14px;\\n}\\n\\n.tc-tab-content.tc-vertical {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\tpadding-top: 0;\\n\\tpadding-left: 14px;\\n\\tborder-left: 1px solid <<colour tab-border>>;\\n\\t-webkit-flex: 1 0 70%;\\n\\tflex: 1 0 70%;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons {\\n\\tmargin-bottom: -1px;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\\n\\tbackground-color: <<colour sidebar-tab-background-selected>>;\\n\\tcolor: <<colour sidebar-tab-foreground-selected>>;\\n\\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\\n\\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\\n\\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\\n}\\n\\n.tc-sidebar-lists .tc-tab-buttons button {\\n\\tbackground-color: <<colour sidebar-tab-background>>;\\n\\tcolor: <<colour sidebar-tab-foreground>>;\\n\\tborder-left: 1px solid <<colour sidebar-tab-border>>;\\n\\tborder-top: 1px solid <<colour sidebar-tab-border>>;\\n\\tborder-right: 1px solid <<colour sidebar-tab-border>>;\\n}\\n\\n.tc-sidebar-lists .tc-tab-divider {\\n\\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\tbackground-color: <<colour sidebar-tab-background>>;\\n\\tborder-top: none;\\n\\tborder-left: none;\\n\\tborder-bottom: none;\\n\\tborder-right: 1px solid #ccc;\\n\\tmargin-bottom: inherit;\\n}\\n\\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\\n\\tbackground-color: <<colour sidebar-tab-background-selected>>;\\n\\tborder: none;\\n}\\n\\n/*\\n** Manager\\n*/\\n\\n.tc-manager-wrapper {\\n\\t\\n}\\n\\n.tc-manager-controls {\\n\\t\\n}\\n\\n.tc-manager-control {\\n\\tmargin: 0.5em 0;\\n}\\n\\n.tc-manager-list {\\n\\twidth: 100%;\\n\\tborder-top: 1px solid <<colour muted-foreground>>;\\n\\tborder-left: 1px solid <<colour muted-foreground>>;\\n\\tborder-right: 1px solid <<colour muted-foreground>>;\\n}\\n\\n.tc-manager-list-item {\\n\\n}\\n\\n.tc-manager-list-item-heading {\\n display: block;\\n width: 100%;\\n text-align: left;\\t\\n\\tborder-bottom: 1px solid <<colour muted-foreground>>;\\n\\tpadding: 3px;\\n}\\n\\n.tc-manager-list-item-heading-selected {\\n\\tfont-weight: bold;\\n\\tcolor: <<colour background>>;\\n\\tfill: <<colour background>>;\\n\\tbackground-color: <<colour foreground>>;\\n}\\n\\n.tc-manager-list-item-heading:hover {\\n\\tbackground: <<colour primary>>;\\n\\tcolor: <<colour background>>;\\n}\\n\\n.tc-manager-list-item-content {\\n\\tdisplay: flex;\\n}\\n\\n.tc-manager-list-item-content-sidebar {\\n flex: 1 0;\\n background: <<colour tiddler-editor-background>>;\\n border-right: 0.5em solid <<colour muted-foreground>>;\\n border-bottom: 0.5em solid <<colour muted-foreground>>;\\n white-space: nowrap;\\n}\\n\\n.tc-manager-list-item-content-item-heading {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\ttext-align: left;\\n background: <<colour muted-foreground>>;\\n\\ttext-transform: uppercase;\\n\\tfont-size: 0.6em;\\n\\tfont-weight: bold;\\n padding: 0.5em 0 0.5em 0;\\n}\\n\\n.tc-manager-list-item-content-item-body {\\n\\tpadding: 0 0.5em 0 0.5em;\\n}\\n\\n.tc-manager-list-item-content-item-body > pre {\\n\\tmargin: 0.5em 0 0.5em 0;\\n\\tborder: none;\\n\\tbackground: inherit;\\n}\\n\\n.tc-manager-list-item-content-tiddler {\\n flex: 3 1;\\n border-left: 0.5em solid <<colour muted-foreground>>;\\n border-right: 0.5em solid <<colour muted-foreground>>;\\n border-bottom: 0.5em solid <<colour muted-foreground>>;\\n}\\n\\n.tc-manager-list-item-content-item-body > table {\\n\\tborder: none;\\n\\tpadding: 0;\\n\\tmargin: 0;\\n}\\n\\n.tc-manager-list-item-content-item-body > table td {\\n\\tborder: none;\\n}\\n\\n.tc-manager-icon-editor > button {\\n\\twidth: 100%;\\n}\\n\\n.tc-manager-icon-editor > button > svg,\\n.tc-manager-icon-editor > button > button {\\n\\twidth: 100%;\\n\\theight: auto;\\n}\\n\\n/*\\n** Alerts\\n*/\\n\\n.tc-alerts {\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tmax-width: 500px;\\n\\tz-index: 20000;\\n}\\n\\n.tc-alert {\\n\\tposition: relative;\\n\\tmargin: 28px;\\n\\tpadding: 14px 14px 14px 14px;\\n\\tborder: 2px solid <<colour alert-border>>;\\n\\tbackground-color: <<colour alert-background>>;\\n}\\n\\n.tc-alert-toolbar {\\n\\tposition: absolute;\\n\\ttop: 14px;\\n\\tright: 14px;\\n}\\n\\n.tc-alert-toolbar svg {\\n\\tfill: <<colour alert-muted-foreground>>;\\n}\\n\\n.tc-alert-subtitle {\\n\\tcolor: <<colour alert-muted-foreground>>;\\n\\tfont-weight: bold;\\n}\\n\\n.tc-alert-highlight {\\n\\tcolor: <<colour alert-highlight>>;\\n}\\n\\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\\n\\n\\t.tc-static-alert {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t.tc-static-alert-inner {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 100;\\n\\t}\\n\\n}\\n\\n.tc-static-alert-inner {\\n\\tpadding: 0 2px 2px 42px;\\n\\tcolor: <<colour static-alert-foreground>>;\\n}\\n\\n/*\\n** Control panel\\n*/\\n\\n.tc-control-panel td {\\n\\tpadding: 4px;\\n}\\n\\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\\n\\twidth: 100%;\\n}\\n\\n.tc-plugin-info {\\n\\tdisplay: block;\\n\\tborder: 1px solid <<colour muted-foreground>>;\\n\\tbackground-colour: <<colour background>>;\\n\\tmargin: 0.5em 0 0.5em 0;\\n\\tpadding: 4px;\\n}\\n\\n.tc-plugin-info-disabled {\\n\\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\\n\\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\\n}\\n\\n.tc-plugin-info-disabled:hover {\\n\\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\\n\\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\\n}\\n\\na.tc-tiddlylink.tc-plugin-info:hover {\\n\\ttext-decoration: none;\\n\\tbackground-color: <<colour primary>>;\\n\\tcolor: <<colour background>>;\\n\\tfill: <<colour foreground>>;\\n}\\n\\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\\n\\tfill: <<colour foreground>>;\\n}\\n\\n.tc-plugin-info-chunk {\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-plugin-info-chunk h1 {\\n\\tfont-size: 1em;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk h2 {\\n\\tfont-size: 0.8em;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info-chunk div {\\n\\tfont-size: 0.7em;\\n\\tmargin: 2px 0 2px 0;\\n}\\n\\n.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tfill: <<colour foreground>>;\\n}\\n\\n.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tfill: <<colour muted-foreground>>;\\n}\\n\\n.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n}\\n\\n.tc-plugin-info-dropdown {\\n\\tborder: 1px solid <<colour muted-foreground>>;\\n\\tmargin-top: -8px;\\n}\\n\\n.tc-plugin-info-dropdown-message {\\n\\tbackground: <<colour message-background>>;\\n\\tpadding: 0.5em 1em 0.5em 1em;\\n\\tfont-weight: bold;\\n\\tfont-size: 0.8em;\\n}\\n\\n.tc-plugin-info-dropdown-body {\\n\\tpadding: 1em 1em 1em 1em;\\n}\\n\\n/*\\n** Message boxes\\n*/\\n\\n.tc-message-box {\\n\\tborder: 1px solid <<colour message-border>>;\\n\\tbackground: <<colour message-background>>;\\n\\tpadding: 0px 21px 0px 21px;\\n\\tfont-size: 12px;\\n\\tline-height: 18px;\\n\\tcolor: <<colour message-foreground>>;\\n}\\n\\n.tc-message-box svg {\\n\\twidth: 1em;\\n\\theight: 1em;\\n vertical-align: text-bottom;\\n}\\n\\n/*\\n** Pictures\\n*/\\n\\n.tc-bordered-image {\\n\\tborder: 1px solid <<colour muted-foreground>>;\\n\\tpadding: 5px;\\n\\tmargin: 5px;\\n}\\n\\n/*\\n** Floats\\n*/\\n\\n.tc-float-right {\\n\\tfloat: right;\\n}\\n\\n/*\\n** Chooser\\n*/\\n\\n.tc-chooser {\\n\\tborder: 1px solid <<colour table-border>>;\\n}\\n\\n.tc-chooser-item {\\n\\tborder: 8px;\\n\\tpadding: 2px 4px;\\n}\\n\\n.tc-chooser-item a.tc-tiddlylink {\\n\\tdisplay: block;\\n\\ttext-decoration: none;\\n\\tcolor: <<colour tiddler-link-foreground>>;\\n\\tbackground-color: <<colour tiddler-link-background>>;\\n}\\n\\n.tc-chooser-item a.tc-tiddlylink:hover {\\n\\ttext-decoration: none;\\n\\tcolor: <<colour tiddler-link-background>>;\\n\\tbackground-color: <<colour tiddler-link-foreground>>;\\n}\\n\\n/*\\n** Palette swatches\\n*/\\n\\n.tc-swatches-horiz {\\n}\\n\\n.tc-swatches-horiz .tc-swatch {\\n\\tdisplay: inline-block;\\n}\\n\\n.tc-swatch {\\n\\twidth: 2em;\\n\\theight: 2em;\\n\\tmargin: 0.4em;\\n\\tborder: 1px solid #888;\\n}\\n\\n/*\\n** Table of contents\\n*/\\n\\n.tc-sidebar-lists .tc-table-of-contents {\\n\\twhite-space: nowrap;\\n}\\n\\n.tc-table-of-contents button {\\n\\tcolor: <<colour sidebar-foreground>>;\\n}\\n\\n.tc-table-of-contents svg {\\n\\twidth: 0.7em;\\n\\theight: 0.7em;\\n\\tvertical-align: middle;\\n\\tfill: <<colour sidebar-foreground>>;\\n}\\n\\n.tc-table-of-contents ol {\\n\\tlist-style-type: none;\\n\\tpadding-left: 0;\\n}\\n\\n.tc-table-of-contents ol ol {\\n\\tpadding-left: 1em;\\n}\\n\\n.tc-table-of-contents li {\\n\\tfont-size: 1.0em;\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li a {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: normal;\\n\\tline-height: 1.4;\\n}\\n\\n.tc-table-of-contents li li a {\\n\\tfont-weight: normal;\\n}\\n\\n.tc-table-of-contents li li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: 200;\\n\\tline-height: 1.5;\\n}\\n\\n.tc-table-of-contents li li li a {\\n\\tfont-weight: bold;\\n}\\n\\n.tc-table-of-contents li li li li {\\n\\tfont-size: 0.95em;\\n\\tfont-weight: 200;\\n}\\n\\n.tc-tabbed-table-of-contents {\\n\\tdisplay: -webkit-flex;\\n\\tdisplay: flex;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents {\\n\\tz-index: 100;\\n\\tdisplay: inline-block;\\n\\tpadding-left: 1em;\\n\\tmax-width: 50%;\\n\\t-webkit-flex: 0 0 auto;\\n\\tflex: 0 0 auto;\\n\\tbackground: <<colour tab-background>>;\\n\\tborder-left: 1px solid <<colour tab-border>>;\\n\\tborder-top: 1px solid <<colour tab-border>>;\\n\\tborder-bottom: 1px solid <<colour tab-border>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\\n\\tdisplay: block;\\n\\tpadding: 0.12em 1em 0.12em 0.25em;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\\n\\tborder-top: 1px solid <<colour tab-background>>;\\n\\tborder-left: 1px solid <<colour tab-background>>;\\n\\tborder-bottom: 1px solid <<colour tab-background>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\\n\\ttext-decoration: none;\\n\\tborder-top: 1px solid <<colour tab-border>>;\\n\\tborder-left: 1px solid <<colour tab-border>>;\\n\\tborder-bottom: 1px solid <<colour tab-border>>;\\n\\tbackground: <<colour tab-border>>;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\\n\\tborder-top: 1px solid <<colour tab-border>>;\\n\\tborder-left: 1px solid <<colour tab-border>>;\\n\\tborder-bottom: 1px solid <<colour tab-border>>;\\n\\tbackground: <<colour background>>;\\n\\tmargin-right: -1px;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\\n\\ttext-decoration: none;\\n}\\n\\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\\n\\tdisplay: inline-block;\\n\\tvertical-align: top;\\n\\tpadding-left: 1.5em;\\n\\tpadding-right: 1.5em;\\n\\tborder: 1px solid <<colour tab-border>>;\\n\\t-webkit-flex: 1 0 50%;\\n\\tflex: 1 0 50%;\\n}\\n\\n/*\\n** Dirty indicator\\n*/\\n\\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\\n\\tfill: <<colour dirty-indicator>>;\\n\\tcolor: <<colour dirty-indicator>>;\\n}\\n\\n/*\\n** File inputs\\n*/\\n\\n.tc-file-input-wrapper {\\n\\tposition: relative;\\n\\toverflow: hidden;\\n\\tdisplay: inline-block;\\n\\tvertical-align: middle;\\n}\\n\\n.tc-file-input-wrapper input[type=file] {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tfont-size: 999px;\\n\\tmax-width: 100%;\\n\\tmax-height: 100%;\\n\\tfilter: alpha(opacity=0);\\n\\topacity: 0;\\n\\toutline: none;\\n\\tbackground: white;\\n\\tcursor: pointer;\\n\\tdisplay: inline-block;\\n}\\n\\n/*\\n** Thumbnail macros\\n*/\\n\\n.tc-thumbnail-wrapper {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\tmargin: 6px;\\n\\tvertical-align: top;\\n}\\n\\n.tc-thumbnail-right-wrapper {\\n\\tfloat:right;\\n\\tmargin: 0.5em 0 0.5em 0.5em;\\n}\\n\\n.tc-thumbnail-image {\\n\\ttext-align: center;\\n\\toverflow: hidden;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-thumbnail-image svg,\\n.tc-thumbnail-image img {\\n\\tfilter: alpha(opacity=1);\\n\\topacity: 1;\\n\\tmin-width: 100%;\\n\\tmin-height: 100%;\\n\\tmax-width: 100%;\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\\n\\tfilter: alpha(opacity=0.8);\\n\\topacity: 0.8;\\n}\\n\\n.tc-thumbnail-background {\\n\\tposition: absolute;\\n\\tborder-radius: 3px;\\n}\\n\\n.tc-thumbnail-icon svg,\\n.tc-thumbnail-icon img {\\n\\twidth: 3em;\\n\\theight: 3em;\\n\\t<<filter \\\"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\\\">>\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\\n\\tfill: #fff;\\n\\t<<filter \\\"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\\\">>\\n}\\n\\n.tc-thumbnail-icon {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tdisplay: -webkit-flex;\\n\\t-webkit-align-items: center;\\n\\t-webkit-justify-content: center;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n.tc-thumbnail-caption {\\n\\tposition: absolute;\\n\\tbackground-color: #777;\\n\\tcolor: #fff;\\n\\ttext-align: center;\\n\\tbottom: 0;\\n\\twidth: 100%;\\n\\tfilter: alpha(opacity=0.9);\\n\\topacity: 0.9;\\n\\tline-height: 1.4;\\n\\tborder-bottom-left-radius: 3px;\\n\\tborder-bottom-right-radius: 3px;\\n}\\n\\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\\n\\tfilter: alpha(opacity=1);\\n\\topacity: 1;\\n}\\n\\n/*\\n** Errors\\n*/\\n\\n.tc-error {\\n\\tbackground: #f00;\\n\\tcolor: #fff;\\n}\\n\\n/*\\n** Tree macro\\n*/\\n\\n.tc-tree div {\\n \\tpadding-left: 14px;\\n}\\n\\n.tc-tree ol {\\n \\tlist-style-type: none;\\n \\tpadding-left: 0;\\n \\tmargin-top: 0;\\n}\\n\\n.tc-tree ol ol {\\n \\tpadding-left: 1em; \\n}\\n\\n.tc-tree button { \\n \\tcolor: #acacac;\\n}\\n\\n.tc-tree svg {\\n \\tfill: #acacac;\\n}\\n\\n.tc-tree span svg {\\n \\twidth: 1em;\\n \\theight: 1em;\\n \\tvertical-align: baseline;\\n}\\n\\n.tc-tree li span {\\n \\tcolor: lightgray;\\n}\\n\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\",\n \"text\": \"15px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\",\n \"text\": \"22px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n \"text\": \"14px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n \"text\": \"20px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n \"text\": \"0px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/storytop\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n \"text\": \"0px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/storyright\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n \"text\": \"770px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n \"text\": \"770px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\",\n \"text\": \"686px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\",\n \"text\": \"960px\"\n },\n \"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\",\n \"text\": \"350px\"\n },\n \"$:/themes/tiddlywiki/vanilla/options/stickytitles\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/options/stickytitles\",\n \"text\": \"no\"\n },\n \"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\",\n \"text\": \"fixed-fluid\"\n },\n \"$:/themes/tiddlywiki/vanilla/options/codewrapping\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/options/codewrapping\",\n \"text\": \"pre-wrap\"\n },\n \"$:/themes/tiddlywiki/vanilla/reset\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/reset\",\n \"type\": \"text/plain\",\n \"text\": \"/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\\n\\n/**\\n * 1. Set default font family to sans-serif.\\n * 2. Prevent iOS text size adjust after orientation change, without disabling\\n * user zoom.\\n */\\n\\nhtml {\\n font-family: sans-serif; /* 1 */\\n -ms-text-size-adjust: 100%; /* 2 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n}\\n\\n/**\\n * Remove default margin.\\n */\\n\\nbody {\\n margin: 0;\\n}\\n\\n/* HTML5 display definitions\\n ========================================================================== */\\n\\n/**\\n * Correct `block` display not defined in IE 8/9.\\n */\\n\\narticle,\\naside,\\ndetails,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmain,\\nnav,\\nsection,\\nsummary {\\n display: block;\\n}\\n\\n/**\\n * 1. Correct `inline-block` display not defined in IE 8/9.\\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\\n */\\n\\naudio,\\ncanvas,\\nprogress,\\nvideo {\\n display: inline-block; /* 1 */\\n vertical-align: baseline; /* 2 */\\n}\\n\\n/**\\n * Prevent modern browsers from displaying `audio` without controls.\\n * Remove excess height in iOS 5 devices.\\n */\\n\\naudio:not([controls]) {\\n display: none;\\n height: 0;\\n}\\n\\n/**\\n * Address `[hidden]` styling not present in IE 8/9.\\n * Hide the `template` element in IE, Safari, and Firefox < 22.\\n */\\n\\n[hidden],\\ntemplate {\\n display: none;\\n}\\n\\n/* Links\\n ========================================================================== */\\n\\n/**\\n * Remove the gray background color from active links in IE 10.\\n */\\n\\na {\\n background: transparent;\\n}\\n\\n/**\\n * Improve readability when focused and also mouse hovered in all browsers.\\n */\\n\\na:active,\\na:hover {\\n outline: 0;\\n}\\n\\n/* Text-level semantics\\n ========================================================================== */\\n\\n/**\\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\\n */\\n\\nabbr[title] {\\n border-bottom: 1px dotted;\\n}\\n\\n/**\\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\\n */\\n\\nb,\\nstrong {\\n font-weight: bold;\\n}\\n\\n/**\\n * Address styling not present in Safari 5 and Chrome.\\n */\\n\\ndfn {\\n font-style: italic;\\n}\\n\\n/**\\n * Address variable `h1` font-size and margin within `section` and `article`\\n * contexts in Firefox 4+, Safari 5, and Chrome.\\n */\\n\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n\\n/**\\n * Address styling not present in IE 8/9.\\n */\\n\\nmark {\\n background: #ff0;\\n color: #000;\\n}\\n\\n/**\\n * Address inconsistent and variable font size in all browsers.\\n */\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\\n */\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\n/* Embedded content\\n ========================================================================== */\\n\\n/**\\n * Remove border when inside `a` element in IE 8/9.\\n */\\n\\nimg {\\n border: 0;\\n}\\n\\n/**\\n * Correct overflow displayed oddly in IE 9.\\n */\\n\\nsvg:not(:root) {\\n overflow: hidden;\\n}\\n\\n/* Grouping content\\n ========================================================================== */\\n\\n/**\\n * Address margin not present in IE 8/9 and Safari 5.\\n */\\n\\nfigure {\\n margin: 1em 40px;\\n}\\n\\n/**\\n * Address differences between Firefox and other browsers.\\n */\\n\\nhr {\\n -moz-box-sizing: content-box;\\n box-sizing: content-box;\\n height: 0;\\n}\\n\\n/**\\n * Contain overflow in all browsers.\\n */\\n\\npre {\\n overflow: auto;\\n}\\n\\n/**\\n * Address odd `em`-unit font size rendering in all browsers.\\n */\\n\\ncode,\\nkbd,\\npre,\\nsamp {\\n font-family: monospace, monospace;\\n font-size: 1em;\\n}\\n\\n/* Forms\\n ========================================================================== */\\n\\n/**\\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\\n * styling of `select`, unless a `border` property is set.\\n */\\n\\n/**\\n * 1. Correct color not being inherited.\\n * Known issue: affects color of disabled elements.\\n * 2. Correct font properties not being inherited.\\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\\n */\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n color: inherit; /* 1 */\\n font: inherit; /* 2 */\\n margin: 0; /* 3 */\\n}\\n\\n/**\\n * Address `overflow` set to `hidden` in IE 8/9/10.\\n */\\n\\nbutton {\\n overflow: visible;\\n}\\n\\n/**\\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\\n * All other form control elements do not inherit `text-transform` values.\\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\\n * Correct `select` style inheritance in Firefox.\\n */\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\n/**\\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\\n * and `video` controls.\\n * 2. Correct inability to style clickable `input` types in iOS.\\n * 3. Improve usability and consistency of cursor style between image-type\\n * `input` and others.\\n */\\n\\nbutton,\\nhtml input[type=\\\"button\\\"], /* 1 */\\ninput[type=\\\"reset\\\"],\\ninput[type=\\\"submit\\\"] {\\n -webkit-appearance: button; /* 2 */\\n cursor: pointer; /* 3 */\\n}\\n\\n/**\\n * Re-set default cursor for disabled elements.\\n */\\n\\nbutton[disabled],\\nhtml input[disabled] {\\n cursor: default;\\n}\\n\\n/**\\n * Remove inner padding and border in Firefox 4+.\\n */\\n\\nbutton::-moz-focus-inner,\\ninput::-moz-focus-inner {\\n border: 0;\\n padding: 0;\\n}\\n\\n/**\\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\\n * the UA stylesheet.\\n */\\n\\ninput {\\n line-height: normal;\\n}\\n\\n/**\\n * It's recommended that you don't attempt to style these elements.\\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\\n *\\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\\n * 2. Remove excess padding in IE 8/9/10.\\n */\\n\\ninput[type=\\\"checkbox\\\"],\\ninput[type=\\\"radio\\\"] {\\n box-sizing: border-box; /* 1 */\\n padding: 0; /* 2 */\\n}\\n\\n/**\\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\\n * `font-size` values of the `input`, it causes the cursor style of the\\n * decrement button to change from `default` to `text`.\\n */\\n\\ninput[type=\\\"number\\\"]::-webkit-inner-spin-button,\\ninput[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\\n * (include `-moz` to future-proof).\\n */\\n\\ninput[type=\\\"search\\\"] {\\n -webkit-appearance: textfield; /* 1 */\\n -moz-box-sizing: content-box;\\n -webkit-box-sizing: content-box; /* 2 */\\n box-sizing: content-box;\\n}\\n\\n/**\\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\\n * Safari (but not Chrome) clips the cancel button when the search input has\\n * padding (and `textfield` appearance).\\n */\\n\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button,\\ninput[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/**\\n * Define consistent border, margin, and padding.\\n */\\n\\nfieldset {\\n border: 1px solid #c0c0c0;\\n margin: 0 2px;\\n padding: 0.35em 0.625em 0.75em;\\n}\\n\\n/**\\n * 1. Correct `color` not being inherited in IE 8/9.\\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\\n */\\n\\nlegend {\\n border: 0; /* 1 */\\n padding: 0; /* 2 */\\n}\\n\\n/**\\n * Remove default vertical scrollbar in IE 8/9.\\n */\\n\\ntextarea {\\n overflow: auto;\\n}\\n\\n/**\\n * Don't inherit the `font-weight` (applied by a rule above).\\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\\n */\\n\\noptgroup {\\n font-weight: bold;\\n}\\n\\n/* Tables\\n ========================================================================== */\\n\\n/**\\n * Remove most spacing between table cells.\\n */\\n\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\\ntd,\\nth {\\n padding: 0;\\n}\\n\"\n },\n \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\",\n \"text\": \"\\\"Helvetica Neue\\\", Helvetica, Arial, \\\"Lucida Grande\\\", \\\"DejaVu Sans\\\", sans-serif\"\n },\n \"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\",\n \"text\": \"Monaco, Consolas, \\\"Lucida Console\\\", \\\"DejaVu Sans Mono\\\", monospace\"\n },\n \"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\",\n \"text\": \"fixed\"\n },\n \"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\",\n \"text\": \"auto\"\n },\n \"$:/themes/tiddlywiki/vanilla/sticky\": {\n \"title\": \"$:/themes/tiddlywiki/vanilla/sticky\",\n \"text\": \"<$reveal state=\\\"$:/themes/tiddlywiki/vanilla/options/stickytitles\\\" type=\\\"match\\\" text=\\\"yes\\\">\\n``\\n.tc-tiddler-title {\\n\\tposition: -webkit-sticky;\\n\\tposition: -moz-sticky;\\n\\tposition: -o-sticky;\\n\\tposition: -ms-sticky;\\n\\tposition: sticky;\\n\\ttop: 0px;\\n\\tbackground: ``<<colour tiddler-background>>``;\\n\\tz-index: 500;\\n}\\n``\\n</$reveal>\\n\"\n }\n }\n}",
"version": "5.1.15",
"type": "application/json",
"title": "$:/themes/tiddlywiki/vanilla",
"plugin-type": "theme",
"name": "Vanilla",
"description": "Basic theme",
"dependents": "",
"core-version": ">=5.0.0",
"author": "JeremyRuston"
},
"$:/themes/tiddlywiki/vanilla/base": {
"text": "",
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "$:/tagremoved/Stylesheet",
"modified": "20171215070431949",
"created": "20171215070431949"
},
"$:/themes/telmiger/bricks-004/themetweaks": {
"created": "20180115165842484",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n!! Bricks: <<lingo Settings>>\n\n|<$link to=\"$:/themes/telmiger/bricks/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/telmiger/bricks/metrics/fontsize\" default=\"\" tag=\"input\"/> | default: 12pt |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n\n{{$:/plugins/telmiger/bricks/paletteeditor}}",
"title": "$:/themes/telmiger/bricks-004/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"modifier": "Thomas Elmiger",
"modified": "20180130182849607",
"creator": "Thomas Elmiger",
"caption": "Bricks Tweaks"
},
"$:/themes/telmiger/bricks-004/icon": {
"created": "20170224212130411",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64.003\" height=\"64.003\" viewBox=\"-500.5 395.5 64.003 64.003\"><path d=\"M-468.5 396.5l26.426 15.5v31l-26.425 15.5-26.426-15.5v-31l26.427-15.5z\"/><path fill=\"#FFF\" d=\"M-485.996 419.088h34.99v16.824h-34.99z\"/><path fill=\"#E2001A\" d=\"M-468.5 405.5c-12.15 0-22 9.85-22 22s9.85 22 22 22 22-9.85 22-22-9.85-22-22-22zm13.11 21.637c-1.022.682-2.674 1.023-4.954 1.023h-2.838c-1.505 0-2.598.3-3.28.9-.68.6-1.22 1.804-1.622 3.615 0 0-.063.526-.178.526s-.13-.31-.184-.562c-.056-.263-.14-.59-.256-.977-.224-.758-.447-1.332-.67-1.72-.27-.482-.613-.87-1.024-1.165-.412-.294-.883-.47-1.413-.528l-.74-.088h-3.637c-2.178 0-3.796-.343-4.855-1.024-1.764-1.12-2.71-3.24-2.842-6.357-.01-.25 0-.48.047-.772h.208c.142 1.41 1.304 2.502 2.158 3.274.853.77 2.222 1.155 4.104 1.155h3.3c1.896 0 3.28.436 4.158 1.306.79.786 1.31 2.017 1.56 3.69.028.183.012.263.064.263.053 0 .04-.09.06-.278.253-2.173 1.094-3.627 2.522-4.363.88-.46 2.28-.676 4.196-.652l2.257.035c1.527.023 2.814-.278 3.86-.908 1.046-.63 2.285-1.803 2.425-3.52h.21c.065.17.057.56.045.828-.13 3.105-1.023 5.206-2.68 6.3z\"/></svg>",
"type": "image/svg+xml",
"title": "$:/themes/telmiger/bricks-004/icon",
"tags": "",
"modified": "20180130183129726"
},
"$:/themes/telmiger/bricks/frozen-004.css": {
"created": "20180129222846381",
"text": "/* ** $:/themes/telmiger/bricks/000-base.css ** */\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock html { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } html, body, div, article, section, main, footer, header, form, fieldset, legend, pre, code, p, a, h1, h2, h3, h4, h5, h6, ul, ol, li, dl, dt, dd, textarea, input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"search\"], input[type=\"tel\"], input[type=\"text\"], input[type=\"url\"], .border-box { box-sizing: border-box; max-width: 100%; } html { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } html:-webkit-full-screen { background-color: rgb(26, 26, 26); } body { line-height: 1.5; font-family: 'helvetica neue', helvetica, sans-serif; -moz-tab-size: 3; tab-size: 3; } body.tc-body { word-wrap: break-word; overflow-wrap: break-word; color: rgb(179, 179, 179); fill: rgb(179, 179, 179); background-color: rgb(26, 26, 26); } a { overflow-wrap: break-word; word-wrap: break-word; display: inline-block; vertical-align: top; } @media (min-width: 28rem) { a { display: unset; vertical-align: unset; } } .te-list .te-flex-item a.tc-tiddlylink-resolves { word-break: break-all; } @media (min-width: 28rem) { .te-list .te-flex-item a.tc-tiddlylink-resolves { word-break: inherit; } } pre { overflow-x: auto; overflow-y: hidden; overflow: scroll; } pre, code { font-family: monaco, Consolas, monospace; border-radius: .25rem; white-space: pre-wrap; } pre { display: block; word-break: normal; word-wrap: break-word; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; border-style: solid; border-width: 1px; border-color: rgba(0,0,0,.2); background-color: rgb(25, 25, 25); } code { padding-left: .25rem; padding-right: .25rem; border-style: solid; border-width: 1px; border-color: rgba(0,0,0,0.08); color: rgb(255, 94, 94); background-color: rgba(0,0,0,0.03); } pre > code { border-style: none; border-width: 0; padding: 0; background-color: transparent; color: inherit; } dl dt { font-weight: bold; margin-top: 6px; } hr { height: 1px; margin-top: 2rem; margin-bottom: 2rem; border: none; background-color: rgb(255, 201, 102); } .tc-drop-down hr { margin-bottom: 0.5em; margin-top: 0.5em; } .tc-float-right { float: right; } .tc-muted { color: rgb(255, 255, 255); } .tc-icon-wrapper > svg, .tc-image-button, .tc-image-button svg { height: 1em; width: 1em; } .tc-tiddler-frame img, .tc-tiddler-frame svg, .tc-tiddler-frame canvas, .tc-tiddler-frame embed, .tc-tiddler-frame iframe { max-width: 100%; } .tc-tiddler-body > embed, .tc-tiddler-body > iframe { width: 100%; height: 600px; } .tc-file-input-wrapper { position: relative; overflow: hidden; display: inline-block; vertical-align: middle; } .tc-file-input-wrapper input[type=file] { position: absolute; top: 0; left: 0; right: 0; bottom: 0; font-size: 999px; max-width: 100%; max-height: 100%; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: pointer; display: inline-block; } .tc-droppable > .tc-droppable-placeholder { display: none; }\n\n/* ** $:/themes/telmiger/bricks/001-page.css ** */\n\nbody { margin: 0; } .tc-page-container { width: 100%; padding-top: 1rem; padding-bottom: 1rem; } .tc-story-river { position: relative; padding: 0; } @media (min-width: 28rem) { .tc-story-river { padding: 1rem; } } @media (min-width: 42rem) { .tc-story-river { padding: 2rem; } } @media (min-width: 77rem) { .tc-story-river { padding-right: 1rem; margin-right: 26rem; margin-left: auto; display: flex; flex-wrap: wrap; } } .tc-sidebar-header .tc-site-title { margin: 0; margin-top: 2rem; } .tc-site-subtitle { margin-bottom: 2rem; } .tc-sidebar-scrollable { position: fixed; top: 0; right: 0; bottom: auto; left: 15%; z-index: 400; width: auto; max-width: 100%; max-height: 100%; animation: inherit; box-shadow: -4px 4px 8px 0px rgba( 0, 0, 0, 0.4 ); } .tc-sidebar-header { margin-top: 0; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; } .tc-sidebar-header > .tc-reveal { width: calc(26rem - 3rem); max-width: 100%; padding-top: .5rem; padding-bottom: 2rem; padding-left: 1rem; margin-bottom: 2rem; } @media (min-width: 28rem) { .tc-sidebar-scrollable { bottom: 0; left: auto; } .tc-sidebar-header > .tc-reveal { width: 100%; padding-top: 1rem; padding-bottom: 2rem; padding-left: 1rem; margin-left: 1rem; } } @media (min-width: 42rem) { html[dir=\"rtl\"] .tc-sidebar-scrollable { left: auto; right: auto; } .tc-sidebar-header > .tc-reveal { width: 26rem; } .tc-sidebar-lists .tc-tab-set { margin-right: .5rem; } .tc-tiddler-frame { margin-right: calc(66vw - 26rem); } } @media (min-width: 77rem) { .tc-sidebar-scrollable { box-shadow: none; left: auto; } .tc-sidebar-header > .tc-reveal { padding-bottom: 4rem; margin-bottom: 4rem; } .tc-tiddler-frame { margin-right: .5rem; margin-left: auto; } }\n\n/* ** $:/themes/telmiger/bricks/010-fonts.css ** */\n\n.tc-site-title, .tc-site-title a.tc-tiddlylink-resolves { font-weight: 500; font-size: 2.25rem; font-variant: small-caps; color: rgb(255, 201, 102); } .tc-subtitle { font-size: .875rem; font-weight: 300; color: rgb(255, 255, 255); } .tc-tiddler-controls { font-size: 2.25rem; } .tc-tiddler-controls .tc-drop-down, .tc-tiddler-controls .tc-drop-down .tc-drop-down { font-size: 1.25rem; } .tc-titlebar { font-weight: 300; color: rgb(255, 192, 76); } .tc-tiddler-missing .tc-title { font-style: italic; font-weight: normal; } .tc-titlebar .tc-title, .tc-tiddler-title-icon { font-weight: 300; font-size: 1.5rem; line-height: 1.25; vertical-align: bottom; } .tc-system-title-prefix,.tc-tiddler-title-icon svg { color: rgb(255, 255, 255); fill: rgba(240, 196, 117, 0.7); } .tc-titlebar.tc-edit-texteditor { font-size: 1.5rem; line-height: 1.25; } h1, h2, h3, h4, h5, h6 { margin-top: 0; line-height: 1.25; } .tc-tiddler-body h1 { font-size: 1.875rem; margin-bottom: 2rem; } .tc-tiddler-body h2 { font-size: 1.5rem; margin-bottom: 2rem; } .tc-tiddler-body h3 { font-size: 1.25rem; margin-bottom: 1rem; } .tc-tiddler-body h4 { font-size: 1rem; margin-bottom: 1rem; } .tc-tiddler-body h5 { font-size: .875rem; margin-bottom: 1rem; font-family: georgia, times, serif; } .tc-tiddler-body h6 { font-size: .75rem; margin-bottom: .5rem; font-family: georgia, times, serif; } .tc-tiddler-body * + h1, section > h1:first-child { margin-top: 4rem; } .tc-tiddler-body *:not(h1) + h2, section > h2:first-child { margin-top: 4rem; } .tc-tiddler-body *:not(h2) + h3, section > h3:first-child { margin-top: 2rem; } .tc-tiddler-body *:not(h3) + h4, section > h4:first-child { margin-top: 2rem; } .tc-tiddler-body *:not(h4) + h5, section > h5:first-child { margin-top: 2rem; } .tc-tiddler-body *:not(h5) + h6, section > h6:first-child { margin-top: 2rem; } p { font-size: 1rem; line-height: 1.5; margin-top: 0; margin-bottom: .5rem; } @media (min-width: 28rem) { .tc-tiddler-body h1 { font-size: 2.25rem; } } @media (min-width: 42rem) { .tc-titlebar .tc-title, .tc-tiddler-title-icon { font-size: 2.25rem; vertical-align: baseline; } .tc-tiddler-title-icon { vertical-align: text-top; } .tc-tiddler-body h1 { font-size: 3rem; } .tc-tiddler-body h2 { font-size: 2.25rem; } .tc-tiddler-body h3 { font-size: 1.5rem; } .tc-tiddler-body h4 { font-size: 1.25rem; } .tc-tiddler-body h5 { font-size: 1rem; } .tc-tiddler-body h6 { font-size: .875rem; } } .tc-menu-list-count { font-weight: bold; } .tc-menu-list-subitem { padding-left: .5rem; } pre, code { font-family: Monaco, Consolas, \"Lucida Console\", \"DejaVu Sans Mono\", monospace; }\n\n/* ** $:/themes/telmiger/bricks/components/chooser.css ** */\n\n.tc-chooser { padding: 0; border-bottom-style: solid; border-bottom-width: 1px; border-color: rgb(204, 204, 255); } .tc-chooser-item { line-height: 1; border-top-style: solid; border-top-width: 1px; border-color: rgb(204, 204, 255); } .tc-chooser-item a.tc-tiddlylink { display: block; padding-top: .5rem; padding-bottom: .5rem; width: 100%; height: 100%; text-decoration: none; font-weight: 400; color: rgb(204, 204, 255); background-color: rgb(38, 38, 38); } .tc-chooser-item a.tc-tiddlylink.tc-tiddlylink-resolves { font-weight: 300; background-color: rgba(0,0,0,.1); } .tc-chooser-item a.tc-tiddlylink:hover { text-decoration: none; color: rgb(38, 38, 38); background-color: rgb(204, 204, 255); } .tc-chooser-item a.tc-tiddlylink > div { display: inline-block; vertical-align: bottom; } .tc-chooser-item a.tc-tiddlylink > div:first-child { width: 97%; padding-left: 3em; text-indent: -2.5em; padding-bottom: .5rem; } .tc-chooser-item a.tc-tiddlylink > div:first-child > span:first-child { display: inline-block; width: .6em; height: .6em; text-align: center; vertical-align: top; position: relative; top: .15rem; left: -.25em; text-indent: 0; font-variant: super; font-stretch: condensed; border-style: solid; border-width: 1px; border-color: rgb(255, 201, 102); color: rgb(179, 179, 179); background-color: rgb(38, 38, 38); } .tc-image-chooser, .tc-colour-chooser { white-space: normal; } .tc-swatches-horiz { width: 97%; text-align: right; } .tc-swatches-horiz .tc-swatch { display: inline-block; } .tc-swatch { width: 2rem; height: 2rem; margin-right: .25rem; border-style: solid; border-width: 1px; border-color: #888; } @media (min-width: 42rem) { .tc-chooser-item a.tc-tiddlylink > div:first-child { margin-right: 1rem; width: calc(100% - 22rem); min-width: 20rem; } .tc-swatches-horiz { width: 20.75rem; } .tc-swatch { margin-right: .5rem; } } .tc-image-chooser a, .tc-colour-chooser a { display: inline-block; vertical-align: top; text-align: center; position: relative; } .tc-image-chooser a { padding: 2px; margin: 2px; width: 4em; height: 4em; border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); } .tc-colour-chooser a { padding: 3px; width: 2em; height: 2em; vertical-align: middle; } .tc-image-chooser a:hover, .tc-colour-chooser a:hover { padding: 0; border-width: .125rem; border-style: solid; border-color: rgb(255, 201, 102); background: rgb(255, 201, 102); } .tc-image-chooser a svg, .tc-image-chooser a img { display: inline-block; width: auto; height: auto; max-width: 3.5em; max-height: 3.5em; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; } .tc-drop-down-language-chooser img { width: 2em; vertical-align: baseline; } .tc-drop-down .tc-chooser { border: none; } .tc-drop-down .tc-chooser .tc-swatches-horiz { font-size: 0.4em; padding-left: 1.2em; }\n\n/* ** $:/themes/telmiger/bricks/components/control-panel.css ** */\n\n.tc-control-panel table { width: 100%; } .tc-control-panel table input, .tc-control-panel table textarea { padding-left: .5rem; padding-right: .5rem; } .tc-control-panel td input + br { position: absolute; } .tc-control-panel td input + br + input[type=color] { margin-top: .25rem; vertical-align: bottom; } kbd { display: inline-block; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; font-size: 0.8em; line-height: 1.2; vertical-align: middle; border-radius: .125rem; box-shadow: inset 0 -1px 0 rgb(255, 255, 255); border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); color: rgb(179, 179, 179); background-color: rgb(38, 38, 38); }\n\n/* ** $:/themes/telmiger/bricks/components/dropdown.css ** */\n\n.tc-btn-dropdown { text-align: left; } .tc-btn-dropdown svg, .tc-btn-dropdown img { height: 1em; width: 1em; } .tc-drop-down-wrapper { position: relative; } .tc-drop-down { width: 22rem; border-style: solid; border-width: 1px; padding: .5rem; border-radius: .125rem; margin-top: .25rem; line-height: 1.5; text-shadow: none; border-color: rgb(255, 255, 255); background-color: rgb(38, 38, 38); } .tc-drop-down .tc-drop-down { margin-left: 1rem; } .tc-drop-down p { padding-left: .25rem; padding-right: .25rem; } .tc-drop-down svg { fill: rgb(255, 255, 255); height: 1em; width: 1em; margin-right: .5rem; } .tc-drop-down img { width: 1em; margin-right: .5rem; } .tc-drop-down .tc-prompt { padding-left: 1rem; padding-right: 1rem; } .tc-drop-down a, .tc-drop-down button { display: block; padding-left: 1rem; padding-right: 1rem; width: 100%; text-align: left; line-height: 1.4; color: rgb(179, 179, 179); } .tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button { color: rgb(38, 38, 38); background-color: rgb(204, 204, 255); text-decoration: none; } .tc-drop-down button svg.tc-image-button, .tc-drop-down a svg.tc-image-button { fill: rgb(179, 179, 179); } .tc-drop-down button.tc-btn-invisible:hover svg.tc-image-button { fill: rgb(38, 38, 38); } .tc-drop-down .tc-file-input-wrapper { width: 100%; } .tc-drop-down .tc-file-input-wrapper button { color: rgb(179, 179, 179); } .tc-block-dropdown-wrapper { position: relative; } .tc-block-dropdown { position: absolute; min-width: 220px; border-radius: .25rem; font-size: .875rem; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-left: .5rem; z-index: 1000; text-shadow: none; border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); background-color: rgb(38, 38, 38); } .tc-block-dropdown a { display: block; padding-top: .25rem; padding-bottom: .25rem; } .tc-block-dropdown a:hover { color: rgb(38, 38, 38); background-color: rgb(255, 255, 158); text-decoration: none; } .tc-drop-down .tc-dropdown-item, .tc-block-dropdown .tc-dropdown-item { color: rgb(255, 255, 255); } .tc-drop-down .tc-dropdown-item-plain, .tc-block-dropdown .tc-dropdown-item-plain .tc-drop-down .tc-dropdown-item, .tc-block-dropdown .tc-dropdown-item { padding-top: .25rem; padding-bottom: .25rem; padding-right: 1rem; padding-left: .5rem; }\n\n/* ** $:/themes/telmiger/bricks/components/forms.css ** */\n\ntextarea, input[type=text], input[type=search], input[type=\"\"], input:not([type]) { -webkit-appearance: none; -moz-appearance: none; font-size: 1rem; padding-left: .25rem; padding-right: .25rem; padding-bottom: .25rem; color: rgb(179, 179, 179); border-style: solid; border-width: 1px; border-color: rgb(63, 63, 63); background: rgb(38, 38, 38); } textarea:focus, input[type=text]:focus, input[type=search]:focus, input[type=\"\"]:focus, input:not([type]):focus { background: rgb(43, 43, 43); } td textarea, td input[type=text], td input[type=search], td input[type=\"\"], td input:not([type]) { width: 100%; max-width: calc(100% - .5rem); }\n\n/* ** $:/themes/telmiger/bricks/components/messages.css ** */\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg { fill: rgb(255, 94, 94); color: rgb(255, 94, 94); } .tc-error { background: #f00; color: #fff; } .tc-body .tc-error-form { color: #fff; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); background-color: rgb(255, 75, 75); border: 8px solid rgb(255, 0, 0); margin-left: -33vw; width: 66vw; max-height: 80vh; overflow-y: scroll; } .tc-alerts { position: fixed; top: 0; left: 0; max-width: 500px; z-index: 20000; } .tc-alert { position: relative; margin: 2rem; padding: 1rem; border-style: solid; border-width: 1px; border-width: .25rem; border-color: rgb(232, 232, 125); background-color: rgb(255, 255, 102); } .tc-alert-toolbar { position: absolute; top: .5rem; right: .5rem; } .tc-alert-toolbar svg { fill: rgb(224, 82, 82); } .tc-alert-subtitle { color: rgb(224, 82, 82); font-weight: bold; } .tc-alert-highlight { color: rgb(255, 51, 51); } @media (min-width: 77rem) { .tc-static-alert { position: relative; } .tc-static-alert-inner { position: absolute; z-index: 100; } } .tc-static-alert-inner { padding: 0 .125rem .125rem 4rem; color: rgba(0,0,0,.3); } .tc-message-box { font-size: 1rem; line-height: 1.5; color: #00449e; padding-top: 1rem; padding-left: 1rem; padding-right: 1rem; padding-bottom: .5rem; margin-left: -1rem; margin-right: -1rem; margin-bottom: 1rem; max-width: calc(100% + 2rem); border-style: solid; border-width: 1px; border-color: #96ccff; background: #cdecff; } .tc-message-box svg { height: 1em; width: 1em; vertical-align: text-bottom; } .tc-notification { position: fixed; top: 1rem; right: 2rem; min-width: 12rem; max-width: 24rem; padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; z-index: 1300; border-style: solid; border-width: 1px; border-radius: .25rem; color: rgba(51, 51, 51, 0.9); border-color: rgba(51, 51, 51, 0.9); background-color: rgb(230, 230, 230); } .tc-plugin-reload-warning { position: fixed; top: 0; right: 0; left: 0; padding-top: .5rem; background: rgb(255, 255, 102); text-align: center; z-index: 1300; } .tc-plugin-reload-warning button.tc-btn-invisible { position: relative; margin-left: 2rem; }\n\n/* ** $:/themes/telmiger/bricks/components/modal.css ** */\n\n.tc-modal-wrapper { position: fixed; overflow: auto; overflow-y: scroll; top: 0; right: 0; bottom: 0; left: 0; z-index: 1300; } .tc-modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; background-color: rgb(179, 179, 179); } .tc-modal { position: fixed; top: 1rem; left: 1rem; right: 1rem; border-style: solid; border-width: 1px; border-radius: .25rem; border-color: rgba(0,0,0,.5); background-color: rgb(38, 38, 38); } .tc-modal-header { padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; border-bottom-style: solid; border-bottom-width: 1px; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-color: rgba(0,0,0,.1); background-color: #f4f4f4; } .tc-modal-header h3 { margin: 0; line-height: 30px; } .tc-modal-header img, .tc-modal-header svg { height: 1em; width: 1em; } .tc-modal-body { overflow-y: auto; max-height: 60vh; padding: 1rem; } .tc-modal-footer { text-align: right; padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; margin-bottom: 0; border-top-style: solid; border-top-width: 1px; border-radius: .25rem; border-top-left-radius: 0; border-top-right-radius: 0; border-top-color: rgba(0,0,0,.1); background-color: #f4f4f4; } @media (min-width: 42rem) { .tc-modal { top: 4rem; right: 20%; left: auto; width: 60%; } } @media (min-width: 77rem) { .tc-modal { top: 8rem; right: 25%; left: auto; width: 50%; border-radius: .5rem; } .tc-modal-header { padding-left: 2rem; padding-right: 2rem; border-radius: .5rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .tc-modal-body { padding: 2rem; } .tc-modal-footer { padding-left: 2rem; padding-right: 2rem; border-radius: .5rem; border-top-left-radius: 0; border-top-right-radius: 0; } }\n\n/* ** $:/themes/telmiger/bricks/components/plugin-info.css ** */\n\n.tc-tiddler-body:empty + span.tc-reveal { flex-basis: 100%; order: 110; } .tc-tiddler-body:empty + span + span.tc-reveal { flex-basis: 100%; order: 111; } .tc-tiddler-body:empty + span + span + span.tc-reveal { flex-basis: 100%; order: 112; } .tc-plugin-info { display: block; border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); margin-bottom: 1rem; padding: .25rem; background-colour: rgb(38, 38, 38); } .tc-plugin-info-disabled { background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px); background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px); } .tc-plugin-info-disabled:hover { background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px); background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px); } a.tc-tiddlylink.tc-plugin-info:hover { text-decoration: none; background-color: rgb(255, 201, 102); color: rgb(38, 38, 38); fill: rgb(179, 179, 179); } a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg { fill: rgb(179, 179, 179); } .tc-plugin-info-chunk { display: inline-block; vertical-align: middle; } .tc-plugin-info .tc-plugin-info-chunk h1 { font-size: 1rem; margin-top: .25rem; margin-bottom: .25rem; } .tc-plugin-info .tc-plugin-info-chunk h2 { font-size: .875rem; margin-top: 0; margin-bottom: .25rem; } .tc-plugin-info .tc-plugin-info-chunk h2 div { font-size: .875rem; margin-bottom: .25rem; } .tc-plugin-info .tc-btn-dropdown { margin-left: .5rem; margin-right: .5rem; } .tc-plugin-info:hover .tc-btn-dropdown svg { fill: rgb(38, 38, 38); } .tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg { width: 2em; height: 2em; fill: rgb(255, 255, 255); padding-right: 1rem; } .tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg { width: 2em; height: 2em; fill: rgb(179, 179, 179); } .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg { height: 1em; width: 1em; } .tc-plugin-info-dropdown { margin-top: -1rem; border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); } .tc-control-panel .tc-plugin-info-dropdown { margin-bottom: 1rem; } .tc-plugin-info-dropdown-message { background: #cdecff; padding-top: 1rem; padding-bottom: 1rem; padding-left: 2rem; padding-right: 2rem; font-size: 2.25rem; font-weight: bold; } .tc-plugin-info-dropdown-body { padding: 1rem; }\n\n/* ** $:/themes/telmiger/bricks/components/search.css ** */\n\n.tc-search a svg { width: 1.2em; height: 1.2em; vertical-align: middle; } .tc-search button:hover svg, .tc-search a:hover svg { fill: rgb(230, 230, 230); } .tc-search button svg, .tc-search a svg { padding-left: .25rem; padding-right: .25rem; } .tc-search + .tc-block-dropdown-wrapper { margin-left: -1rem; } .tc-block-dropdown.tc-search-drop-down { position: relative; padding-left: .5rem; padding-right: .5rem; margin-right: 1rem; max-width: 100%; } .tc-search-drop-down .tc-search-results a.tc-tiddlylink { padding-top: .125rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; width: 100%; } .tc-search-drop-down .tc-search-results a.tc-tiddlylink:hover { color: rgb(38, 38, 38); } .tc-advanced-search input { width: calc( 100% / 1.5 ); margin-right: .5rem; } .tc-advanced-search .tc-search button { border-radius: .25rem; border-style: none; border-width: 0; padding-top: .25rem; padding-bottom: .25rem; min-width: 2rem; text-decoration: none; font-weight: 600; } .tc-advanced-search .tc-block-dropdown-wrapper { display: flex; flex-direction: row; align-content: flex-end; position: absolute; margin-top: .25rem; left: calc(10rem - 50vw); width: calc(50vw - 10rem); max-width: 20rem; min-width: 10rem; } .tc-advanced-search .tc-block-dropdown button:hover { color: ; border-color: ; } .tc-advanced-search .tc-block-dropdown button:hover svg, .tc-advanced-search .tc-block-dropdown a:hover svg { fill: #555; } .tc-advanced-search .tc-block-dropdown-wrapper .tc-block-dropdown { right: 0; } .tc-advanced-search .tc-block-dropdown .tc-btn { margin: .5rem; border-style: solid; border-width: 1px; } .tc-advanced-search .tc-edit-type-dropdown a.tc-tiddlylink-missing { padding-left: .5rem; padding-right: .5rem; }\n\n/* ** $:/themes/telmiger/bricks/components/sidebar.css ** */\n\n.tc-sidebar-scrollable { background-color: rgb(26, 26, 26); } @media (min-width: 77rem) { .tc-sidebar-scrollable { background-color: transparent; } .tc-sidebar-header > .tc-reveal { background-color: rgb(26, 26, 26); } } .tc-page-controls { font-size: 1.5rem; line-height: 1.5; margin-bottom: 1rem; } .tc-page-controls button { margin-right: 1rem; } .tc-page-controls button.tc-selected svg { fill: rgb(141, 141, 141); } .tc-page-controls a.tc-tiddlylink:hover { text-decoration: none; } .tc-page-controls img { width: 1em; } .tc-page-controls svg { fill: rgb(153, 153, 153); } .tc-page-controls button:hover svg, .tc-page-controls a:hover svg { fill: rgb(115, 115, 115); } @media (min-width: 42rem) { .tc-page-controls { margin-top: 2rem; margin-right: 0;\tposition: fixed; z-index: 1; right: 1rem; top: 9.66rem;; width: 40px; text-align: right; } .tc-page-controls button { margin-bottom: .5rem; margin-right: .25rem; } .tc-sidebar-lists { margin-right: 4rem; } .tc-page-controls .tc-drop-down { margin-left: -20rem; } } .tc-sidebar-scrollable input[type=search] { width: 12rem; } .tc-sidebar-header { color: rgb(141, 141, 141); fill: rgb(141, 141, 141); } .tc-sidebar-header .tc-sidebar-lists p { margin-bottom: .25rem; } .a11y-label { color: rgba(0,0,0,.3); } .tc-sidebar-lists .tc-tab-set { margin-right: .5rem; } .tc-sidebar-lists .tc-tab-content { padding-top: 1rem; } .tc-sidebar-lists .tc-tab-content p { font-size: .875rem; } .tc-sidebar-lists .tc-tab-buttons button { font-size: .875rem; margin-top: .125rem; padding-top: .125rem; padding-bottom: .125rem; background-color: rgba(141, 141, 141, 0.2); color: rgb(179, 179, 179); border-color: rgb(127, 127, 127); }\n\n.tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected) { position: relative; }\n\n.tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected)::before { background-color: rgb(26, 26, 26); content: \"\"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }\n\n.tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected):hover::before, .tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected):focus::before { opacity: .35; } .tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected { background-color: rgb(26, 26, 26); color: rgb(179, 179, 179); border-color: rgb(127, 127, 127); border-bottom-color: rgb(26, 26, 26); } .tc-sidebar-lists .tc-tab-divider { border-top-style: solid; border-top-width: 1px; border-color: rgb(127, 127, 127); } .tc-sidebar-lists .tc-tab-buttons.tc-vertical button.tc-tab-selected, .tc-sidebar-lists .tc-tab-buttons.tc-vertical button { margin-bottom: .125rem; } .tc-sidebar-lists .tc-tab-buttons.tc-vertical button { border-color: rgb(127, 127, 127); background-color: rgba(141, 141, 141, 0.2); } .tc-sidebar-lists .tc-tab-buttons.tc-vertical button.tc-tab-selected { border-color: rgb(127, 127, 127); background-color: rgb(26, 26, 26); } .tc-sidebar-lists .tc-tab-content.tc-vertical { border-color: rgb(127, 127, 127); } .tc-sidebar-lists .tc-tab-content label { width: 1.25rem; float: left; padding-top: .2rem; margin-right: .25rem; margin-left: -.25rem; } .tc-sidebar-lists .tc-tab-content div div p i { line-height: 1.25; display: inline-block; width: calc(100% - 1.5rem); margin-left: 1.5rem; } .tc-menu-list-item { margin: 0; } .tc-menu-list-item a, .tc-menu-list-item .tc-btn-invisible { padding-bottom: .25rem; } .tc-menu-list-item button { font-style: italic; }\n\n/* ** $:/themes/telmiger/bricks/components/tabs.css ** */\n\n.tc-tab-buttons { padding-top: 1rem; } .tc-tab-buttons button { font-size: .875rem; cursor: pointer; color: rgb(179, 179, 179); line-height: 1.5; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; margin-left: 0; margin-right: .25rem; font-weight: 300; background: inherit; background-color: rgba(0,0,0,0.125); border-style: solid; border-width: 1px; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-color: rgb(255, 201, 102); }\n\n.tc-tab-buttons button:not(.tc-tab-selected) { position: relative; }\n\n.tc-tab-buttons button:not(.tc-tab-selected)::before { background-color: rgb(38, 38, 38); content: \"\"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }\n\n.tc-tab-buttons button:not(.tc-tab-selected):hover::before, .tc-tab-buttons button:not(.tc-tab-selected):focus::before { opacity: .35; } .tc-sidebar-lists .tc-tab-buttons button { margin-right: .125rem; } .tc-tab-divider, .tc-sidebar-lists .tc-tab-divider { border-top-style: solid; border-top-width: 1px; height: 1px; margin-top: -1px; } .tc-tab-divider { border-color: rgb(255, 201, 102); } .tc-tab-content { padding-top: 2rem; } .tc-tab-set:not(.tc-vertical) { margin-left: -.5rem; } .tc-tab-set:not(.tc-vertical) > .tc-tab-buttons:first-of-type { margin-left: .5rem; } .tc-tab-set:not(.tc-vertical) > .tc-tab-content { padding-left: .5rem; } .tc-tab-set:not(.tc-vertical) > button { margin-top: .125rem; } .tc-tab-content.tc-vertical { display: inline-block; vertical-align: top; padding-top: 1rem; padding-left: 1rem; border-left-style: solid; border-left-width: 1px; border-color: rgb(255, 201, 102); -webkit-flex: 1 0 70%; flex: 1 0 70%; max-width: 75%; } .tc-tab-divider.tc-vertical { display: none; } .tc-tab-set.tc-vertical { display: -webkit-flex; display: flex; } .tc-tab-buttons.tc-vertical { z-index: 100; display: block; vertical-align: top; text-align: right; margin-left: 0; margin-right: -1px; max-width: 33%; -webkit-flex: 0 0 auto; flex: 0 0 auto; } .tc-tab-buttons.tc-vertical button, .tc-tab-buttons.tc-vertical button.tc-tab-selected { display: block; width: 100%; margin-top: 0; margin-right: 0; margin-bottom: .25rem; text-align: right; border-style: solid; border-width: 1px; border-right-width: 0; border-radius: .25rem; border-top-right-radius: 0; border-bottom-right-radius: 0; border-color: rgb(255, 201, 102); background-color: rgba(0,0,0,0.125); } .tc-tab-buttons button.tc-tab-selected { color: rgb(179, 179, 179); border-style: solid; border-width: 1px; border-color: rgb(255, 201, 102); background-color: rgb(38, 38, 38); border-bottom-color: rgb(38, 38, 38); } .tc-tab-buttons.tc-vertical button.tc-tab-selected { border-right-color: rgb(255, 201, 102); background-color: rgb(38, 38, 38); } .tc-tiddler-info .tc-tab-buttons button.tc-tab-selected { border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: rgb(43, 43, 43); background-color: rgb(43, 43, 43); } .tc-tab-buttons button.tc-tab-selected { cursor: default; pointer-events: none; } .tc-drop-down-bullet { display: inline-block; width: 0.5em; } .tc-drop-down .tc-tab-contents a { padding: 0 0.5em 0 0.5em; } .tc-drop-down .tc-tab-buttons button { background-color: rgba(0,0,0,.1); } .tc-drop-down .tc-tab-set .tc-tab-buttons button { display: inline-block; width: auto; margin-bottom: 0px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .tc-drop-down .tc-tab-buttons button.tc-tab-selected { border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: rgba(255,255,255,1); background-color: rgba(255,255,255,1); }\n\n/* ** $:/themes/telmiger/bricks/components/tags.css ** */\n\n.tc-tag-manager-table td { padding-top: .25rem; padding-bottom: .25rem; }\n\n.tc-tag-label { position: relative; }\n\n.tc-tag-label::before { background-color: #000; content: \"\"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; border-radius: 1rem; }\n\n.tc-tag-label:hover::before, .tc-tag-label:focus::before { opacity: .075; }\n\n.tc-edit-tags > .tc-tag-label { position: relative; }\n\n.tc-edit-tags > .tc-tag-label::before { background-color: #000; content: \"\"; position: absolute; top: 0; left: 0; width: calc(100% - 1.25rem); height: 100%; opacity: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }\n\n.tc-edit-tags > .tc-tag-label:hover::before, .tc-edit-tags > .tc-tag-label:focus::before { opacity: .075; } .tc-tags-wrapper { margin-bottom: .5rem; } .tc-tags-wrapper:empty { height: 33%; width: 4rem; border-bottom-style: solid; border-bottom-width: 1px; border-width: .25rem; border-bottom-color: rgb(255, 201, 102); } .tc-tags-wrapper:empty:before { content: \"\\00a0\"; } .tc-tag-list-item { position: relative; display: inline-block; } button.tc-tag-label, span.tc-tag-label, .tc-tab-content button.tc-tag-label.tc-untagged-label { display: inline-block; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; font-size: .75rem; font-weight: 400; color: rgb(25, 25, 25); white-space: nowrap; line-height: 1; vertical-align: baseline; background-color: rgb(255, 201, 102); border-style: none; border-width: 0; border-radius: 1rem; } .tc-untagged-separator { width: 10rem; height: 1px; left: 0; margin-left: 0; border-style: none; border-width: 0; background: rgb(127, 127, 127); } button.tc-tag-label.tc-untagged-label, .tc-tab-content button.tc-tag-label.tc-untagged-label { background-color: rgb(255, 255, 255); color: rgb(25, 25, 25); font-style: italic; } .tc-tag-label svg, .tc-tag-label img { vertical-align: text-bottom; height: 1em; width: 1em; } .tc-tag-manager-table .tc-tag-label { white-space: normal; } .tc-tag-manager-tag { width: 100%; }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler-controls.css ** */\n\n.tc-tiddler-frame .tc-tiddler-controls { float: right; font-size: 1.75rem; } .tc-tiddler-controls > span > button { vertical-align: baseline; margin-left: 1rem; } @media (min-width: 42rem) { .tc-tiddler-frame .tc-tiddler-controls { font-size: 2.25rem; } .tc-tiddler-controls > span > button { margin-left: .5rem; } } .tc-tiddler-controls button svg, .tc-tiddler-controls button img { fill: rgb(128, 128, 128); } .tc-tiddler-controls button.tc-selected svg { fill: rgb(141, 141, 141); } .tc-tiddler-controls button.tc-btn-invisible:hover svg { fill: rgb(230, 230, 230); } .tc-tiddler-controls button svg.tc-image-info-button { fill: ; } .tc-tiddler-controls button svg.tc-image-edit-button { fill: ; } .tc-tiddler-controls button svg.tc-image-close-button { fill: ; } .tc-tiddler-controls button svg.tc-image-delete-button { fill: ; } .tc-tiddler-controls button svg.tc-image-cancel-button { fill: ; } .tc-tiddler-controls button svg.tc-image-done-button { fill: ; } .tc-tiddler-controls button svg.tc-image-button { height: 0.75em; width: 0.75em; }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler-info-panel.css ** */\n\n.tc-tiddler-info { padding-top: 1rem; padding-bottom: 1rem; border-top-style: solid; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-color: rgb(25, 25, 25); background-color: rgb(43, 43, 43); } .tc-tiddler-info p { margin-top: .25rem; margin-bottom: .25rem; } .tc-tiddler-frame .tc-tiddler-info .tc-tab-set { margin-left: 0; } .tc-tiddler-info .tc-tab-content { padding-left: .5rem; padding-right: .5rem; } .tc-tiddler-info .tc-tab-content p > label { padding-bottom: 1rem; display: inline-block; } .tc-tiddler-info .tc-tab-content p > label + button, .tc-tiddler-info .tc-tab-content p > label + span > button { position: absolute; margin-left: 1rem; } .tc-tiddler-info .tc-tab-content p > label + button .tc-btn-text, .tc-tiddler-info .tc-tab-content p > label + span > button .tc-btn-text { display: none; } .tc-tiddler-info .tc-tab-content p > i { position: absolute; margin-left: 4rem; line-height: 1; max-width: 20em; } .tc-view-field-table { width: 100%; } .tc-view-field-name { width: 1%; text-align: right; font-style: italic; font-weight: 200; } .tc-view-field-value { } @media (min-width: 28rem) { .tc-tiddler-info { margin-top: 0; margin-bottom: .25rem; padding-right: 1rem; padding-left: 2rem; } .tc-tiddler-frame .tc-tiddler-info .tc-tab-set { margin-left: -1rem; margin-right: 0; } } @media (min-width: 42rem) { .tc-tiddler-info { margin-top: 0; margin-bottom: 1rem; } }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler.css ** */\n\n.tc-tiddler-frame { position: relative; padding: 1rem; margin-bottom: 2rem; border-bottom-style: solid; border-bottom-width: 1px; border-width: .5rem; border-color: rgba(240, 196, 117, 0.7); background-color: rgb(38, 38, 38); display: flex; flex-direction: row; flex-wrap: wrap; } @media (min-width: 28rem) { .tc-tiddler-frame { padding: 2rem; } } @media (min-width: 42rem) { .tc-tiddler-frame { padding-left: 2rem; padding-right: 2rem; border-radius: .125rem; } .tc-tiddler-view-frame { max-width: 54rem; } } @media (min-width: 77rem) { .tc-tiddler-frame { padding-left: 4rem; padding-right: 4rem; align-content: flex-start; height: 100%; } .tc-tiddler-view-frame { width: 54rem; } } .tc-tiddler-title { margin-bottom: 1rem; flex-basis: 100%; } .tc-tiddler-frame > .tc-reveal.tc-tiddler-body { flex-basis: 100%; order: 100; padding-top: 2rem; } .tc-titlebar .tc-title { display: inline-block; max-width: 75%; margin: .5rem; margin-left: 0; } .tc-tiddler-title-icon { vertical-align: middle; } .tc-tiddler-title-icon svg { margin-right: .25rem; } .tc-titlebar img { height: 1em; } .tc-tiddler-frame > .tc-reveal { flex-grow: 1; flex-basis: 100%; } @media (min-width: 28rem) { .tc-tiddler-frame > .tc-reveal { flex-basis: unset; } } .tc-tiddler-frame > .tc-reveal:nth-of-type(1) { order: 70; } .tc-tiddler-frame > .tc-reveal:nth-of-type(2) { order: 60; flex-grow: 2; } .tc-tiddler-frame > .tc-reveal:nth-of-type(3) { order: 50; } @media (min-width: 28rem) { .tc-subtitle { float: right; white-space: unset; } } .tc-subtitle a { color: #000; } .tc-tiddler-help { color: rgb(255, 255, 255); margin-top: .5rem; } .tc-tiddler-help a.tc-tiddlylink { color: rgba(240, 196, 117, 0.7); } .tc-titlebar, .tc-tiddler-edit-title { overflow: hidden; } html body.tc-body.tc-single-tiddler-window { margin: 1em; background: rgb(38, 38, 38); } .tc-single-tiddler-window img, .tc-single-tiddler-window svg, .tc-single-tiddler-window canvas, .tc-single-tiddler-window embed, .tc-single-tiddler-window iframe { max-width: 100%; }\n\n/* ** $:/themes/telmiger/bricks/components/topbar.css ** */\n\n.tc-topbar { position: fixed; z-index: 1200; } .tc-topbar-left { top: .5rem; left: .5rem; } .tc-topbar-right { top: .5rem; right: .5rem; width: 4rem; text-align: right; } .tc-topbar button { height: 2.25rem; width: 2.25rem; background-color: rgba(255, 255, 255, 0.66); text-align: center; margin-bottom: .25rem; } .tc-topbar button[title=\"Show sidebar\"] { background-color: rgba(0, 0, 0, 0.15); } .tc-topbar button svg { fill: rgb(255, 255, 255); } .tc-topbar button:hover { background-color: rgb(255, 255, 255); } .tc-topbar button:hover svg { fill: rgb(179, 179, 179); } @media (min-width: 42rem) { .tc-topbar-left { top: 1rem; left: 1rem; } .tc-topbar-right { top: 1rem; right: 1rem; } }\n\n/* ** $:/themes/telmiger/bricks/components/tree-macro.css ** */\n\n.tc-tree div { padding-left: .5rem; } .tc-tree ol { list-style-type: none; padding-left: 0; margin-top: 0; } .tc-tree ol ol { padding-left: 1em; } .tc-tree button { color: #acacac; } .tc-tree svg { fill: #acacac; } .tc-tree span svg { width: 1em; height: 1em; vertical-align: baseline; } .tc-tree li span { color: lightgray; }\n\n/* ** $:/themes/telmiger/bricks/edit/editor-toolbar.css ** */\n\n.tc-editor-toolbar { margin-top: .5rem; margin-bottom: .5rem; } .tc-editor-toolbar button { vertical-align: middle; background-color: rgb(63, 63, 63); fill: rgb(179, 179, 179); border-radius: .25rem; padding: .25rem; margin-top: .125rem; margin-bottom: .125rem; margin-right: 0; margin-left: .25rem; } .tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct { margin-left: .125rem; border-radius: .5rem; width: 1em; } .tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group { box-shadow: 1px 1px 2px rgb(141, 141, 141); } .tc-editor-toolbar button.tc-selected { background-color: rgb(255, 201, 102); } .tc-editor-toolbar button svg { width: 1.6em; height: 1.2em; } .tc-editor-toolbar button:hover, .tc-editor-toolbar .tc-text-editor-toolbar-more button:hover svg { background-color: rgb(141, 141, 141); fill: rgb(38, 38, 38); } .tc-editor-toolbar .tc-text-editor-toolbar-more { font-size: .875rem; padding-left: 1rem; margin-left: 2rem; } .tc-editor-toolbar .tc-text-editor-toolbar-more .tc-reveal { line-height: 1.25; margin-bottom: .5rem; } .tc-editor-toolbar .tc-text-editor-toolbar-more button { display: inline-block; position: absolute; left: 1rem; padding: .25rem; width: auto; } .tc-editor-toolbar .tc-search-results { padding: 0; }\n\n/* ** $:/themes/telmiger/bricks/edit/editor.css ** */\n\niframe.tc-edit-texteditor { background-color: transparent; } .tc-tiddler-frame .tc-edit-texteditor { width: 100%; margin: 4px 0 0 0; } .tc-tiddler-frame textarea.tc-edit-texteditor, .tc-tiddler-frame iframe.tc-edit-texteditor { padding: .5rem; background-color: rgb(33, 33, 33); line-height: 1.3em; -webkit-appearance: none; -moz-appearance: none; } .tc-tiddler-frame input.tc-edit-texteditor { border-style: none; border-width: 0; border-left-style: solid; border-left-width: 1px; border-width: .5rem; border-bottom-style: solid; border-bottom-width: 1px; padding: .25rem; line-height: 1.25; background-color: rgb(33, 33, 33); border-color: rgb(63, 63, 63); }\n\n/* ** $:/themes/telmiger/bricks/edit/preview-fonts.css ** */\n\n.tc-tiddler-preview-preview h1 { font-size: 1.875rem; margin-bottom: 2rem; } .tc-tiddler-preview-preview h2 { font-size: 1.5rem; margin-bottom: 2rem; } .tc-tiddler-preview-preview h3 { font-size: 1.25rem; margin-bottom: 1rem; } .tc-tiddler-preview-preview h4 { font-size: 1rem; margin-bottom: 1rem; } .tc-tiddler-preview-preview h5 { font-size: .875rem; margin-bottom: 1rem; font-family: georgia, times, serif; } .tc-tiddler-preview-preview h6 { font-size: .75rem; margin-bottom: .5rem; font-family: georgia, times, serif; } .tc-tiddler-preview-preview * + h1, section > h1:first-child { margin-top: 4rem; } .tc-tiddler-preview-preview *:not(h1) + h2, section > h2:first-child { margin-top: 4rem; } .tc-tiddler-preview-preview *:not(h2) + h3, section > h3:first-child { margin-top: 2rem; } .tc-tiddler-preview-preview *:not(h3) + h4, section > h4:first-child { margin-top: 2rem; } .tc-tiddler-preview-preview *:not(h4) + h5, section > h5:first-child { margin-top: 2rem; } .tc-tiddler-preview-preview *:not(h5) + h6, section > h6:first-child { margin-top: 2rem; }\n\n/* ** $:/themes/telmiger/bricks/edit/tiddler-manager.css ** */\n\n.tc-manager-wrapper { } .tc-manager-controls { } .tc-manager-control { margin-top: .5rem; margin-bottom: .5rem; } .tc-manager-list { width: 100%; border-top-style: solid; border-top-width: 1px; border-right-style: solid; border-right-width: 1px; border-left-style: solid; border-left-width: 1px; border-color: rgb(255, 255, 255); } .tc-manager-list-item { } .tc-manager-list-item-heading { display: block; width: 100%; text-align: left; border-bottom-style: solid; border-bottom-width: 1px; border-color: rgb(255, 255, 255); padding: 3px; } .tc-manager-list-item-heading-selected { font-weight: bold; color: rgb(38, 38, 38); fill: rgb(38, 38, 38); background-color: rgb(179, 179, 179); } .tc-manager-list-item-heading:hover { background: rgb(255, 201, 102); color: rgb(38, 38, 38); } .tc-manager-list-item-content { display: flex; } .tc-manager-list-item-content-sidebar { flex: 1 0; background: rgb(33, 33, 33); border-right-style: solid; border-right-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-width: .25rem; border-color: rgb(255, 255, 255); white-space: nowrap; } .tc-manager-list-item-content-item-heading { display: block; width: 100%; text-align: left; background: rgb(255, 255, 255); text-transform: uppercase; font-size: .875rem; font-weight: bold; padding-top: .5rem; padding-bottom: .5rem; } .tc-manager-list-item-content-item-body { padding-left: .5rem; padding-right: .5rem; } .tc-manager-list-item-content-item-body > pre { margin-top: .5rem; margin-bottom: .5rem; border: none; background: inherit; } .tc-manager-list-item-content-tiddler { flex: 3 1; border-right-style: solid; border-right-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; <.bl> border-width: .25rem; border-color: rgb(255, 255, 255); } .tc-manager-list-item-content-item-body > table { border: none; padding: 0; margin: 0; } .tc-manager-list-item-content-item-body > table td { border: none; } .tc-manager-icon-editor > button { width: 100%; } .tc-manager-icon-editor > button > svg, .tc-manager-icon-editor > button > button { width: 100%; height: auto; }\n\n/* ** $:/themes/telmiger/bricks/edit/tiddler.css ** */\n\n.tc-tiddler-frame.tc-tiddler-edit-frame { border-style: solid; border-width: 1px; margin-left: .25rem; margin-right: .25rem; width: auto; border-color: rgb(255, 94, 94); } @media (min-width: 28rem) { .tc-tiddler-frame.tc-tiddler-edit-frame { margin-right: 0; margin-left: auto; } } @media (min-width: 42rem) { .tc-tiddler-frame.tc-tiddler-edit-frame { margin-right: calc(66vw - 26rem); } } @media (min-width: 77rem) { .tc-tiddler-frame.tc-tiddler-edit-frame { width: calc(100% - 1.5rem); max-width: calc(54rem + 54rem); margin-right: .5rem; margin-left: 1rem; } .tc-keyboard { width: 100%; } } .tc-tiddler-edit-frame em.tc-edit { color: rgb(179, 179, 179); font-style: normal; } .tc-edit-type-dropdown a.tc-tiddlylink-missing { font-style: normal; } input.tc-titlebar.tc-edit-texteditor { margin-bottom: 1rem; } .tc-edit-tags { margin-bottom: 1rem; background-color: rgb(33, 33, 33); } .tc-edit-add-tag { display: inline-block; margin-left: .5rem; padding-left: .5rem; } .tc-edit-add-tag .tc-add-tag-name input { width: 50%; } .tc-edit-add-tag .tc-keyboard { display:inline; } .tc-edit-tags .tc-tag-label { display: inline-block; } .tc-edit-tags-list { margin-top: 1rem; margin-bottom: 1rem; margin-left: 0; margin-right: 0; } .tc-tag-label .tc-remove-tag-button { padding-left: .25rem; color: rgb(25, 25, 25); } .tc-tiddler-preview { } .tc-tiddler-preview-preview { float: right; width: 49%; border: 1px solid rgb(63, 63, 63); margin: 4px 0 0 3px; padding: .5rem; } .tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor { width: 49%; } .tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor { max-width: 49%; } .tc-type-selector { margin-bottom: .5rem; fill: rgb(128, 128, 128); } .tc-type-selector button:hover svg { fill: rgb(230, 230, 230); } .tc-edit-fields { width: 100%; } .tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td { border-style: none; border-width: 0; padding: .25rem; } .tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) { background-color: rgb(28, 28, 28); } .tc-edit-fields > tbody > .tc-edit-field:nth-child(even) { background-color: rgb(33, 33, 33); } .tc-edit-field-name { text-align: right; } .tc-edit-field-value input { width: 100%; } .tc-edit-field-remove svg { height: 1em; width: 1em; vertical-align: middle; fill: rgb(128, 128, 128); } .tc-edit-field-remove button:hover svg { fill: rgb(230, 230, 230); } .tc-edit-field-add-name { display: inline-block; min-width: 15%; max-width: 30%; margin-right: 1rem; } .tc-edit-field-add-value { display: inline-block; min-width: 38%; max-width: 50%; margin-right: 1rem; } .tc-edit-field-add-button { display: inline-block; } .tc-tiddler-frame .tc-binary-warning { width: 100%; height: 5em; text-align: center; padding: 3em 3em 6em 3em; background: rgb(255, 255, 102); border: 1px solid rgb(232, 232, 125); } canvas.tc-edit-bitmapeditor { border: 6px solid rgb(25, 25, 25); cursor: crosshair; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; margin-top: 6px; margin-bottom: 6px; } .tc-edit-bitmapeditor-width { display: block; } .tc-edit-bitmapeditor-height { display: block; }\n\n/* ** $:/themes/telmiger/bricks/elements/blockquotes-swiss.css ** */\n\nblockquote, q { quotes: \"\\00AB\"\"\\00BB\"\"\\2039\"\"\\203A\"; } blockquote { border-left-style: solid; border-left-width: 1px; border-width: .5rem; border-color: rgba(240, 196, 117, 0.7); padding-left: 1rem; margin-left: 1rem; } blockquote cite { display: inline-block; padding-top: .5rem; } blockquote.tc-big-quote { font-family: Georgia, serif; position: relative; background: rgb(25, 25, 25); border-style: none; border-width: 0; border-radius: 1rem; margin-top: 2rem; margin-bottom: 2rem; margin-left: 1rem; margin-right: 1rem; padding: 1rem; padding-left: 2rem; max-width: 38rem; min-height: 6.5rem; } blockquote.tc-big-quote p { font-size: 1rem; max-width: 30em; } blockquote.tc-big-quote cite:before { content: \"\\2014 \\2009\"; } blockquote.tc-big-quote:before { position: absolute; top: 1.5rem; left: -1.75rem; color: rgba(240, 196, 117, 0.7); content: open-quote; font-size: 6rem; line-height: 0.1em; } blockquote.tc-big-quote:after { position: absolute; right: -1.75rem; bottom: 3.75rem; font-family: Georgia, serif; color: rgba(240, 196, 117, 0.7); content: close-quote; font-size: 6rem; line-height: 0.1em; } @media (min-width: 28rem) { blockquote.tc-big-quote { border-style: none; border-width: 0; border-radius: 1rem; margin-top: 2rem; margin-bottom: 2rem; margin-left: 4rem; margin-right: 4rem; padding: 1rem; padding-left: 2rem; } blockquote.tc-big-quote p { font-size: 1.25rem; } blockquote.tc-big-quote:before { font-size: 9.5rem; left: -4rem; top: 2rem; } blockquote.tc-big-quote:after { font-size: 9.5rem; right: -4rem; bottom: 5.5rem; } }\n\n/* ** $:/themes/telmiger/bricks/elements/buttons.css ** */\n\nhtml button { cursor: pointer; font-size: 1em; color: rgb(179, 179, 179); background: rgb(63, 63, 63); border-color: rgb(127, 127, 127); border-style: solid; border-width: 1px; border-radius: .25rem; } button:not([class]), button[class=\"\"] { line-height: 1.5; padding-left: .5rem; padding-right: .5rem; border-style: solid; border-width: 1px; opacity: 1; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } button:not([class]):hover, button:not([class]):focus { opacity: .5; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } button:not([class]):active { opacity: .8; -webkit-transition: opacity .15s ease-out; transition: opacity .15s ease-out; } .tc-tiddler-info .tc-tab-content button, .tc-sidebar-lists .tc-tab-content p > button, .tc-sidebar-lists .tc-tab-content p > span:not(.tc-tag-list-item) > button, .tc-sidebar-lists .tc-file-input-wrapper button, .tc-sidebar-lists .tc-popup-keep button, .tc-add-tag-button button, .tc-edit-field-add-button button { border-radius: .25rem; border-style: none; border-width: 0; color: ; background: linear-gradient(to bottom,rgba(99,99,99,.1) 0,rgba(0,0,0,.125) 100%); text-decoration: none; font-weight: 700; padding-top: .25rem; padding-bottom: .25rem; padding-left: 1rem; padding-right: 1rem; margin-right: 1rem; min-width: 5rem; } .tc-tiddler-info .tc-tab-content button:hover, .tc-tab-content p > button:hover, .tc-sidebar-lists .tc-tab-content p > span:not(.tc-tag-list-item) > button:hover, .tc-sidebar-lists .tc-file-input-wrapper:hover button, .tc-sidebar-lists .tc-popup-keep:hover button, .tc-add-tag-button button:hover, .tc-edit-field-add-button button:hover { background: linear-gradient(to bottom,rgba(99,99,99,.3) 0,rgba(99,99,99,.3) 100%); } .tc-add-tag-button button, .tc-edit-field-add-button button { font-size: .875rem; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-right: .5rem; min-width: 3rem; } .tc-sidebar-lists .tc-tab-content p > button, .tc-sidebar-lists .tc-tab-content p > span:not(.tc-tag-list-item) > button, .tc-sidebar-lists .tc-file-input-wrapper button, .tc-sidebar-lists .tc-popup-keep button, .tc-tiddler-info .tc-tab-content button { border-style: solid; border-width: 1px; border-radius: .25rem; font-size: .75rem; padding-left: .5rem; padding-right: .5rem; margin-right: .25rem; min-width: 2rem; } button svg, button img, label svg, label img { vertical-align: middle; } .tc-btn-invisible { border: none; border-radius: 0; margin: 0; padding: 0; background: none; cursor: pointer; text-align: left; } .tc-btn-boxed { font-size: 0.6em; padding: 0.2em; margin: 1px; border-style: solid; border-width: 1px; border-color: rgb(128, 128, 128); border-radius: 0.25em; } html body.tc-body .tc-btn-boxed svg { font-size: 1.6666em; } .tc-btn-boxed:hover { background: rgb(255, 255, 255); color: rgb(38, 38, 38); } html body.tc-body .tc-btn-boxed:hover svg { fill: rgb(38, 38, 38); } .tc-btn-rounded { font-size: 0.5em; line-height: 2; padding: 0em 0.3em 0.2em 0.4em; margin: 1px; border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); background: rgb(255, 255, 255); color: rgb(38, 38, 38); border-radius: 2em; } .tc-btn-rounded:hover { border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); background: rgb(38, 38, 38); color: rgb(255, 255, 255); } .tc-btn-text { padding: 0; margin: 0; } button.tc-btn-big-green, a.tc-btn-big-green { display: inline-block; font-size: 1.25rem; line-height: 1.5; padding-top: .5rem; padding-bottom: .5rem; padding-left: 1.25rem; padding-right: 1.25rem; margin-top: .5rem; margin-bottom: .5rem; margin-right: .5rem; margin-left: 0; border-style: none; border-width: 0; background: #19a974; color: rgb(38, 38, 38); fill: rgb(38, 38, 38); font-weight: 400; text-decoration: none; } body.tc-body button.tc-btn-big-green:hover { background-color: #19a719; } .tc-btn-big-green svg, .tc-btn-big-green img { margin-top: 0; vertical-align: middle; fill: rgb(38, 38, 38); } .tc-sidebar-lists input { color: rgb(179, 179, 179); } .tc-sidebar-lists button { color: rgb(179, 179, 179); fill: rgb(179, 179, 179); } .tc-sidebar-lists .tc-droppable { display: inline-block; position: relative; padding-left: 1rem; width: 100%; } .tc-sidebar-lists button.tc-btn-mini { font-size: 1rem; position: absolute; width: 1rem; margin-left: -1rem; } .tc-sidebar-lists button.tc-btn-mini + a { display: inline-block; margin-left: .25rem; } .tc-sidebar-lists button.tc-btn-mini { color: rgb(153, 153, 153); } .tc-sidebar-lists button.tc-btn-mini:hover { color: rgb(115, 115, 115); } .tc-sidebar-lists .tc-tab-set .tc-tab-content p .tc-droppable > button.tc-btn-mini { width: auto; font-size: .875rem; margin-top: 1rem; margin-left: -1rem; color: rgb(141, 141, 141); } .tc-unfold-banner svg, .tc-fold-banner svg { height: 0.75em; fill: rgb(128, 128, 128); } .tc-unfold-banner:hover svg, .tc-fold-banner:hover svg { fill: rgb(230, 230, 230); } html body.tc-body .tc-btn-rounded svg { font-size: 1.6666em; fill: rgb(38, 38, 38); } html body.tc-body .tc-btn-rounded:hover svg { fill: rgb(255, 255, 255); } .tc-btn-icon svg { height: 1em; width: 1em; fill: rgb(128, 128, 128); } svg.tc-image-button { padding: 0px 1px 1px 0px; } svg.tc-image-button, .tc-image-button img { height: 1em; width: 1em; max-width: 100%; max-height: 100%; } .tc-page-controls svg.tc-image-new-button { fill: ; } .tc-page-controls svg.tc-image-options-button { fill: ; } .tc-page-controls svg.tc-image-save-button { fill: ; } .tc-fold-banner, .tc-unfold-banner { position: relative; padding: 0; margin: 0; background: none; border: none; right: 0; width: 100%; text-align: right; } .tc-unfold-banner { border-top: 2px solid; border-color: rgb(43, 43, 43); background: none; } .tc-fold-banner:hover svg { background: rgb(43, 43, 43); } .tc-unfold-banner:hover { border-top: 2px solid; border-color: rgb(25, 25, 25); background: rgb(43, 43, 43); }\n\n/* ** $:/themes/telmiger/bricks/elements/details.css ** */\n\ndetails .tc-drop-down[hidden=\"true\"] { display: none; } @media (min-width: 42rem) { details > span { padding-top: 1rem; padding-bottom: 1rem; padding-left: 2rem; padding-right: 2rem; } }\n\n/* ** $:/themes/telmiger/bricks/elements/images.css ** */\n\nimg { max-width: 100%; } .tc-bordered-image { border-style: solid; border-width: 1px; border-color: rgb(255, 255, 255); padding: 5px; margin: 5px; }\n\n/* ** $:/themes/telmiger/bricks/elements/links.css ** */\n\n.tc-tiddlylink, .tc-tiddlylink-external { text-decoration: none; transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:link, .tc-tiddlylink-external:link, .tc-tiddlylink:visited, .tc-tiddlylink-external:visited { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:hover, .tc-tiddlylink-external:hover { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:active, .tc-tiddlylink-external:active { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:focus, .tc-tiddlylink-external:focus { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } button.tc-tiddlylink, a.tc-tiddlylink { text-decoration: none; font-weight: normal; color: rgb(204, 204, 255); -webkit-user-select: inherit; } button.tc-tiddlylink:hover, a.tc-tiddlylink:hover { text-decoration: underline; } a.tc-tiddlylink-resolves { } a.tc-tiddlylink-shadow { font-weight: bold; } a.tc-tiddlylink-shadow.tc-tiddlylink-resolves { font-weight: normal; } a.tc-tiddlylink-missing { font-style: italic; } a.tc-tiddlylink-external { text-decoration: underline; color: rgb(179, 179, 255); background-color: inherit; } a.tc-tiddlylink-external:visited { color: rgb(153, 153, 255); background-color: inherit; } a.tc-tiddlylink-external:hover { color: inherit; background-color: inherit; } .tc-sidebar-lists a.tc-tiddlylink { display: inline-block; font-size: .875rem; line-height: 1.25; color: rgb(179, 179, 179); overflow-wrap: break-word; max-width: 100% } .tc-sidebar-lists .tc-btn-mini + a.tc-tiddlylink { margin-bottom: .25rem; } .tc-sidebar-lists a.tc-tiddlylink:hover { color: rgb(115, 115, 115); } .tc-sidebar-header .tc-missing-tiddler-label { font-size: .875rem; line-height: 1.25; margin-bottom: .25rem; color: rgb(141, 141, 141); text-align: left; font-style: italic; } button.tc-btn-invisible.tc-missing-tiddler-label { max-width: 100%; }\n\n/* ** $:/themes/telmiger/bricks/elements/lists.css ** */\n\nul, ol { margin-top: 1rem; max-width: 40rem; } ul ul, ol ol, ul ol, ol ul { margin-top: .5rem; } ol li, ul li { line-height: 1.25; } ol { padding-left: 2rem; } ul { padding-left: 1rem; } li:first-child { margin-top: .5rem; } li:not(:last-child) { padding-bottom: .5rem; }\n\n/* ** $:/themes/telmiger/bricks/elements/tables.css ** */\n\ntable { border-collapse: collapse; border-spacing: 0; border-style: solid; border-width: 1px; border-color: rgba(0,0,0,0.125); width: auto; max-width: 100%; caption-side: bottom; margin-bottom: 2rem; } table th { text-align: left; } tr:nth-child(odd) { background-color: rgba(0,0,0,0.08); } tr:nth-child(even) { background-color: rgba(0,0,0,0.03); } table th, table td { padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; } table thead tr td, table th { background-color: rgba(0,0,0,.1); background-color: rgba(0,0,0,0.125); font-weight: bold; } table tfoot tr td { background-color: rgba(0,0,0,.4); } .tc-csv-table { white-space: nowrap; }\n\n/* ** $:/themes/telmiger/bricks/elements/text/two-columns.css ** */\n\n.cf { *zoom: 1; } .cf:before, .cf:after { content: \" \"; display: table; } .cf:after { clear: both; } .fl { float: left; _display: inline; } .w-100 { width: 100%; } @media screen and (min-width: 30em) { .w-50-ns { width: 50%; } }\n\n/* ** $:/themes/telmiger/bricks/functions/drag-drop.css ** */\n\n.tc-tiddler-dragger { position: relative; z-index: -10000; } .tc-tiddler-dragger-inner { position: absolute; top: -1000px; left: -1000px; display: inline-block; padding: 8px 20px; font-size: 16.9px; font-weight: bold; line-height: 20px; color: rgb(38, 38, 38); text-shadow: 0 1px 0 rgba(0, 0, 0, 1); white-space: nowrap; vertical-align: baseline; background-color: rgb(179, 179, 179); border-radius: 20px; } .tc-tiddler-dragger-cover { position: absolute; background-color: rgb(26, 26, 26); } .tc-dropzone { position: relative; } .tc-dropzone.tc-dragover:before { z-index: 10000; display: block; position: fixed; top: 0; left: 0; right: 0; background: #9eebcf; text-align: center; content: \"Drop here (or use the 'Escape' key to cancel)\"; } .tc-droppable.tc-dragover > .tc-droppable-placeholder { display: block; border: 2px dashed #9eebcf; } .tc-draggable { cursor: move; }\n\n/* ** $:/themes/telmiger/bricks/functions/print.css ** */\n\n@media print { body .tc-tiddler-controls { display: none; } body .tc-sidebar-scrollable { position: relative; top: 0; bottom: unset; left: 0; box-shadow: none; } body .tc-sidebar-header > .tc-reveal { width: 100%; padding: 0; margin: 0; margin-bottom: 2rem; border-bottom-style: solid; border-bottom-width: 1px; border-color: rgb(255, 201, 102); } body.tc-body { background-color: transparent; } body .tc-topbar, body .tc-page-controls, body .tc-sidebar-lists { display: none; } body .tc-story-river { margin: 0; padding: 0; } body .tc-story-river .tc-tiddler-frame { margin: 0; border: none; padding: 0; } }\n\n/* ** $:/themes/telmiger/bricks/functions/zoomin.css ** */\n\n.tc-storyview-zoomin-tiddler { position: absolute; display: block; width: 100%; } @media (min-width: 77rem) { body .tc-story-river > .tc-storyview-zoomin-tiddler { width: calc(100% - 4rem); margin-left: auto; margin-right: auto; } }\n\n/* ** $:/themes/telmiger/bricks/plugins/grosinger-checklist.css ** */\n\ninput.checklist-newitem { width: calc(100% - 2.75em - 20px); }\n\n/* ** $:/themes/telmiger/bricks/todo-components/thumbnail.css ** */\n\n.tc-thumbnail-wrapper { position: relative; display: inline-block; margin: 6px; vertical-align: top; } .tc-thumbnail-right-wrapper { float:right; margin: 0.5em 0 0.5em 0.5em; } .tc-thumbnail-image { text-align: center; overflow: hidden; border-radius: 3px; } .tc-thumbnail-image svg, .tc-thumbnail-image img { filter: alpha(opacity=1); opacity: 1; min-width: 100%; min-height: 100%; max-width: 100%; } .tc-thumbnail-wrapper:hover .tc-thumbnail-image svg, .tc-thumbnail-wrapper:hover .tc-thumbnail-image img { filter: alpha(opacity=0.8); opacity: 0.8; } .tc-thumbnail-background { position: absolute; border-radius: 3px; } .tc-thumbnail-icon svg, .tc-thumbnail-icon img { width: 3em; height: 3em;\n -webkit-filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));\n -moz-filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));\n filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));\n} .tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg, .tc-thumbnail-wrapper:hover .tc-thumbnail-icon img { fill: #fff;\n -webkit-filter: drop-shadow(3px 3px 4px rgba(0,0,0,0.6));\n -moz-filter: drop-shadow(3px 3px 4px rgba(0,0,0,0.6));\n filter: drop-shadow(3px 3px 4px rgba(0,0,0,0.6));\n} .tc-thumbnail-icon { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: -webkit-flex; -webkit-align-items: center; -webkit-justify-content: center; display: flex; align-items: center; justify-content: center; } .tc-thumbnail-caption { position: absolute; background-color: #777; color: #fff; text-align: center; bottom: 0; width: 100%; filter: alpha(opacity=0.9); opacity: 0.9; line-height: 1.4; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; } .tc-thumbnail-wrapper:hover .tc-thumbnail-caption { filter: alpha(opacity=1); opacity: 1; }\n\n/* ** $:/themes/telmiger/bricks/todo-components/toc.css ** */\n\n.tc-sidebar-lists .tc-table-of-contents { white-space: nowrap; } .tc-table-of-contents button { color: rgb(141, 141, 141); } .tc-table-of-contents svg { width: 0.7em; height: 0.7em; vertical-align: middle; fill: rgb(141, 141, 141); } .tc-table-of-contents ol { list-style-type: none; padding-left: 0; } .tc-table-of-contents ol ol { padding-left: 1em; } .tc-table-of-contents li { font-size: 1.0em; font-weight: bold; } .tc-table-of-contents li a { font-weight: bold; } .tc-table-of-contents li li { font-size: 0.95em; font-weight: normal; line-height: 1.4; } .tc-table-of-contents li li a { font-weight: normal; } .tc-table-of-contents li li li { font-size: 0.95em; font-weight: 200; line-height: 1.5; } .tc-table-of-contents li li li a { font-weight: bold; } .tc-table-of-contents li li li li { font-size: 0.95em; font-weight: 200; } .tc-tabbed-table-of-contents { display: -webkit-flex; display: flex; } .tc-tabbed-table-of-contents .tc-table-of-contents { z-index: 100; display: inline-block; padding-left: 1em; max-width: 50%; -webkit-flex: 0 0 auto; flex: 0 0 auto; background: rgba(0,0,0,0.125); border-left: 1px solid; border-top: 1px solid; border-bottom: 1px solid; border-color: rgb(255, 201, 102); } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a, .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a { display: block; padding: 0.12em 1em 0.12em 0.25em; } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a { border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; border-color: rgba(0,0,0,0.125); } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover { text-decoration: none; border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; border-color: rgb(255, 201, 102); background: rgb(255, 201, 102); } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a { border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; border-color: rgb(255, 201, 102); background: rgb(38, 38, 38); margin-right: -1px; } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover { text-decoration: none; } .tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content { display: inline-block; vertical-align: top; padding-left: 1.5em; padding-right: 1.5em; border: 1px solid; border-color: rgb(255, 201, 102); -webkit-flex: 1 0 50%; flex: 1 0 50%; } ",
"title": "$:/themes/telmiger/bricks/frozen-004.css",
"tags": "$:/tags/Stylesheet",
"modified": "20180203195839067"
},
"$:/palettes/Twilight": {
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n",
"type": "application/x-tiddler-dictionary",
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"author": "Thomas Elmiger"
},
"$:/palette": {
"text": "$:/palettes/Twilight",
"title": "$:/palette",
"modifier": "Thomas Elmiger",
"modified": "20190318212604166",
"creator": "Thomas Elmiger",
"created": "20190318212600954"
}
}
}
{
"tiddlers": {
"$:/themes/telmiger/navigator/icon": {
"text": "<svg class=\"em-icon te-navigator tc-image-button\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 22 22\" width=\"22pt\" height=\"22pt\" role=\"img\" fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n<path d=\"M9.703 2.088v-.72A1.3 1.3 0 0 1 10.997.074a1.3 1.3 0 0 1 1.294 1.294v.729a8.959 8.959 0 0 1 4.072 1.704l.526-.526a1.3 1.3 0 0 1 1.83 0 1.3 1.3 0 0 1 0 1.83l-.531.53a8.958 8.958 0 0 1 1.683 4.069h.733c.71 0 1.318.585 1.318 1.295 0 .709-.608 1.294-1.318 1.294h-.733a8.957 8.957 0 0 1-1.682 4.072l.513.513c.502.502.519 1.345.017 1.847s-1.345.485-1.847-.017l-.509-.509a8.959 8.959 0 0 1-4.072 1.704v.703c0 .71-.584 1.317-1.294 1.317-.71 0-1.294-.607-1.294-1.317v-.694a8.955 8.955 0 0 1-4.104-1.687l-.484.483c-.502.502-1.344.519-1.846.017s-.486-1.345.016-1.847l.479-.479a8.96 8.96 0 0 1-1.708-4.106h-.69a1.3 1.3 0 0 1-1.294-1.294 1.3 1.3 0 0 1 1.294-1.295h.69a8.962 8.962 0 0 1 1.709-4.103l-.496-.496a1.3 1.3 0 0 1 0-1.83 1.3 1.3 0 0 1 1.83 0l.5.5a8.949 8.949 0 0 1 4.104-1.687zm-.471 12.504l-1.933 1.932a6.58 6.58 0 0 0 2.404.985v-2.726a4.034 4.034 0 0 1-.471-.191zm3.504-.02a4.063 4.063 0 0 1-.445.188v2.736a6.564 6.564 0 0 0 2.373-.996l-1.928-1.928zM4.46 12.293A6.618 6.618 0 0 0 5.463 14.7l1.929-1.928a4.107 4.107 0 0 1-.201-.479H4.46zm10.276 0c-.052.15-.112.297-.181.438l1.933 1.933a6.6 6.6 0 0 0 .979-2.371h-2.731zm-3.772-3.025a1.733 1.733 0 1 1-.003 3.465 1.733 1.733 0 0 1 .003-3.465zm5.524-1.932l-1.933 1.932c.068.141.129.287.18.436h2.731a6.566 6.566 0 0 0-.978-2.368zM5.464 7.3a6.587 6.587 0 0 0-1.003 2.404h2.731c.057-.163.123-.323.2-.476L5.464 7.3zm6.827-2.796V7.24c.152.054.301.117.444.188L14.664 5.5a6.579 6.579 0 0 0-2.373-.996zm-2.588-.013a6.568 6.568 0 0 0-2.403.985l1.932 1.932c.152-.073.309-.137.471-.191V4.491z\"/></svg>",
"title": "$:/themes/telmiger/navigator/icon",
"tags": "$:/tags/Image",
"modifier": "Thomas Elmiger",
"modified": "20190225064911155",
"creator": "Thomas Elmiger",
"created": "20190201062848367",
"caption": "Navigator"
},
"$:/themes/telmiger/navigator/icons/menu-close": {
"text": "<svg class=\"em-icon te-menu-close tc-image-button\" viewBox=\"0 0 22 22\" xmlns=\"http://www.w3.org/2000/svg\" width=\"22pt\" height=\"22pt\" role=\"img\" fill=\"currentColor\" fill-rule=\"evenodd\"><path d=\"M20.624 22H1.376A1.377 1.377 0 0 1 0 20.624V1.376C0 .617.616 0 1.376 0h19.248C21.383 0 22 .616 22 1.376v19.248c0 .759-.616 1.376-1.376 1.376zM8.774 2.75h-4.65c-.759 0-1.374.617-1.374 1.375v13.75c0 .759.615 1.375 1.374 1.375h4.65A1.375 1.375 0 0 1 7.4 17.875V4.125c0-.758.615-1.375 1.374-1.375zm5.924 10.097l-2.772 2.771a1.304 1.304 0 0 1-1.844-1.844l2.77-2.773-2.77-2.774a1.304 1.304 0 0 1 1.844-1.844L14.7 9.149l2.772-2.766a1.302 1.302 0 0 1 1.845 0 1.3 1.3 0 0 1 0 1.844l-2.767 2.772 2.767 2.77a1.3 1.3 0 0 1 0 1.844 1.302 1.302 0 0 1-1.845 0L14.7 12.847h-.002z\"/></svg>",
"title": "$:/themes/telmiger/navigator/icons/menu-close",
"tags": "$:/tags/Image",
"modifier": "Thomas Elmiger",
"modified": "20190203135953402",
"creator": "Thomas Elmiger",
"created": "20190202081526032"
},
"$:/themes/telmiger/navigator/icons/menu-open": {
"text": "<svg class=\"em-icon te-menu-open tc-image-button\" viewBox=\"0 0 22 22\" xmlns=\"http://www.w3.org/2000/svg\" width=\"22pt\" height=\"22pt\" role=\"img\" fill=\"currentColor\"><path d=\"M20.624 22H1.376A1.377 1.377 0 0 1 0 20.624V1.376C0 .617.616 0 1.376 0h19.248C21.383 0 22 .616 22 1.376v19.248c0 .759-.616 1.376-1.376 1.376zM5.876 2.75H4.124c-.759 0-1.374.617-1.374 1.375v13.75c0 .759.615 1.375 1.374 1.375h1.752c.759 0 1.374-.617 1.374-1.375V4.125c0-.759-.615-1.375-1.374-1.375zm11.95 0h-6.452c-.759 0-1.374.617-1.374 1.375v13.75c0 .759.615 1.375 1.374 1.375h6.452c.759 0 1.374-.617 1.374-1.375V4.125c0-.759-.615-1.375-1.374-1.375zm-1.201 11.7a1.376 1.376 0 0 1 0 2.75h-3.95a1.376 1.376 0 0 1 0-2.75h3.95zm0-4.815a1.376 1.376 0 0 1 0 2.75h-3.95a1.376 1.376 0 0 1 0-2.75h3.95zm0-4.836a1.376 1.376 0 0 1 0 2.75h-3.95a1.376 1.376 0 0 1 0-2.75h3.95z\"/></svg>",
"title": "$:/themes/telmiger/navigator/icons/menu-open",
"tags": "$:/tags/Image",
"modifier": "Thomas Elmiger",
"modified": "20190202075643750",
"creator": "Thomas Elmiger",
"created": "20190202075425710"
},
"$:/themes/telmiger/navigator/icons/new": {
"text": "<svg class=\"em-icon te-new\" viewBox=\"0 0 22 22\" xmlns=\"http://www.w3.org/2000/svg\" width=\"22pt\" height=\"22pt\" role=\"img\" fill=\"currentColor\"><path d=\"M17.25 2.462l-.97.972 1.94 1.945.973-.973-1.945-1.944h.002zm.972-.972l.338-.337a1.375 1.375 0 1 1 1.945 1.944l-.338.338-1.945-1.946v.001zm-2.916 2.92L4.84 14.87C3.853 15.853 3 18.651 3 18.651s2.82-.875 3.784-1.84L17.25 6.352l-1.944-1.945v.002z\" fill-rule=\"nonzero\"/><path d=\"M6.292 4.543v2.125a.707.707 0 0 1-1.415 0l-.001-2.125L2.75 4.54a.707.707 0 0 1 0-1.414l2.125-.003.002-2.123c-.001-.391.316-.709.707-.707A.706.706 0 0 1 6.29 1l.002 2.123 2.123.002c.39 0 .708.317.707.707a.706.706 0 0 1-.707.707l-2.124.002zM7.189 21.716c1.167-.099 2.389-.39 4.072-.919.313-.099.613-.195 1.089-.351 2.75-.898 3.76-1.17 4.94-1.228 1.437-.071 2.381.366 3.022 1.495a.687.687 0 1 0 1.196-.678c-.917-1.617-2.363-2.285-4.286-2.19-1.353.067-2.416.352-5.299 1.294-.471.154-.767.25-1.074.346-3.345 1.051-5.289 1.216-6.806.301a.687.687 0 1 0-.711 1.177c1.089.657 2.364.88 3.857.753z\"/></svg>",
"title": "$:/themes/telmiger/navigator/icons/new",
"tags": "$:/tags/Image",
"modifier": "Thomas Elmiger",
"modified": "20190201202658107",
"creator": "Thomas Elmiger",
"created": "20190201135012521"
},
"$:/themes/telmiger/navigator/icons/to-top": {
"text": "<svg class=\"em-icon te-to-top tc-image-button\" viewBox=\"0 0 22 22\" xmlns=\"http://www.w3.org/2000/svg\" width=\"22pt\" height=\"22pt\" role=\"img\" fill=\"currentColor\"><path d=\"M9.625 10.695l-1.541 1.54a1.375 1.375 0 1 1-1.944-1.944l3.887-3.887c.258-.26.608-.404.973-.404h-.001c.353 0 .705.135.974.404l3.888 3.887a1.376 1.376 0 0 1-1.945 1.945l-1.541-1.541v8.93a1.375 1.375 0 1 1-2.75 0v-8.93z\"/><path d=\"M19.625 1H2.375C1.62 1 1 1.621 1 2.375S1.62 3.75 2.375 3.75h17.25C20.38 3.75 21 3.129 21 2.375S20.38 1 19.625 1z\"/></svg>",
"title": "$:/themes/telmiger/navigator/icons/to-top",
"tags": "$:/tags/Image",
"modifier": "Thomas Elmiger",
"modified": "20190202075725196",
"creator": "Thomas Elmiger",
"created": "20190201221606753"
},
"$:/themes/telmiger/navigator/main": {
"text": "!! Edit Main Navigation\n\n!!! Colours\n\n<$edit-text tag=\"input\" size=\"28\" tiddler=\"$:/themes/telmiger/navigator/settings\" index=\"colour-main-nav\" class=\"\"/> – background<br>\n<$edit-text tag=\"input\" size=\"28\" tiddler=\"$:/themes/telmiger/navigator/settings\" index=\"colour-new-button\" class=\"\"/> – new button background\n\n\n!!! Buttons\n\nMake sure to have only a few buttons here so that they are all visible on small mobile screens!\n\n<$edit-text tiddler=\"$:/themes/telmiger/navigator/TopLeftBar\" class=\"te-edit-text\"/> \n\nTo return to the original state, simply delete the tiddler $:/themes/telmiger/navigator/TopLeftBar that stores your changes.\n\n\n!!! Top left bar\n\nTo make sure, this comes first in the HTML code of this page, the so called left top bar is used for the main navigation. It displays all elements tagged <<tag $:/tags/TopLeftBar>> – in case you have other items there, you can click the tag pill and reorder them via drag and drop.\n",
"title": "$:/themes/telmiger/navigator/main",
"modifier": "Thomas Elmiger",
"modified": "20190205223514480",
"creator": "Thomas Elmiger",
"created": "20190202203807601"
},
"$:/themes/telmiger/navigator/readme": {
"created": "20190202200133608",
"creator": "Thomas Elmiger",
"text": "!! Navigator Theme\n\nThis is a so called //theme// for [[TiddlyWiki|https://tiddlywiki.com]] (TW). It is here to make navigation as easy as possible.\n\n\n!!! Main Navigation\n\nAt the bottom of the screen, where they are easy to reach on mobile devices, we have the most important functions. If you want to add or remove buttons, you are able to do that by changing [[$:/themes/telmiger/navigator/TopLeftBar]] or on the tab //main// of the plugin.\n\n\n!!! Sidebar Navigation\n\n{{$:/themes/telmiger/navigator/ui/Buttons/menu}} This button toggles the secondary navigation, known as the //sidebar// in TW. The button is available in the main navigation and as a //page control// tool in the sidebar itself. – On small screens, tap or click anywhere besides the sidebar to close it.\n\n<$checkbox tiddler=\"$:/themes/telmiger/navigator/settings\" index=\"hide-secondary-nav\" checked=\"yes\" unchecked=\"no\"> hide secondary navigation on startup</$checkbox>\n\nYou can [[add your own tabs|https://tiddlywiki.com/#How%20to%20add%20a%20new%20tab%20to%20the%20sidebar]] there, e.g. a [[table of contents|https://tiddlywiki.com/#Adding%20a%20table%20of%20contents%20to%20the%20sidebar]], click the links to learn how.\n\nThe sidebar contains all elements tagged <<tag $:/tags/SideBarSegment>>.\n\n\n!!! Top Navigation\n\nAt the top of the screen is a bar for three icons or buttons. See [[$:/themes/telmiger/navigator/TopRightBar]] or on the tab //top// of the plugin.\n\n\n!!! New Element\n\nThe [[big button|$:/themes/telmiger/navigator/ui/Buttons/new-tiddler-big]] in the lower right of the screen opens a new addition in the story. \n\n<$checkbox tiddler=\"$:/themes/telmiger/navigator/settings\" index=\"show-new-button\" checked=\"yes\" unchecked=\"no\"> show big new element button</$checkbox>\n\n\n!!! Keyboard Shortcut Hints\n\nOn big screens, the main navigation at the bottom can show hints for keyboard shortcuts (TW versions from 5.1.18).\n\n<$checkbox tiddler=\"$:/themes/telmiger/navigator/settings\" index=\"show-kbd-hints\" checked=\"yes\" unchecked=\"no\"> show keyboard hints</$checkbox>\n\n\n!! Recommended Plugins\n\nNavigator works best together with these [[other plugins|https://tid.li/tw5/plugins.html]] from the same author: \n\n* [[Simple Search|https://tid.li/tw5/plugins.html#%24%3A%2Fplugins%2Ftelmiger%2Fsimple-search]]\n* [[MyStory|https://tid.li/tw5/plugins.html#%24%3A%2Fplugins%2Ftelmiger%2FMyStory]]\n\n\n!!! Feedback\nPlease visit the friendly [[TW user group on Google|https://groups.google.com/forum/#!forum/tiddlywiki]] to connect to other users or the author Thomas Elmiger.\n\n\n!! Core overruling\n\nThis plugin overwrites $:/core/ui/TopBar/menu and nothing else.",
"title": "$:/themes/telmiger/navigator/readme",
"modifier": "Thomas Elmiger",
"modified": "20190303104127474",
"tags": "$:/tags/ControlPanel/Appearance",
"description": "Navigator Theme Readme and Settings",
"list-after": "$:/core/ui/ControlPanel/Theme",
"caption": "Theme Tweaks"
},
"$:/themes/telmiger/navigator/settings": {
"created": "20190202213759003",
"creator": "Thomas Elmiger",
"text": "hide-secondary-nav: yes\ncolour-main-nav: rgb(200, 225, 211)\ncolour-new-button: <<colour sidebar-tab-background>>\nshow-new-button: no\nshow-kbd-hints: no",
"type": "application/x-tiddler-dictionary",
"title": "$:/themes/telmiger/navigator/settings",
"tags": "",
"modifier": "Thomas Elmiger",
"modified": "20190310225739679"
},
"$:/themes/telmiger/navigator/StartupAction": {
"text": "<$reveal type=\"match\" state=\"$:/themes/telmiger/navigator/settings##hide-secondary-nav\" text=\"yes\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" $value=\"no\"/>\n</$reveal>",
"title": "$:/themes/telmiger/navigator/StartupAction",
"tags": "$:/tags/StartupAction",
"modifier": "Thomas Elmiger",
"modified": "20190202230238366",
"creator": "Thomas Elmiger",
"created": "20190202225149898"
},
"$:/themes/telmiger/navigator/styles/dynamic.css": {
"created": "20190203140828079",
"creator": "Thomas Elmiger",
"text": "\\rules except bold underline strikethrough subscript superscript italic dash list\n\\define --breakpoint-not-small() min-width: 28rem\n\\define --breakpoint-medium() min-width: 42rem\n\\define --breakpoint-large() min-width: 77rem\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n/*\n** Styles containing Wikilogic from\n** $:/themes/telmiger/bricks/wikilogic-42-77\n** inspired by TW vanilla\n** \"\"\" \n*/\n\nhtml {\n\tfont-size: {{$:/themes/telmiger/bricks/metrics/fontsize}};\n}\n\n/*\n** no-sidebar rules – mostly from .../001-page.css\n*/\n\n@media (<<--breakpoint-medium>>) {\n\n<<if-no-sidebar \"\n\n\tbody .tc-tiddler-view-frame, body .tc-tiddler-frame.tc-tiddler-edit-frame {\n\t\tmargin-right: auto;\n\t}\n\n\tbody .tc-tiddler-frame.tc-tiddler-edit-frame {\n\t\tmargin-right: 2rem;\n\t}\n\n\">>\n}\n\n\n@media (<<--breakpoint-large>>) {\n\n<<if-no-sidebar \"\n\n\tbody .tc-story-river {\n\t\tmargin-right: auto;\n\t\tpadding-right: 2rem;\n\t}\n\n\tbody .tc-tiddler-frame {\n\t\tmargin-right: auto;\n\t}\n\n\">>\n}\n\n\n/*\n** from .../components/tiddler.css\n*/\n\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tmargin-right: 0rem;\n\tmargin-left: -1rem;\n\tpadding-right: 4rem;\n\tpadding-left: 1rem;\n\tmin-width: calc(100% + 2rem);\n\tz-index: 300;\n\tbackground: <<colour tiddler-background>>;\n\tborder-bottom: 1px solid <<colour tab-divider>>;\n}\n\n@media (<<--breakpoint-not-small>>) {\n\t.tc-tiddler-title {\n\t\tmargin-right: 0rem;\n\t\tmargin-left: -1rem;\n\t\tpadding-right: 2rem;\n\t\tpadding-left: 1rem;\n\t\tmin-width: calc(100% + 2rem);\n\t}\n}\n\n@media (<<--breakpoint-medium>>) {\n\t.tc-tiddler-title {\n\t\tpadding-right: 1rem;\n\t}\n}\n</$reveal>\n\n\n/*\n** from .../edit/tiddler.css\n*/\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\nbody .tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n\n/*\n** Navigator Plugin – Dynamic Elements\n** (c) Thomas Elmiger\n*/\n\n\n#navigator-main {\n background-color: {{$:/themes/telmiger/navigator/settings##colour-main-nav}};\n}\n\n#navigator-main button {\n color: <<colour sidebar-tab-foreground>>;\n}\n\n#navigator-main button.te-big-new-btn {\n background-color: {{$:/themes/telmiger/navigator/settings##colour-new-button}};\n}\n\n\n/* Show big New button? */\n\n<$reveal type=\"match\" stateTitle=\"$:/themes/telmiger/navigator/settings\" stateIndex=\"show-new-button\" text=\"no\">\n\n.tc-page-container .tc-topbar-left button.te-big-new-btn {\n display: none;\n}\n\n</$reveal>\n\n/* Show keyboard hints? */\n\n<$reveal type=\"match\" stateTitle=\"$:/themes/telmiger/navigator/settings\" stateIndex=\"show-kbd-hints\" text=\"no\">\n\n#navigator-main .shortcut-code {\n display: none;\n}\n\n</$reveal>\n\n\n/* End \"\"\" */",
"title": "$:/themes/telmiger/navigator/styles/dynamic.css",
"tags": "$:/tags/Stylesheet MyMark",
"modifier": "Thomas Elmiger",
"modified": "20190304205200392"
},
"$:/themes/telmiger/navigator/top": {
"text": "!! Edit Top Navigation\n\n\n!!! Buttons\n\nMake sure to have the exact number of three buttons here so that they are all usable on small mobile screens!\n\n<$edit-text tiddler=\"$:/themes/telmiger/navigator/TopRightBar\" class=\"te-edit-text\"/> \n\nTo return to the original state, simply delete the tiddler $:/themes/telmiger/navigator/TopRightBar that stores your changes.\n\n\n!!! Top right bar\n\nTo make sure, this comes second in the HTML code of this page, the so called right top bar is used for the top navigation. It displays all elements tagged <<tag $:/tags/TopRightBar>> – in case you have other items there, it might be best to place them in the list above or to remove them.\n",
"title": "$:/themes/telmiger/navigator/top",
"tags": "ToDoComponents",
"modifier": "Thomas Elmiger",
"modified": "20190203212744214",
"creator": "Thomas Elmiger",
"created": "20190203203947555"
},
"$:/themes/telmiger/navigator/TopLeftBar": {
"text": "<nav id=\"navigator-main\" class=\"tc-page-controls\" tabindex=\"0\">\n{{$:/themes/telmiger/navigator/ui/Buttons/menu}}\n<span class=\"shortcut-code large-screen-only\"><kbd>{{$:/config/shortcuts/simple-search}}</kbd></span> {{$:/plugins/telmiger/simple-search/ui/Buttons/search}}\n{{$:/themes/telmiger/navigator/ui/Buttons/to-top}}\n{{$:/core/ui/Buttons/save-wiki}}\n{{$:/themes/telmiger/navigator/ui/Buttons/new-tiddler-big}}\n</nav>",
"title": "$:/themes/telmiger/navigator/TopLeftBar",
"tags": "$:/tags/TopLeftBar",
"modifier": "Thomas Elmiger",
"modified": "20190225215458800",
"creator": "Thomas Elmiger",
"created": "20190201203516392"
},
"$:/themes/telmiger/navigator/TopRightBar": {
"created": "20190201201906464",
"creator": "Thomas Elmiger",
"text": "<nav id=\"navigator-top\" class=\"tc-page-controls\" tabindex=\"0\">\n<ul>\n<li>{{$:/themes/telmiger/navigator/ui/Buttons/about}}</li>\n<li>{{$:/core/ui/Buttons/home}}</li>\n<li>{{$:/themes/telmiger/navigator/ui/Buttons/control-panel}}</li>\n</ul>\n</nav>",
"title": "$:/themes/telmiger/navigator/TopRightBar",
"tags": "$:/tags/TopRightBar",
"modifier": "Thomas Elmiger",
"modified": "20190407141132320",
"list-before": ""
},
"$:/themes/telmiger/navigator/ui/Buttons/menu": {
"text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible te-menu-close tc-selected\">\n<div class=\"te-close-sidebar-btn\"></div>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/themes/telmiger/navigator/icons/menu-close}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">{{$:/language/Buttons/HideSideBar/Caption}}</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible te-menu-open\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/themes/telmiger/navigator/icons/menu-open}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">{{$:/language/Buttons/ShowSideBar/Caption}}</span>\n</$list>\n</$button>\n</$reveal>",
"title": "$:/themes/telmiger/navigator/ui/Buttons/menu",
"tags": "$:/tags/PageControls",
"modifier": "Thomas Elmiger",
"modified": "20190225212300875",
"list-after": "",
"description": "Open/close sidebar menu",
"creator": "Thomas Elmiger",
"created": "20190202080028453",
"caption": "{{$:/themes/telmiger/navigator/icons/menu-open}} Sidebar Navigation"
},
"$:/themes/telmiger/navigator/ui/Buttons/to-top": {
"text": "<$button class=\"tc-btn-invisible te-btn-to-top\" tooltip=\"top of the story\">\n<$list variable=\"target\" filter=\"[list[$:/StoryList]first[]]\">\n<$action-navigate $to=<<target>>/>\n</$list>\n{{$:/themes/telmiger/navigator/icons/to-top}}\n</$button>",
"title": "$:/themes/telmiger/navigator/ui/Buttons/to-top",
"modifier": "Thomas Elmiger",
"modified": "20190201222537288",
"creator": "Thomas Elmiger",
"created": "20160923195909375"
},
"$:/core/ui/TopBar/menu": {
"text": "",
"title": "$:/core/ui/TopBar/menu",
"modifier": "Thomas Elmiger",
"modified": "20190203202106927",
"creator": "Thomas Elmiger",
"created": "20190203202056395"
},
"$:/themes/telmiger/navigator/styles/static.css": {
"created": "20190302143847671",
"creator": "Thomas Elmiger",
"text": "\\rules except bold underline strikethrough subscript superscript italic dash list\n\n/* ** $:/plugins/telmiger/bricks/media/screen-sizes.css ** */\n\n.tc-page-container .not-small-screen-only, .tc-page-container .medium-screen-only, .tc-page-container .large-screen-only { display: none; } @media (min-width: 28rem) { .tc-page-container .not-small-screen-only { display: initial; } .tc-page-container .small-screen-only, .tc-page-container .medium-screen-only, .tc-page-container .large-screen-only { display: none; } } @media (min-width: 42rem) { .tc-page-container .medium-screen-only { display: initial; } .tc-page-container .small-screen-only, .tc-page-container .not-small-screen-only, .tc-page-container .large-screen-only { display: none; } } @media (min-width: 77rem) { .tc-page-container .large-screen-only { display: initial; } .tc-page-container .small-screen-only, .tc-page-container .not-small-screen-only, .tc-page-container .medium-screen-only { display: none; } }\n\n/* ** $:/plugins/telmiger/bricks/page-container.css ** */\n\n.tc-page-container-wrapper { max-width: 100vw; overflow: scroll; } .tc-page-container-wrapper > * { max-width: 100vw; overflow: scroll; }\n\n/* ** $:/plugins/telmiger/bricks/simple-search/adapt.css ** */\n\nbody .tc-search-drop-down .tc-search-results a.tc-tiddlylink:hover { color: rgb(232, 232, 232); }\n\n/* ** $:/plugins/telmiger/ColourManager/bricks.css ** */\n\n.css-test { display: flex; } .padding-no { padding: 0; } .listreveal-open table { margin: 0; width: 100%; } .listreveal-open table th, .listreveal-open table td { padding: 0.5rem 0 0.5rem 0.5rem; } .listreveal-open .css-test { padding: 0.25rem 0.5rem; } th.te-60-p, td.te-60-p { width: 60%; } input[type=color] { margin-top: .33rem; vertical-align: bottom; } .tc-tiddler-body .todo-now h2, .tc-tiddler-body .todo-done h2 { display: flex; margin-top: 0; justify-content: space-between; } .tc-tiddler-body .todo-done h2 { margin-top: 3rem; font-weight: 300; }\n\n/* ** Dropdown items ** (c) Thomas Elmiger **\n*/\n\n/* block dropdown */\n\n.tc-block-dropdown a { padding-top: .125rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; line-height: 1.25; display: block; width: 100%; }\n\n.tc-block-dropdown a:hover { color: rgb(245, 245, 245); background-color: rgb(136, 206, 166); text-decoration: none; }\n\n/* sidebar tagpill */\n\n.tc-sidebar-lists .tc-tag-list-item, .tc-sidebar-lists .tc-drop-down { width: 100%; max-width: 100%; }\n\n.tc-sidebar-lists .tc-tag-list-item a.tc-tiddlylink { padding-top: .125rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; line-height: 1.25; display: block; width: 100%; font-size: .875rem; color: black; overflow-wrap: break-word; max-width: 100%; }\n\n/* other, tagpill */\n\n.tc-drop-down .tc-dropdown-item, .tc-block-dropdown .tc-dropdown-item { color: rgb(115, 115, 115); }\n\n.tc-drop-down .tc-dropdown-item-plain, .tc-block-dropdown .tc-dropdown-item, .tc-block-dropdown .tc-dropdown-item-plain .tc-drop-down .tc-dropdown-item { padding-top: .25rem; padding-bottom: .25rem; padding-right: 1rem; padding-left: .5rem; }\n\n.tc-drop-down a, .tc-drop-down button, .tc-drop-down a.tc-tiddlylink, .tc-drop-down a.tc-tiddlylink-external { padding-top: .125rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; line-height: 1.25; display: block; width: 100%; }\n\n/* color, hover-color */\n\n.tc-drop-down a, .tc-drop-down button, .tc-drop-down a.tc-tiddlylink, .tc-drop-down a.tc-tiddlylink-external { color: black; }\n\n.tc-drop-down button svg.tc-image-button, .tc-drop-down a svg.tc-image-button { fill: black; }\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button, .tc-sidebar-lists .tc-tag-list-item a.tc-tiddlylink:hover { color: rgb(104, 104, 104); background-color: rgba(255, 255, 255, 0.5); text-decoration: none; }\n\n.tc-drop-down button.tc-btn-invisible:hover svg.tc-image-button { fill: rgb(168, 168, 168); }\n\n/* sidebar search */\n\n.tc-search-drop-down .tc-search-results a.tc-tiddlylink { padding-top: .125rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; line-height: 1.25; display: block; width: 100%; }\n\n.tc-search-drop-down .tc-search-results a.tc-tiddlylink:hover { color: rgb(168, 168, 168); }\n\n/* advanced search */\n\n.tc-advanced-search .tc-edit-type-dropdown a.tc-tiddlylink-missing { padding-top: .125rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; line-height: 1.25; display: block; width: 100%; color: black; }\n\n.tc-advanced-search .tc-edit-type-dropdown a.tc-tiddlylink-missing:hover { color: rgb(168, 168, 168); background-color: rgba(255, 255, 255, 0.5); }\n\n/* ** $:/themes/telmiger/bricks/000-base.css ** */\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock html { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; } html, body, div, article, section, main, footer, header, form, fieldset, legend, pre, code, p, a, h1, h2, h3, h4, h5, h6, ul, ol, li, dl, dt, dd, textarea, input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"search\"], input[type=\"tel\"], input[type=\"text\"], input[type=\"url\"], .border-box { box-sizing: border-box; max-width: 100%; } html { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } html:-webkit-full-screen { background-color: rgb(245, 245, 245); } body { line-height: 1.5; font-family: 'helvetica neue', helvetica, sans-serif; font-family: \"Helvetica Neue\", Helvetica, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"; -moz-tab-size: 3; tab-size: 3; } body.tc-body { word-wrap: break-word; overflow-wrap: break-word; color: rgb(13, 13, 13); fill: rgb(13, 13, 13); background-color: rgb(245, 245, 245); } a { overflow-wrap: break-word; word-wrap: break-word; display: inline-block; vertical-align: top; } @media (min-width: 28rem) { a { display: unset; vertical-align: unset; } } pre { overflow-x: auto; overflow-y: hidden; overflow: scroll; } pre, code { font-family: monaco, Consolas, monospace; border-radius: .25rem; white-space: pre-wrap; } pre { display: block; word-break: normal; word-wrap: break-word; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; border-style: solid; border-width: 1px; border-color: rgba(0,0,0,.2); background-color: rgba(0,0,0,0.08); } code { padding-left: .25rem; padding-right: .25rem; border-style: solid; border-width: 1px; border-color: rgba(0,0,0,0.08); color: #e7040f; background-color: rgba(0,0,0,0.03); } pre > code { border-style: none; border-width: 0; padding: 0; background-color: transparent; color: inherit; } dl dt { font-weight: bold; margin-top: 6px; } hr { height: 1px; margin-top: 2rem; margin-bottom: 2rem; border: none; background-color: rgb(80, 150, 110); } .tc-drop-down hr { margin-bottom: 0.5em; margin-top: 0.5em; } .tc-muted { color: rgb(115, 115, 115); } .tc-sidebar-scrollable .tc-muted { color: rgb(150, 150, 150); } .tc-icon-wrapper > svg, .tc-image-button, .tc-image-button svg { height: 1em; width: 1em; } .tc-tiddler-frame img, .tc-tiddler-frame svg, .tc-tiddler-frame canvas, .tc-tiddler-frame embed, .tc-tiddler-frame iframe { max-width: 100%; } .tc-tiddler-body > embed, .tc-tiddler-body > iframe { width: 100%; height: 600px; } .tc-file-input-wrapper { position: relative; overflow: hidden; display: inline-block; vertical-align: middle; } .tc-file-input-wrapper input[type=file] { position: absolute; top: 0; left: 0; right: 0; bottom: 0; font-size: 999px; max-width: 100%; max-height: 100%; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: pointer; display: inline-block; } .tc-droppable > .tc-droppable-placeholder { display: none; }\n\n/* ** $:/themes/telmiger/bricks/001-page.css ** */\n\nbody { margin: 0; } .tc-page-container { } .tc-story-river { position: relative; padding: 0; } @media (min-width: 28rem) { .tc-story-river { padding: 1rem; } } @media (min-width: 42rem) { .tc-story-river { padding: 2rem; } } @media (min-width: 77rem) { .tc-story-river { margin-right: calc(26rem + 1rem); margin-left: auto; } } .tc-sidebar-header .tc-site-title { margin: 0; margin-top: 2rem; } .tc-site-subtitle { margin-bottom: 2rem; } .tc-sidebar-scrollable { position: fixed; top: 0; right: 0; bottom: 0; left: auto; z-index: 1500; width: auto; max-width: calc(100% - 2rem - 1rem); max-height: 100%; animation: inherit; box-shadow: -4px 4px 8px 0px rgba( 0, 0, 0, 0.4 ); } .tc-sidebar-header { margin-top: 0; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; } .tc-sidebar-header > .tc-reveal { width: calc(26rem - 2rem - .5rem); max-width: 100%; padding-top: .5rem; padding-bottom: 2rem; padding-left: 1rem; margin-bottom: 2rem; } @media (min-width: 28rem) { .tc-sidebar-header > .tc-reveal { width: 100%; padding-top: 1rem; padding-bottom: 2rem; padding-left: 1rem; margin-left: 1rem; } .tc-sidebar-scrollable { max-width: calc(100% - 4rem); } } @media (min-width: 42rem) { html[dir=\"rtl\"] .tc-sidebar-scrollable { right: auto; } .tc-sidebar-header > .tc-reveal { width: 26rem; } .tc-tiddler-frame { margin-right: calc(66vw - 26rem); } } @media (min-width: 77rem) { .tc-sidebar-header > .tc-reveal { padding-bottom: 4rem; margin-bottom: 4rem; } .tc-tiddler-frame { margin-right: auto; margin-left: auto; } }\n\n/* ** $:/themes/telmiger/bricks/010-fonts.css ** */\n\n.tc-site-title, .tc-site-title a.tc-tiddlylink { font-weight: 500; font-size: 2.25rem; font-variant: small-caps; color: rgb(80, 150, 110); } .tc-subtitle { font-size: .875rem; font-weight: 300; color: rgb(110, 110, 110); } .tc-titlebar { font-weight: 300; color: rgb(64, 120, 88); } .tc-tiddler-missing .tc-title { font-style: italic; font-weight: normal; } .tc-titlebar .tc-title, .tc-tiddler-title-icon { font-weight: 300; font-size: 1.5rem; line-height: 1.25; vertical-align: bottom; } .tc-system-title-prefix,.tc-tiddler-title-icon svg { color: rgb(115, 115, 115); fill: rgb(89, 166, 122); } .tc-titlebar.tc-edit-texteditor { font-size: 1.5rem; line-height: 1.25; } h1, h2, h3, h4, h5, h6 { margin-top: 0; line-height: 1.25; } .tc-tiddler-body h1 { font-size: 1.875rem; margin-bottom: 2rem; } .tc-tiddler-body h2 { font-size: 1.5rem; margin-bottom: 2rem; } .tc-tiddler-body h3 { font-size: 1.25rem; margin-bottom: 1rem; } .tc-tiddler-body h4 { font-size: 1rem; margin-bottom: 1rem; } .tc-tiddler-body h5 { font-size: .875rem; margin-bottom: 1rem; font-family: georgia, times, serif; } .tc-tiddler-body h6 { font-size: .75rem; margin-bottom: .5rem; font-family: georgia, times, serif; } .tc-tiddler-body * + h1, section > h1:first-child { margin-top: 4rem; } .tc-tiddler-body *:not(h1) + h2, section > h2:first-child { margin-top: 4rem; } .tc-tiddler-body *:not(h2) + h3, section > h3:first-child { margin-top: 2rem; } .tc-tiddler-body *:not(h3) + h4, section > h4:first-child { margin-top: 2rem; } .tc-tiddler-body *:not(h4) + h5, section > h5:first-child { margin-top: 2rem; } .tc-tiddler-body *:not(h5) + h6, section > h6:first-child { margin-top: 2rem; } p { font-size: 1rem; line-height: 1.5; margin-top: 0; margin-bottom: .5rem; } @media (min-width: 28rem) { .tc-tiddler-body h1 { font-size: 2.25rem; } } @media (min-width: 42rem) { .tc-titlebar .tc-title, .tc-tiddler-title-icon { font-size: 2.25rem; vertical-align: baseline; } .tc-tiddler-title-icon { vertical-align: text-top; } .tc-tiddler-body h1 { font-size: 3rem; } .tc-tiddler-body h2 { font-size: 2.25rem; } .tc-tiddler-body h3 { font-size: 1.5rem; } .tc-tiddler-body h4 { font-size: 1.25rem; } .tc-tiddler-body h5 { font-size: 1rem; } .tc-tiddler-body h6 { font-size: .875rem; } } .tc-menu-list-count { font-weight: bold; } .tc-menu-list-subitem { padding-left: .5rem; } pre, code { font-family: ; }\n\n/* ** $:/themes/telmiger/bricks/components/chooser.css ** */\n\n.tc-chooser { padding: 0; border-bottom-style: solid; border-bottom-width: 1px; border-color: #00449e; } .tc-chooser-item { line-height: 1; border-top-style: solid; border-top-width: 1px; border-color: #00449e; } .tc-drop-down .tc-chooser-item { padding: .25rem; } .tc-page-controls .tc-chooser-item { border: none; } .tc-page-controls .tc-chooser-item a.tc-tiddlylink { background-color: transparent; } .tc-page-controls .tc-chooser-item:not(.tc-chosen) a.tc-tiddlylink:hover { background-color: rgba(255,255,255,.25); } .tc-chosen, .tc-chooser-item:hover { background-color: rgba(0,0,0,.1); border-color: rgba(0,0,0,.4); } .tc-chosen .tc-tiddlylink { cursor:default; } .tc-chosen > .tc-tiddlylink:before { position: relative; content: \" \"; background: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22100%22%20height%3D%22100%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2245%22%20fill%3D%22%22%2F%3E%3C%2Fsvg%3E); background-size: .66rem; background-repeat: no-repeat; background-position-y: .33rem; } .tc-chooser-item .tc-tiddlylink { display: block; padding-top: .5rem; padding-bottom: .5rem; width: 100%; height: 100%; text-decoration: none; font-weight: 400; color: #00449e; background-color: rgb(245, 245, 245); background-color: transparent; } .tc-chooser-item a.tc-tiddlylink { } .tc-chooser-item a.tc-tiddlylink.tc-tiddlylink-resolves { font-weight: 300; background-color: rgba(0,0,0,.1); } .tc-chooser-item:not(.tc-chosen) a.tc-tiddlylink:hover { text-decoration: none; color: rgb(245, 245, 245); background-color: #00449e; } .tc-chooser-item:hover .tc-tiddlylink:hover { text-decoration: none; } .tc-drop-down .tc-chooser-item .tc-tiddlylink:hover { color: rgb(13, 13, 13); } .tc-chooser-item a.tc-tiddlylink > div { display: inline-block; vertical-align: bottom; } .tc-chooser-item a.tc-tiddlylink > div:first-child { width: 97%; padding-left: 3em; text-indent: -2.5em; padding-bottom: .5rem; } .tc-chooser-item svg, .tc-chooser-item img{ width: 1em; height: 1em; vertical-align: middle; } .tc-language-chooser .tc-image-button img { width: 2em; vertical-align: -0.15em; } .tc-drop-down .tc-chooser { border: none; } .tc-drop-down .tc-chooser .tc-swatches-horiz { font-size: 0.4em; padding-left: 1.2em; }\n\n/* ** $:/themes/telmiger/bricks/components/control-panel.css ** */\n\n.tc-control-panel table { width: 100%; } .tc-control-panel table input, .tc-control-panel table textarea { padding-left: .5rem; padding-right: .5rem; } .tc-control-panel td input + br { position: absolute; } .tc-control-panel td input + br + input[type=color] { margin-top: .25rem; vertical-align: bottom; } kbd { display: inline-block; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; font-size: 0.8em; line-height: 1.2; vertical-align: middle; border-radius: .25rem; box-shadow: inset 0 -1px 0 rgb(115, 115, 115); border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); color: rgb(13, 13, 13); background-color: rgb(245, 245, 245); }\n\n/* ** $:/themes/telmiger/bricks/components/control-panel/palettes.css ** */\n\n.tc-control-panel .tc-chooser-item a { padding-left: .25rem; } .tc-control-panel .tc-chosen > .tc-tiddlylink::before { margin-right: 4px; } .tc-swatches-horiz { width: 97%; text-align: right; } .tc-swatches-horiz .tc-swatch { display: inline-block; } .tc-swatch { width: 2rem; height: 2rem; margin-right: .25rem; border-style: solid; border-width: 1px; border-color: #888; } @media (min-width: 42rem) { .tc-chooser-item a.tc-tiddlylink > div:first-child { margin-right: 1rem; width: calc(100% - 22rem); min-width: 20rem; } .tc-swatches-horiz { width: 20.75rem; } .tc-swatch { margin-right: .5rem; } }\n\n/* ** $:/themes/telmiger/bricks/components/dropdown.css ** */\n\n.tc-btn-dropdown { text-align: left; } .tc-btn-dropdown svg, .tc-btn-dropdown img { height: 1em; width: 1em; } .tc-drop-down-wrapper { position: relative; } .tc-drop-down { width: 22rem; max-width: 66vw; border-style: solid; border-width: 1px; padding: .5rem; border-radius: .125rem; margin-top: .25rem; line-height: 1.5; text-shadow: none; border-color: rgb(115, 115, 115); background-color: rgb(232, 232, 232); } .tc-drop-down .tc-drop-down { margin-left: 1rem; } .tc-drop-down p { padding-left: .25rem; padding-right: .25rem; } .tc-drop-down svg { fill: rgb(115, 115, 115); height: 1em; width: 1em; margin-right: .5rem; } .tc-drop-down img { width: 1em; margin-right: .5rem; } .tc-drop-down .tc-prompt { padding-left: 1rem; padding-right: 1rem; } .tc-drop-down .tc-file-input-wrapper { width: 100%; } .tc-drop-down .tc-file-input-wrapper button { color: rgb(13, 13, 13); } .tc-block-dropdown-wrapper { position: relative; } .tc-block-dropdown { position: absolute; min-width: 220px; border-radius: .25rem; font-size: .875rem; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-left: .5rem; z-index: 1000; text-shadow: none; border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); background-color: rgb(232, 232, 232); } .tc-page-controls .tc-drop-down { font-size: 1rem; max-width: 80%; }\n\n/* ** $:/themes/telmiger/bricks/components/forms.css ** */\n\ntextarea, input[type=text], input[type=search], input[type=\"\"], input:not([type]) { -webkit-appearance: none; -moz-appearance: none; font-size: 1rem; padding-left: .25rem; padding-right: .25rem; padding-bottom: .25rem; color: rgb(13, 13, 13); border-style: solid; border-width: 1px; border-color: #ccc; background-color: #F7F7F7; background-color: rgb(247, 247, 247); } textarea { padding-left: .5rem; padding-right: .5rem; padding-top: .25rem; padding-bottom: .25rem; } .te-edit-text { width: 100%; } textarea:focus, input[type=text]:focus, input[type=search]:focus, input[type=\"\"]:focus, input:not([type]):focus { background-color: #F7F7F7; background-color: rgb(252, 252, 252); } td textarea, td input[type=text], td input[type=search], td input[type=\"\"], td input:not([type]) { width: 100%; max-width: calc(100% - .5rem); } input[type=\"checkbox\"] { vertical-align: middle; }\n\n/* ** $:/themes/telmiger/bricks/components/messages.css ** */\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg { fill: #ff4136; color: #ff4136; } .tc-error { background: #f00; color: #fff; } .tc-body .tc-error-form { color: #fff; text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5); background-color: rgb(255, 75, 75); border: 8px solid rgb(255, 0, 0); margin-left: -33vw; width: 66vw; max-height: 80vh; overflow-y: scroll; } .tc-alerts { position: fixed; top: 0; left: 0; max-width: 500px; z-index: 20000; } .tc-alert { position: relative; margin: 2rem; padding: 1rem; border-style: solid; border-width: 1px; border-width: .25rem; border-color: rgb(232, 232, 125); background-color: rgb(255, 255, 102); } .tc-alert-toolbar { position: absolute; top: .5rem; right: .5rem; } .tc-alert-toolbar svg { fill: rgb(224, 82, 82); } .tc-alert-subtitle { color: rgb(224, 82, 82); font-weight: bold; } .tc-alert-highlight { color: rgb(255, 51, 51); } @media (min-width: 77rem) { .tc-static-alert { position: relative; } .tc-static-alert-inner { position: absolute; z-index: 100; } } .tc-static-alert-inner { padding: 0 .125rem .125rem 4rem; color: rgba(0,0,0,.3); } .tc-message-box { font-size: 1rem; line-height: 1.5; color: #00449e; padding-top: 1rem; padding-left: 1rem; padding-right: 1rem; padding-bottom: .5rem; margin-left: -1rem; margin-right: -1rem; margin-bottom: 1rem; max-width: calc(100% + 2rem); border-style: solid; border-width: 1px; border-color: #96ccff; background: #cdecff; } .tc-message-box svg { height: 1em; width: 1em; vertical-align: text-bottom; } .tc-notification { position: fixed; top: 1rem; right: 3rem; min-width: 12rem; max-width: 24rem; padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; z-index: 10000; border-style: solid; border-width: 1px; border-radius: .25rem; color: rgb(242, 242, 242); border-color: rgb(242, 242, 242); background-color: rgb(150, 80, 120); } .tc-plugin-reload-warning { position: fixed; top: 0; right: 0; left: 0; padding-top: .5rem; background: rgb(255, 255, 102); text-align: center; z-index: 2000; } .tc-plugin-reload-warning button.tc-btn-invisible { position: relative; margin-left: 2rem; }\n\n/* ** $:/themes/telmiger/bricks/components/modal.css ** */\n\n.tc-modal-wrapper { position: fixed; overflow: auto; overflow-y: scroll; top: 0; right: 0; bottom: 0; left: 0; z-index: 1300; } .tc-modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; background-color: rgb(13, 13, 13); } .tc-modal { position: fixed; top: 1rem; left: 1rem; right: 1rem; border-style: solid; border-width: 1px; border-radius: .25rem; border-color: rgba(0,0,0,.5); background-color: rgb(245, 245, 245); } .tc-modal-header { padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; border-bottom-style: solid; border-bottom-width: 1px; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-color: rgba(0,0,0,.1); background-color: #f4f4f4; } .tc-modal-header h3 { margin: 0; line-height: 30px; } .tc-modal-header img, .tc-modal-header svg { height: 1em; width: 1em; } .tc-modal-body { overflow-y: auto; max-height: 60vh; padding: 1rem; } .tc-modal-footer { text-align: right; padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; margin-bottom: 0; border-top-style: solid; border-top-width: 1px; border-radius: .25rem; border-top-left-radius: 0; border-top-right-radius: 0; border-top-color: rgba(0,0,0,.1); background-color: #f4f4f4; } @media (min-width: 42rem) { .tc-modal { top: 4rem; right: 20%; left: auto; width: 60%; } } @media (min-width: 77rem) { .tc-modal { top: 8rem; right: 25%; left: auto; width: 50%; border-radius: .5rem; } .tc-modal-header { padding-left: 2rem; padding-right: 2rem; border-radius: .5rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .tc-modal-body { padding: 2rem; } .tc-modal-footer { padding-left: 2rem; padding-right: 2rem; border-radius: .5rem; border-top-left-radius: 0; border-top-right-radius: 0; } }\n\n/* ** $:/themes/telmiger/bricks/components/page-controls.css ** */\n\n.tc-page-controls { font-size: 1.5rem; line-height: 1.5; margin-bottom: 1rem; } .tc-page-controls button { margin-right: 1rem; } .tc-page-controls button.tc-selected svg { fill: rgb(227, 227, 227); } .tc-page-controls button.tc-selected:hover svg { fill: rgb(150, 150, 150); } .tc-page-controls a.tc-tiddlylink:hover { text-decoration: none; } .tc-page-controls img { width: 1em; } .tc-page-controls svg { fill: rgb(150, 150, 150); } .tc-page-controls button:hover svg, .tc-page-controls a:hover svg { fill: rgb(227, 227, 227); }\n\n/* ** $:/themes/telmiger/bricks/components/plugin-info.css ** */\n\n.tc-plugin-info { display: block; border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); margin-bottom: 1rem; padding: .25rem; background-colour: rgb(245, 245, 245); } .tc-plugin-info-disabled { background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px); background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px); } .tc-plugin-info-disabled:hover { background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px); background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px); } a.tc-tiddlylink.tc-plugin-info:hover { text-decoration: none; background-color: rgb(80, 150, 110); color: rgb(245, 245, 245); fill: rgb(13, 13, 13); } a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg { fill: rgb(13, 13, 13); } .tc-plugin-info-chunk { display: inline-block; vertical-align: middle; } .tc-plugin-info .tc-plugin-info-chunk h1 { font-size: 1rem; margin-top: .25rem; margin-bottom: .25rem; } .tc-plugin-info .tc-plugin-info-chunk h2 { font-size: .875rem; margin-top: 0; margin-bottom: .25rem; } .tc-plugin-info .tc-plugin-info-chunk h2 div { font-size: .875rem; margin-bottom: .25rem; } .tc-plugin-info .tc-btn-dropdown { margin-left: .5rem; margin-right: .5rem; } .tc-plugin-info:hover .tc-btn-dropdown svg { fill: rgb(245, 245, 245); } .tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg { width: 2em; height: 2em; fill: rgb(115, 115, 115); padding-right: 1rem; } .tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg { width: 2em; height: 2em; fill: rgb(13, 13, 13); } .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg { height: 1em; width: 1em; } .tc-plugin-info-dropdown { margin-top: -1rem; border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); } .tc-control-panel .tc-plugin-info-dropdown { margin-bottom: 1rem; } .tc-plugin-info-dropdown-message { background: #cdecff; padding-top: 1rem; padding-bottom: 1rem; padding-left: 2rem; padding-right: 2rem; font-size: 2.25rem; font-weight: bold; } .tc-plugin-info-dropdown-body { padding: 1rem; }\n\n/* ** $:/themes/telmiger/bricks/components/search.css ** */\n\n.tc-search a svg { width: 1.2em; height: 1.2em; vertical-align: middle; } .tc-search button svg, .tc-search a svg { fill: rgb(150, 150, 150); padding-left: .25rem; padding-right: .25rem; } .tc-search button:hover svg, .tc-search a:hover svg { fill: rgb(227, 227, 227); } .tc-search + .tc-block-dropdown-wrapper { margin-left: -1rem; } .tc-block-dropdown.tc-search-drop-down { position: relative; padding-left: .5rem; padding-right: .5rem; margin-right: 1rem; max-width: 100%; } .tc-sidebar-lists .tc-search { margin-bottom: 1rem; } .tc-sidebar-scrollable input[type=search] { width: 12rem; } .tc-sidebar-lists .tc-block-dropdown { background-color: rgb(26, 26, 26); }\n\n/* ** $:/themes/telmiger/bricks/components/search/advanced.css ** */\n\n.tc-advanced-search input { width: calc( 100% / 1.5 ); margin-right: .5rem; } .tc-advanced-search .tc-search button { border-radius: .25rem; border-style: none; border-width: 0; padding-top: .25rem; padding-bottom: .25rem; min-width: 2rem; text-decoration: none; font-weight: 600; } .tc-advanced-search .tc-popup { position: relative !important; left: initial !important; top: initial !important; } .tc-advanced-search .tc-block-dropdown-wrapper { position: absolute; left: -16rem; } @media (min-width: 28rem) { .tc-advanced-search .tc-block-dropdown-wrapper { left: 0; transform: translateX(-19rem); } } .tc-advanced-search .tc-block-dropdown button:hover { color: ; border-color: ; } .tc-advanced-search .tc-block-dropdown button:hover svg, .tc-advanced-search .tc-block-dropdown a:hover svg { fill: #555; } .tc-advanced-search .tc-block-dropdown-wrapper .tc-block-dropdown { min-width: 18rem; } .tc-advanced-search .tc-block-dropdown .tc-btn { margin: .5rem; border-style: solid; border-width: 1px; }\n\n/* ** $:/themes/telmiger/bricks/components/sidebar.css ** */\n\n.tc-sidebar-scrollable { background-color: #181818; background-color: #181818; } .tc-sidebar-header { color: rgb(255, 255, 255); fill: rgb(255, 255, 255); } .tc-sidebar-header .tc-sidebar-lists p { margin-bottom: .25rem; } .a11y-label { color: rgba(0,0,0,.3); } .tc-sidebar-lists .tc-tab-set { margin-right: .5rem; } .tc-sidebar-lists .tc-tab-content { padding-top: 1rem; background-color: #181818; } .tc-sidebar-lists .tc-tab-content p { font-size: .875rem; } .tc-sidebar-lists .tc-tab-buttons button { font-size: .875rem; line-height: 1; margin-top: .125rem; padding-top: .125rem; background-color: rgb(70, 70, 70); color: rgba(255,255,255,.8); border-color: rgba(255, 255, 255, 0.8); max-height: 1.66rem; }\n\n.tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected) { position: relative; }\n\n.tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected)::before { background-color: #181818; content: \"\"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }\n\n.tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected):hover::before, .tc-sidebar-lists .tc-tab-buttons button:not(.tc-tab-selected):focus::before { opacity: .35; } .tc-sidebar-lists .tc-tab-divider { border-top-style: solid; border-top-width: 1px; border-color: rgba(255, 255, 255, 0.8); margin-right: 4rem; height: 1px; } .tc-sidebar-lists .tc-tab-buttons.tc-vertical button { border-color: rgba(255, 255, 255, 0.8); background-color: rgb(70, 70, 70); } .tc-sidebar-lists .tc-tab-content.tc-vertical { border-color: rgba(255, 255, 255, 0.8); } .tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected { background-color: #181818; color: rgba(255,255,255,.8); color: rgba(255,255,255,.8); border-color: rgba(255, 255, 255, 0.8); border-bottom-color: #181818; } .tc-sidebar-lists .tc-tab-buttons.tc-vertical button.tc-tab-selected { border-color: rgba(255, 255, 255, 0.8); border-right-color: #181818; background-color: #181818; } .tc-menu-list-item { margin: 0; } .tc-menu-list-item a, .tc-menu-list-item .tc-btn-invisible { padding-bottom: .25rem; } .tc-menu-list-item button { font-style: italic; }\n\n/* ** $:/themes/telmiger/bricks/components/sidebar/tab-content.css ** */\n\n.tc-sidebar-lists .tc-timeline { font-weight: bold; } .tc-sidebar-lists .tc-tab-content label { width: 1.25rem; padding-top: .2rem; margin-right: .25rem; margin-left: -.25rem; } .tc-sidebar-lists .tc-tab-content div div p i { line-height: 1.25; display: inline-block; width: calc(100% - 1.5rem); margin-left: 1.5rem; }\n.tc-sidebar-lists .tc-drop-down button { color: black; }\n\n/* ** $:/themes/telmiger/bricks/components/tabs.css ** */\n\n.tc-tab-buttons { padding-top: 1rem; font-size: .875rem; } .tc-tab-buttons button { position: relative; font-size: .875rem; cursor: pointer; color: rgb(13, 13, 13); line-height: 1.5; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-bottom: 0; margin-left: 0; margin-right: 0; font-weight: 300; background: inherit; background-color: rgb(225, 225, 225); border-style: solid; border-width: 1px; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-color: rgb(80, 150, 110); height: 2rem; }\n\n.tc-tab-buttons button:not(.tc-tab-selected) { position: relative; }\n\n.tc-tab-buttons button:not(.tc-tab-selected)::before { background-color: rgb(245, 245, 245); content: \"\"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; border-radius: .25rem; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }\n\n.tc-tab-buttons button:not(.tc-tab-selected):hover::before, .tc-tab-buttons button:not(.tc-tab-selected):focus::before { opacity: .35; } .tc-sidebar-lists .tc-tab-buttons button { margin-right: .125rem; } .tc-tab-divider { border-top-style: solid; border-top-width: 1px; height: 1px; margin-top: 1px; border-color: rgb(80, 150, 110); } .tc-tab-content { padding-top: 2rem; } .tc-tab-set:not(.tc-vertical) { margin-left: -.5rem; max-width: calc(100vw - 1rem) } .tc-tab-set:not(.tc-vertical) > .tc-tab-buttons:first-of-type { margin-left: .5rem; } .tc-tab-set:not(.tc-vertical) > .tc-tab-buttons button { margin-top: -2px; margin-bottom: -2px; margin-left: .25rem; } .tc-tab-set:not(.tc-vertical) > .tc-tab-buttons button:first-of-type { margin-left: 0; } .tc-tab-set:not(.tc-vertical) > .tc-tab-content { padding-left: .5rem; } .tc-tab-content.tc-vertical { display: inline-block; vertical-align: top; padding-top: 1rem; padding-left: 1rem; border-left-style: solid; border-left-width: 1px; border-color: rgb(80, 150, 110); -webkit-flex: 1 0 70%; flex: 1 0 70%; max-width: 75%; } .tc-tab-divider.tc-vertical { display: none; } .tc-tab-set.tc-vertical { display: -webkit-flex; display: flex; } .tc-tab-buttons.tc-vertical { z-index: 100; display: block; vertical-align: top; text-align: right; margin-left: 0; margin-right: -1px; max-width: 33%; -webkit-flex: 0 0 auto; flex: 0 0 auto; } .tc-tab-buttons.tc-vertical button, .tc-tab-buttons.tc-vertical button.tc-tab-selected { display: block; width: 100%; margin-top: 0; margin-right: 0; margin-bottom: .25rem; text-align: right; border-style: solid; border-width: 1px; border-radius: .25rem; border-top-right-radius: 0; border-bottom-right-radius: 0; border-color: rgb(80, 150, 110); background-color: rgb(225, 225, 225); } .tc-tab-buttons button.tc-tab-selected { color: rgb(13, 13, 13); border-style: solid; border-width: 1px; border-color: rgb(80, 150, 110); background-color: rgb(245, 245, 245); border-bottom-color: rgb(245, 245, 245); } .tc-tiddler-info .tc-tab-buttons button.tc-tab-selected { border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #f8f8f8; background-color: #f8f8f8; } .tc-tab-buttons.tc-vertical button.tc-tab-selected { border-right-color: rgb(245, 245, 245); background-color: rgb(245, 245, 245); } .tc-tab-buttons button.tc-tab-selected { cursor: default; pointer-events: none; } .tc-drop-down-bullet { display: inline-block; width: 0.5em; } .tc-drop-down .tc-tab-contents a { padding: 0 0.5em 0 0.5em; } .tc-drop-down .tc-tab-buttons button { background-color: rgba(0,0,0,.1); } .tc-drop-down .tc-tab-set .tc-tab-buttons button { display: inline-block; width: auto; margin-bottom: 0px; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .tc-drop-down .tc-tab-buttons button.tc-tab-selected { border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: rgba(255,255,255,1); background-color: rgba(255,255,255,1); }\n\n/* ** $:/themes/telmiger/bricks/components/tags.css ** */\n\n.tc-tag-manager-table td { padding-top: .25rem; padding-bottom: .25rem; }\n\n.tc-tag-label { position: relative; }\n\n.tc-tag-label::before { background-color: #000; content: \"\"; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; border-radius: 1rem; }\n\n.tc-tag-label:hover::before, .tc-tag-label:focus::before { opacity: .075; }\n\n.tc-edit-tags > .tc-tag-label { position: relative; }\n\n.tc-edit-tags > .tc-tag-label::before { background-color: #000; content: \"\"; position: absolute; top: 0; left: 0; width: calc(100% - 1.25rem); height: 100%; opacity: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }\n\n.tc-edit-tags > .tc-tag-label:hover::before, .tc-edit-tags > .tc-tag-label:focus::before { opacity: .075; } .tc-tags-wrapper { margin-bottom: .5rem; } .tc-tags-wrapper:empty { height: 33%; width: 4rem; border-bottom-style: solid; border-bottom-width: 1px; border-width: .25rem; border-bottom-color: rgb(80, 150, 110); } .tc-tags-wrapper:empty:before { content: \"\\00a0\"; } button.tc-tag-label, span.tc-tag-label, .tc-tab-content button.tc-tag-label.tc-untagged-label { display: inline-block; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; font-size: .75rem; font-weight: 400; color: rgb(242, 242, 242) !important; white-space: nowrap; line-height: 1; vertical-align: baseline; background-color: rgb(80, 150, 110); border-style: none; border-width: 0; border-radius: 1rem; } .tc-tag-list-item { position: relative; display: inline-block; max-width: 100%; } .tc-untagged-separator { width: 10rem; height: 1px; left: 0; margin-left: 0; border-style: none; border-width: 0; background: rgba(255, 255, 255, 0.8); } button.tc-tag-label.tc-untagged-label, .tc-tab-content button.tc-tag-label.tc-untagged-label { background-color: rgb(150, 80, 120); color: rgb(242, 242, 242); font-style: italic; } .tc-tag-label svg, .tc-tag-label img { vertical-align: text-bottom; height: 1em; width: 1em; } .tc-tag-manager-table .tc-tag-label { white-space: normal; } .tc-tag-manager-tag { width: 100%; }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler-content.css ** */\n\n.tc-tiddler-title { margin-bottom: 1rem; } .tc-tiddler-body { padding-top: 2rem; } .tc-titlebar .tc-title { display: inline-block; margin: .5rem; margin-left: 0; } .tc-tiddler-title-icon { vertical-align: middle; } .tc-tiddler-title-icon svg { margin-right: .25rem; } .tc-titlebar img { height: 1em; } .tc-subtitle a { color: #000; display: block; } @media (min-width: 28rem) { .tc-subtitle { float: right; white-space: unset; } .tc-subtitle a { display: inline-block; } } .tc-tiddler-help { color: rgb(115, 115, 115); margin-top: .5rem; } .tc-tiddler-help a.tc-tiddlylink { color: rgb(89, 166, 122); } .tc-titlebar, .tc-tiddler-edit-title { overflow: hidden; } html body.tc-body.tc-single-tiddler-window { margin: 1em; background: rgb(245, 245, 245); } .tc-single-tiddler-window img, .tc-single-tiddler-window svg, .tc-single-tiddler-window canvas, .tc-single-tiddler-window embed, .tc-single-tiddler-window iframe { max-width: 100%; }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler-controls.css ** */\n\n.tc-tiddler-frame .tc-tiddler-controls { display: block; width: 100%; text-align: right; font-size: 1.5rem; } .tc-tiddler-controls .tc-drop-down, .tc-tiddler-controls .tc-drop-down .tc-drop-down { font-size: 1.25rem; } .tc-tiddler-controls > span > button, .tc-tiddler-controls > span > span > button, .tc-tiddler-controls > span > span > span > button { vertical-align: baseline; margin-left: .5rem; } @media (min-width: 28rem) { .tc-tiddler-frame .tc-tiddler-controls { } .tc-tiddler-controls > span > button { margin-left: 1rem; } } @media (min-width: 42rem) { .tc-tiddler-frame .tc-tiddler-controls { font-size: 2.25rem; } .tc-tiddler-controls > span > button { margin-left: .5rem; } } .tc-tiddler-controls button svg, .tc-tiddler-controls button img { fill: rgb(143, 143, 143); } .tc-tiddler-controls button.tc-selected svg { fill: rgb(64, 64, 64); } .tc-tiddler-controls button.tc-btn-invisible:hover svg { fill: rgb(64, 64, 64); } .tc-tiddler-controls button svg.tc-image-info-button { fill: ; } .tc-tiddler-controls button svg.tc-image-edit-button { fill: ; } .tc-tiddler-controls button svg.tc-image-close-button { fill: ; } .tc-tiddler-controls button svg.tc-image-delete-button { fill: ; } .tc-tiddler-controls button svg.tc-image-cancel-button { fill: ; } .tc-tiddler-controls button svg.tc-image-done-button { fill: ; } .tc-tiddler-controls button svg.tc-image-button { height: 0.75em; }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler-frameless.css ** */\n\n.tc-tiddler-frame { position: relative; padding: 1rem; margin-bottom: 2rem; background-color: rgb(245, 245, 245); } @media (min-width: 28rem) { .tc-tiddler-frame { padding: 2rem; } } @media (min-width: 42rem) { .tc-tiddler-frame { padding-left: 2rem; padding-right: 2rem; border-radius: .125rem; } .tc-tiddler-view-frame { max-width: 54rem; } } @media (min-width: 77rem) { .tc-tiddler-frame { padding-left: 4rem; padding-right: 4rem; height: auto; } .tc-tiddler-view-frame { width: 54rem; } }\n\n/* ** $:/themes/telmiger/bricks/components/tiddler-info-panel.css ** */\n\n.tc-tiddler-info { padding-top: 1rem; padding-bottom: 1rem; border-top-style: solid; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-color: #dddddd; background-color: #f8f8f8; } .tc-tiddler-info p { margin-top: .25rem; margin-bottom: .25rem; } .tc-tiddler-frame .tc-tiddler-info .tc-tab-set { margin-left: 0; } .tc-tiddler-info .tc-tab-content { padding-left: .5rem; padding-right: .5rem; } .tc-tiddler-info .tc-tab-content p > label { padding-bottom: 1rem; display: inline-block; } .tc-tiddler-info .tc-tab-content p > label + button, .tc-tiddler-info .tc-tab-content p > label + span > button { position: absolute; margin-left: 1rem; } .tc-tiddler-info .tc-tab-content p > label + button .tc-btn-text, .tc-tiddler-info .tc-tab-content p > label + span > button .tc-btn-text { display: none; } .tc-tiddler-info .tc-tab-content p > i { position: absolute; margin-left: 4rem; line-height: 1; max-width: 20em; } .tc-view-field-table { width: 100%; } .tc-view-field-name { width: 1%; text-align: right; font-style: italic; font-weight: 200; } .tc-view-field-value { } @media (min-width: 28rem) { .tc-tiddler-info { margin-top: 0; margin-bottom: .25rem; padding-right: 1rem; padding-left: 2rem; } .tc-tiddler-frame .tc-tiddler-info .tc-tab-set { margin-left: -1rem; margin-right: 0; } } @media (min-width: 42rem) { .tc-tiddler-info { margin-top: 0; margin-bottom: 1rem; } }\n\n/* ** $:/themes/telmiger/bricks/components/tree-macro.css ** */\n\n.tc-tree div { padding-left: .5rem; } .tc-tree ol { list-style-type: none; padding-left: 0; margin-top: 0; } .tc-tree ol ol { padding-left: 1em; } .tc-tree button { color: #acacac; } .tc-tree svg { fill: #acacac; } .tc-tree span svg { width: 1em; height: 1em; vertical-align: baseline; } .tc-tree li span { color: lightgray; }\n\n/* ** $:/themes/telmiger/bricks/drafts-list.css ** */\n\n.tc-drafts-list { z-index: 2000; position: fixed; font-size: 0.8em; left: 0; bottom: 0; } .tc-drafts-list a.tc-tiddlylink { margin: 0 0.5em; padding: 4px 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid #ffffff; background: #ff0000; color: #ffffff; fill: #ffffff; } .tc-drafts-list a svg { width: 1em; height: 1em; margin-right: .25rem; vertical-align: text-bottom; }\n\n/* ** $:/themes/telmiger/bricks/edit/diffs.css ** */\n\n.tc-diff-equal { background-color: ; color: rgb(13, 13, 13); } .tc-diff-insert { background-color: #aaefad; color: rgb(13, 13, 13); } .tc-diff-delete { background-color: #ffc9c9; color: rgb(13, 13, 13); } .tc-diff-invisible { background-color: ; color: rgb(115, 115, 115); } .tc-diff-tiddlers th { text-align: right; background: rgb(245, 245, 245); font-weight: normal; font-style: italic; } .tc-diff-tiddlers pre { margin: 0; padding: 0; border: none; background: none; }\n\n/* ** $:/themes/telmiger/bricks/edit/editor-choosers.css ** */\n\n.tc-colour-chooser a { padding: 3px; width: 2em; height: 2em; vertical-align: middle; } .tc-image-chooser, .tc-colour-chooser { white-space: normal; } .tc-image-chooser a, .tc-colour-chooser a { display: inline-block; vertical-align: top; position: relative; } .tc-image-chooser a { padding: 2px; margin: 2px; width: 4em; height: 4em; border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); } .tc-image-chooser a:hover, .tc-colour-chooser a:hover { padding: 0; border-width: .125rem; border-style: solid; border-color: rgb(80, 150, 110); background: rgb(80, 150, 110); } .tc-image-chooser a svg, .tc-image-chooser a img { display: inline-block; width: auto; height: auto; max-width: 3.5em; max-height: 3.5em; position: absolute; top: 0; bottom: 0; left: 0; right: 0; }\n\n/* ** $:/themes/telmiger/bricks/edit/editor-toolbar.css ** */\n\n.tc-editor-toolbar { margin-top: .5rem; margin-bottom: .5rem; } .tc-editor-toolbar button { vertical-align: middle; background-color: rgba(0,0,0,0.08); fill: rgb(13, 13, 13); border-radius: .25rem; padding: .25rem; margin-top: .125rem; margin-bottom: .125rem; margin-right: 0; margin-left: .25rem; } .tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct { margin-left: .125rem; border-radius: .5rem; width: 1em; } .tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group { box-shadow: 1px 1px 2px rgb(64, 64, 64); } .tc-editor-toolbar button.tc-selected { background-color: rgb(80, 150, 110); } .tc-editor-toolbar button svg { width: 1.6em; height: 1.2em; } .tc-editor-toolbar button:hover, .tc-editor-toolbar .tc-text-editor-toolbar-more button:hover svg { background-color: rgb(64, 64, 64); fill: rgb(245, 245, 245); } .tc-editor-toolbar .tc-text-editor-toolbar-more { font-size: .875rem; padding-left: 1rem; margin-left: 2rem; } .tc-editor-toolbar .tc-text-editor-toolbar-more .tc-reveal { line-height: 1.25; margin-bottom: .5rem; } .tc-editor-toolbar .tc-text-editor-toolbar-more button { display: inline-block; position: absolute; left: 1rem; padding: .25rem; width: auto; } .tc-editor-toolbar .tc-search-results { padding: 0; }\n\n/* ** $:/themes/telmiger/bricks/edit/editor.css ** */\n\niframe.tc-edit-texteditor { background-color: transparent; } .tc-tiddler-frame .tc-edit-texteditor { width: 100%; margin: 4px 0 0 0; } .tc-tiddler-frame textarea.tc-edit-texteditor, .tc-tiddler-frame iframe.tc-edit-texteditor { padding: .5rem; background-color: #F7F7F7; line-height: 1.3em; -webkit-appearance: none; -moz-appearance: none; } .tc-tiddler-frame input.tc-edit-texteditor { border-style: none; border-width: 0; border-left-style: solid; border-left-width: 1px; border-width: .5rem; border-bottom-style: solid; border-bottom-width: 1px; padding: .25rem; line-height: 1.25; background-color: #F7F7F7; border-color: #ccc; }\n\n/* ** $:/themes/telmiger/bricks/edit/preview-fonts.css ** */\n\n.tc-tiddler-preview-preview h1 { font-size: 1.875rem; margin-bottom: 2rem; } .tc-tiddler-preview-preview h2 { font-size: 1.5rem; margin-bottom: 2rem; } .tc-tiddler-preview-preview h3 { font-size: 1.25rem; margin-bottom: 1rem; } .tc-tiddler-preview-preview h4 { font-size: 1rem; margin-bottom: 1rem; } .tc-tiddler-preview-preview h5 { font-size: .875rem; margin-bottom: 1rem; font-family: georgia, times, serif; } .tc-tiddler-preview-preview h6 { font-size: .75rem; margin-bottom: .5rem; font-family: georgia, times, serif; } .tc-tiddler-preview-preview * + h1, section > h1:first-child { margin-top: 4rem; } .tc-tiddler-preview-preview *:not(h1) + h2, section > h2:first-child { margin-top: 4rem; } .tc-tiddler-preview-preview *:not(h2) + h3, section > h3:first-child { margin-top: 2rem; } .tc-tiddler-preview-preview *:not(h3) + h4, section > h4:first-child { margin-top: 2rem; } .tc-tiddler-preview-preview *:not(h4) + h5, section > h5:first-child { margin-top: 2rem; } .tc-tiddler-preview-preview *:not(h5) + h6, section > h6:first-child { margin-top: 2rem; }\n\n/* ** $:/themes/telmiger/bricks/edit/tiddler-manager.css ** */\n\n.tc-manager-wrapper { } .tc-manager-controls { } .tc-manager-control { margin-top: .5rem; margin-bottom: .5rem; } .tc-manager-list { width: 100%; border-top-style: solid; border-top-width: 1px; border-right-style: solid; border-right-width: 1px; border-left-style: solid; border-left-width: 1px; border-color: rgb(115, 115, 115); } .tc-manager-list-item { } .tc-manager-list-item-heading { display: block; width: 100%; text-align: left; border-bottom-style: solid; border-bottom-width: 1px; border-color: rgb(115, 115, 115); padding: 3px; } .tc-manager-list-item-heading-selected { font-weight: bold; color: rgb(245, 245, 245); fill: rgb(245, 245, 245); background-color: rgb(13, 13, 13); } .tc-manager-list-item-heading:hover { background: rgb(80, 150, 110); color: rgb(245, 245, 245); } .tc-manager-list-item-content { display: flex; } .tc-manager-list-item-content-sidebar { flex: 1 0; background: #F7F7F7; border-right-style: solid; border-right-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-width: .25rem; border-color: rgb(115, 115, 115); white-space: nowrap; } .tc-manager-list-item-content-item-heading { display: block; width: 100%; text-align: left; background: rgb(115, 115, 115); text-transform: uppercase; font-size: .875rem; font-weight: bold; padding-top: .5rem; padding-bottom: .5rem; } .tc-manager-list-item-content-item-body { padding-left: .5rem; padding-right: .5rem; } .tc-manager-list-item-content-item-body > pre { margin-top: .5rem; margin-bottom: .5rem; border: none; background: inherit; } .tc-manager-list-item-content-tiddler { flex: 3 1; border-right-style: solid; border-right-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; <.bl> border-width: .25rem; border-color: rgb(115, 115, 115); } .tc-manager-list-item-content-item-body > table { border: none; padding: 0; margin: 0; } .tc-manager-list-item-content-item-body > table td { border: none; } .tc-manager-icon-editor > button { width: 100%; } .tc-manager-icon-editor > button > svg, .tc-manager-icon-editor > button > button { width: 100%; height: auto; }\n\n/* ** $:/themes/telmiger/bricks/edit/tiddler.css ** */\n\n.tc-tiddler-frame.tc-tiddler-edit-frame { border-style: solid; border-width: 1px; margin-left: .25rem; margin-right: .25rem; width: auto; border-color: #ff4136; } @media (min-width: 28rem) { .tc-tiddler-frame.tc-tiddler-edit-frame { margin-right: 0; margin-left: auto; } } @media (min-width: 42rem) { .tc-tiddler-frame.tc-tiddler-edit-frame { margin-right: calc(66vw - 26rem); } } @media (min-width: 77rem) { .tc-tiddler-frame.tc-tiddler-edit-frame { width: calc(100% - 1.5rem); max-width: calc(54rem + 54rem); margin-left: 1rem; margin-right: 1rem; } .tc-keyboard { width: 100%; } } .tc-tiddler-edit-frame em.tc-edit { color: rgb(115, 115, 115); font-style: normal; } .tc-edit-type-dropdown a.tc-tiddlylink-missing { font-style: normal; } input.tc-titlebar.tc-edit-texteditor { margin-bottom: 1rem; } .tc-edit-tags { margin-bottom: 1rem; background-color: #F7F7F7; } .tc-edit-add-tag { display: inline-block; margin-left: .5rem; padding-left: .5rem; } .tc-edit-add-tag .tc-add-tag-name input { width: 50%; } .tc-edit-add-tag .tc-keyboard { display:inline; } .tc-edit-tags .tc-tag-label { display: inline-block; } .tc-edit-tags-list { margin-top: 1rem; margin-bottom: 1rem; margin-left: 0; margin-right: 0; } .tc-tag-label .tc-remove-tag-button { padding-left: .25rem; color: rgb(242, 242, 242); } .tc-tiddler-preview { } .tc-tiddler-preview-preview { float: right; width: 49%; border: 1px solid #ccc; margin: 4px 0 0 3px; padding: .5rem; } .tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor { width: 49%; } .tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor { max-width: 49%; } .tc-type-selector { margin-bottom: .5rem; fill: rgb(143, 143, 143); } .tc-type-selector button:hover svg { fill: rgb(64, 64, 64); } .tc-edit-fields { width: 100%; } .tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td { border-style: none; border-width: 0; padding: .25rem; } .tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) { background-color: #f0f4f0; } .tc-edit-fields > tbody > .tc-edit-field:nth-child(even) { background-color: #e0e8e0; } .tc-edit-field-name { text-align: right; } .tc-edit-field-value input { width: 100%; } .tc-edit-field-remove svg { height: 1em; width: 1em; vertical-align: middle; fill: rgb(143, 143, 143); } .tc-edit-field-remove button:hover svg { fill: rgb(64, 64, 64); } .tc-edit-field-add-name { display: inline-block; min-width: 15%; max-width: 30%; margin-right: 1rem; } .tc-edit-field-add-value { display: inline-block; min-width: 38%; max-width: 50%; margin-right: 1rem; } .tc-edit-field-add-button { display: inline-block; } .tc-tiddler-frame .tc-binary-warning { width: 100%; height: 5em; text-align: center; padding: 3em 3em 6em 3em; background: rgb(255, 255, 102); border: 1px solid rgb(232, 232, 125); } canvas.tc-edit-bitmapeditor { border: 6px solid rgba(255,255,255,1); cursor: crosshair; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; margin-top: 6px; margin-bottom: 6px; } .tc-edit-bitmapeditor-width { display: block; } .tc-edit-bitmapeditor-height { display: block; }\n\n/* ** $:/themes/telmiger/bricks/elements/blockquotes.css ** */\n\nblockquote, q { quotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\"; } blockquote { border-left-style: solid; border-left-width: 1px; border-width: .5rem; border-color: rgb(89, 166, 122); padding-left: 1rem; margin-left: 1rem; } blockquote cite { display: inline-block; padding-top: .5rem; } blockquote.tc-big-quote { font-family: Georgia, serif; position: relative; background: rgba(0,0,0,0.08); border-style: none; border-width: 0; border-radius: 1rem; margin-top: 2rem; margin-bottom: 2rem; margin-left: 1rem; margin-right: 1rem; padding: 1rem; padding-left: 2rem; max-width: 38rem; } blockquote.tc-big-quote p { font-size: 1rem; max-width: 30em; } blockquote.tc-big-quote cite:before { content: \"\\2014 \\2009\"; } blockquote.tc-big-quote:before { position: absolute; left: -1.2rem; top: 2.4rem; color: rgb(89, 166, 122); content: open-quote; font-size: 6rem; line-height: 0.1em; } blockquote.tc-big-quote:after { position: absolute; right: -1.2rem; bottom: -.6rem; font-family: Georgia, serif; color: rgb(89, 166, 122); content: close-quote; font-size: 6rem; line-height: 0.1em; } @media (min-width: 28rem) { blockquote.tc-big-quote { border-style: none; border-width: 0; border-radius: 1rem; margin-top: 2rem; margin-bottom: 2rem; margin-left: 4rem; margin-right: 4rem; padding: 1rem; padding-left: 2rem; } blockquote.tc-big-quote p { font-size: 1.25rem; } blockquote.tc-big-quote:before { font-size: 9.5rem; left: -4.25rem; top: 3.25rem; } blockquote.tc-big-quote:after { font-size: 9.5rem; right: -4.25rem; bottom: -1.75rem; } }\n\n/* ** $:/themes/telmiger/bricks/elements/buttons.css ** */\n\nhtml button { cursor: pointer; font-size: 1em; color: rgb(13, 13, 13); background: rgba(0,0,0,0.08); border-color: rgba(255, 255, 255, 0.8); border-style: solid; border-width: 1px; border-radius: .25rem; } button:not([class]), button[class=\"\"] { line-height: 1.5; padding-left: .5rem; padding-right: .5rem; border-style: solid; border-width: 1px; opacity: 1; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } button:not([class]):hover, button:not([class]):focus { opacity: .5; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } button:not([class]):active { opacity: .8; -webkit-transition: opacity .15s ease-out; transition: opacity .15s ease-out; } .tc-tiddler-info .tc-tab-content button, .tc-sidebar-lists .tc-tab-content p > button, .tc-sidebar-lists .tc-tab-content p > span:not(.tc-tag-list-item) > button, .tc-sidebar-lists .tc-file-input-wrapper button, .tc-sidebar-lists .tc-popup-keep button, .tc-add-tag-button button, .tc-edit-field-add-button button { border-radius: .25rem; border-style: none; border-width: 0; color: ; background: linear-gradient(to bottom,rgba(99,99,99,.1) 0,rgba(0,0,0,.125) 100%); text-decoration: none; font-weight: 700; padding-top: .25rem; padding-bottom: .25rem; padding-left: 1rem; padding-right: 1rem; margin-right: 1rem; min-width: 5rem; } .tc-tiddler-info .tc-tab-content button:hover, .tc-tab-content p > button:hover, .tc-sidebar-lists .tc-tab-content p > span:not(.tc-tag-list-item) > button:hover, .tc-sidebar-lists .tc-file-input-wrapper:hover button, .tc-sidebar-lists .tc-popup-keep:hover button, .tc-add-tag-button button:hover, .tc-edit-field-add-button button:hover { background: linear-gradient(to bottom,rgba(99,99,99,.3) 0,rgba(99,99,99,.3) 100%); } .tc-add-tag-button button, .tc-edit-field-add-button button { font-size: .875rem; padding-top: .25rem; padding-bottom: .25rem; padding-left: .5rem; padding-right: .5rem; margin-right: .5rem; min-width: 3rem; } .tc-sidebar-lists .tc-tab-content p > button, .tc-sidebar-lists .tc-tab-content p > span:not(.tc-tag-list-item) > button, .tc-sidebar-lists .tc-file-input-wrapper button, .tc-sidebar-lists .tc-popup-keep button, .tc-tiddler-info .tc-tab-content button { border-style: solid; border-width: 1px; border-radius: .25rem; font-size: .75rem; padding-left: .5rem; padding-right: .5rem; margin-right: .25rem; min-width: 2rem; } button svg, button img, label svg, label img { vertical-align: middle; } .tc-btn-invisible { border: none; border-radius: 0; margin: 0; padding: 0; background: none; cursor: pointer; text-align: left; } .tc-btn-boxed { font-size: 0.6em; padding: 0.2em; margin: 1px; border-style: solid; border-width: 1px; border-color: rgb(143, 143, 143); border-radius: 0.25em; } html body.tc-body .tc-btn-boxed svg { font-size: 1.6666em; } .tc-btn-boxed:hover { background: rgb(115, 115, 115); color: rgb(245, 245, 245); } html body.tc-body .tc-btn-boxed:hover svg { fill: rgb(245, 245, 245); } .tc-btn-rounded { font-size: 0.5em; line-height: 2; padding: 0em 0.3em 0.2em 0.4em; margin: 1px; border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); background: rgb(115, 115, 115); color: rgb(245, 245, 245); border-radius: 2em; } .tc-btn-rounded:hover { border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); background: rgb(245, 245, 245); color: rgb(115, 115, 115); } .tc-btn-text { padding: 0; margin: 0; } button.tc-btn-big-green, a.tc-btn-big-green { display: inline-block; font-size: 1.25rem; line-height: 1.5; padding-top: .5rem; padding-bottom: .5rem; padding-left: 1.25rem; padding-right: 1.25rem; margin-top: .5rem; margin-bottom: .5rem; margin-right: .5rem; margin-left: 0; border-style: none; border-width: 0; background: #19a974; color: rgb(245, 245, 245); fill: rgb(245, 245, 245); font-weight: 400; text-decoration: none; } body.tc-body button.tc-btn-big-green:hover { background-color: #19a719; } .tc-btn-big-green svg, .tc-btn-big-green img { margin-top: 0; vertical-align: middle; fill: rgb(245, 245, 245); } .tc-sidebar-lists input { color: rgb(13, 13, 13); } .tc-sidebar-lists button { color: rgb(245, 245, 245); fill: rgb(245, 245, 245); } .tc-sidebar-lists .tc-droppable { display: block; padding-left: 1rem; } .tc-sidebar-lists button.tc-btn-mini { font-size: 1rem; position: absolute; width: 1rem; margin-left: -1rem; } .tc-sidebar-lists button.tc-btn-mini + a { display: inline-block; margin-left: .25rem; } .tc-sidebar-lists button.tc-btn-mini { color: rgb(150, 150, 150); } .tc-sidebar-lists button.tc-btn-mini:hover { color: rgb(227, 227, 227); } .tc-sidebar-lists .tc-tab-set .tc-tab-content p .tc-droppable > button.tc-btn-mini { width: auto; font-size: .875rem; margin-top: 1rem; margin-left: -1rem; color: rgb(255, 255, 255); } .tc-unfold-banner svg, .tc-fold-banner svg { height: 0.75em; fill: rgb(143, 143, 143); } .tc-unfold-banner:hover svg, .tc-fold-banner:hover svg { fill: rgb(64, 64, 64); } html body.tc-body .tc-btn-rounded svg { font-size: 1.6666em; fill: rgb(245, 245, 245); } html body.tc-body .tc-btn-rounded:hover svg { fill: rgb(115, 115, 115); } .tc-btn-icon svg { height: 1em; width: 1em; fill: rgb(143, 143, 143); } svg.tc-image-button { padding: 0px 1px 1px 0px; } svg.tc-image-button, .tc-image-button img { height: 1em; width: 1em; max-width: 100%; max-height: 100%; } .tc-page-controls svg.tc-image-new-button { fill: ; } .tc-page-controls svg.tc-image-options-button { fill: ; } .tc-page-controls svg.tc-image-save-button { fill: ; } .tc-fold-banner, .tc-unfold-banner { position: relative; padding: 0; margin: 0; background: none; border: none; right: 0; width: 100%; text-align: right; } .tc-unfold-banner { border-top: 2px solid; border-color: #f8f8f8; background: none; } .tc-fold-banner:hover svg { background: #f8f8f8; } .tc-unfold-banner:hover { border-top: 2px solid; border-color: #dddddd; background: #f8f8f8; }\n\n/* ** $:/themes/telmiger/bricks/elements/buttons/big-new.css ** */\n\n#navigator-main button.te-big-new-btn { position: fixed; z-index: 1201; right: 1rem; bottom: 0; margin-bottom: 1.5rem; font-size: 2rem; text-align: center; line-height:0; color: rgba(255,255,255,.8); border: 1px solid transparent; border-radius: 5rem; height: 3rem; width: 3rem; } #navigator-main button.te-big-new-btn:hover, #navigator-main button.te-big-new-btn:active, #navigator-main button.te-big-new-btn:focus { background-color: #181818; border-color: rgb(70, 70, 70); } #navigator-main button.te-big-new-btn svg.te-new { fill: rgba(255,255,255,.8); } #navigator-main button.te-big-new-btn:hover svg.te-new, #navigator-main button.te-big-new-btn:active svg.te-new, #navigator-main button.te-big-new-btn:focus svg.te-new { fill: rgba(255,255,255,.8); } @media (min-width: 28rem) { #navigator-main button.te-big-new-btn { right: 2rem; margin-bottom: 1rem; height: 4rem; width: 4rem; } } @media (min-width: 42rem) { #navigator-main button.te-big-new-btn { right: 2rem; margin-bottom: 0.5rem; height: 5rem; width: 5rem; } } @media (min-width: 77rem) { #navigator-main button.te-big-new-btn { right: 2rem; } button .large-screen-only { position: absolute; right: 3rem; width: 20rem; bottom: 0.25rem; color: rgb(13, 13, 13); } } @media (max-height: 20rem) { #navigator-main button.te-big-new-btn { height: 3rem; width: 3rem; } } \n\n/* ** $:/themes/telmiger/bricks/elements/details.css ** */\n\ndetails .tc-drop-down[hidden=\"true\"] { display: none; } @media (min-width: 42rem) { details > span { padding-top: 1rem; padding-bottom: 1rem; padding-left: 2rem; padding-right: 2rem; } }\n\n/* ** $:/themes/telmiger/bricks/elements/images.css ** */\n\nimg { max-width: 100%; } .tc-bordered-image { border-style: solid; border-width: 1px; border-color: rgb(115, 115, 115); padding: 5px; margin: 5px; }\n\n/* ** $:/themes/telmiger/bricks/elements/links.css ** */\n\na { overflow-wrap: break-word; } .tc-tiddlylink, .tc-tiddlylink-external { text-decoration: none; transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:link, .tc-tiddlylink-external:link, .tc-tiddlylink:visited, .tc-tiddlylink-external:visited { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:hover, .tc-tiddlylink-external:hover { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:active, .tc-tiddlylink-external:active { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } .tc-tiddlylink:focus, .tc-tiddlylink-external:focus { transition: color .15s ease-in, text-decoration .15s ease-in, background-color .15s ease-in; } button.tc-tiddlylink, a.tc-tiddlylink { text-decoration: none; font-weight: normal; color: #00449e; -webkit-user-select: inherit; } button.tc-tiddlylink:hover, a.tc-tiddlylink:hover { text-decoration: underline; } a.tc-tiddlylink-resolves { } a.tc-tiddlylink-shadow { font-weight: bold; } a.tc-tiddlylink-shadow.tc-tiddlylink-resolves { font-weight: normal; } a.tc-tiddlylink-missing { font-style: italic; } a.tc-tiddlylink-external { text-decoration: underline; color: #357edd; background-color: inherit; } a.tc-tiddlylink-external:visited { color: #00449e; background-color: inherit; } a.tc-tiddlylink-external:hover { color: inherit; background-color: inherit; } .tc-sidebar-lists a.tc-tiddlylink { font-size: .875rem; line-height: 1.25; color: rgba(255,255,255,.8); max-width: 100% } .tc-sidebar-lists .tc-btn-mini + a.tc-tiddlylink { margin-bottom: .25rem; } .tc-sidebar-lists a.tc-tiddlylink:hover, button.tc-btn-invisible.tc-missing-tiddler-label:hover { color: rgba(191, 191, 191, 0.8); } .tc-sidebar-header .tc-missing-tiddler-label { font-size: .875rem; line-height: 1.25; margin-bottom: .25rem; color: rgb(255, 255, 255); text-align: left; font-style: italic; } button.tc-btn-invisible.tc-missing-tiddler-label { max-width: 100%; }\n\n/* ** $:/themes/telmiger/bricks/elements/lists.css ** */\n\nul, ol { margin-top: 1rem; max-width: 40rem; } ul ul, ol ol, ul ol, ol ul { margin-top: .5rem; } ol li, ul li { line-height: 1.25; } ol { padding-left: 2rem; } ul { padding-left: 1rem; } li:first-child { margin-top: .5rem; } li:not(:last-child) { padding-bottom: .5rem; }\n\n/* ** $:/themes/telmiger/bricks/elements/tables.css ** */\n\ntable { border-collapse: collapse; border-spacing: 0; border-style: solid; border-width: 1px; border-color: rgba(0,0,0,0.125); width: auto; max-width: 100%; caption-side: bottom; margin-bottom: 2rem; } table th { text-align: left; } tr:nth-child(odd) { background-color: rgba(0,0,0,0.08); } tr:nth-child(even) { background-color: rgba(0,0,0,0.03); } table th, table td { padding-top: .5rem; padding-bottom: .5rem; padding-left: 1rem; padding-right: 1rem; } table thead tr td, table th { background-color: rgba(0,0,0,.1); background-color: rgba(0,0,0,0.125); font-weight: bold; } table tfoot tr td { background-color: rgba(0,0,0,.4); } .tc-csv-table { white-space: nowrap; }\n\n/* ** $:/themes/telmiger/bricks/elements/text/two-columns.css ** */\n\n.cf { *zoom: 1; } .cf:before, .cf:after { content: \" \"; display: table; } .cf:after { clear: both; } .fl { float: left; _display: inline; } .w-100 { width: 100%; } @media screen and (min-width: 30em) { .w-50-ns { width: 50%; } }\n\n/* ** $:/themes/telmiger/bricks/functions/drag-drop.css ** */\n\n.tc-tiddler-dragger { position: relative; z-index: -10000; } .tc-tiddler-dragger-inner { position: absolute; top: -1000px; left: -1000px; display: inline-block; padding: 8px 20px; font-size: 16.9px; font-weight: bold; line-height: 20px; color: rgb(245, 245, 245); text-shadow: 0 1px 0 rgba(0, 0, 0, 1); white-space: nowrap; vertical-align: baseline; background-color: rgb(13, 13, 13); border-radius: 20px; } .tc-tiddler-dragger-cover { position: absolute; background-color: rgb(245, 245, 245); } .tc-dropzone { position: relative; } .tc-dropzone.tc-dragover:before { z-index: 10000; display: block; position: fixed; top: 0; left: 0; right: 0; background: #9eebcf; text-align: center; content: \"Drop here (or use the 'Escape' key to cancel)\"; } .tc-droppable.tc-dragover > .tc-droppable-placeholder { display: block; border: 2px dashed #9eebcf; } .tc-draggable { cursor: move; }\n\n/* ** $:/themes/telmiger/bricks/functions/print.css ** */\n\n@media print { .screen-only, .tc-tiddler-frame .tc-tiddler-controls { display: none; } h1, h2, h3, h4, h5, h6 { break-inside: avoid; } body .tc-sidebar-scrollable { position: relative; top: 0; bottom: unset; left: 0; box-shadow: none; } body .tc-sidebar-header > .tc-reveal { width: 100%; padding: 0; margin: 0; margin-bottom: 2rem; border-bottom-style: solid; border-bottom-width: 1px; border-color: rgb(80, 150, 110); } body.tc-body { background-color: transparent; } body .tc-topbar, body .tc-page-controls, body .tc-sidebar-lists { display: none; } body .tc-story-river { margin: 0; padding: 0; } body .tc-story-river .tc-tiddler-frame { margin: 0; border: none; padding: 0; } }\n\n/* ** $:/themes/telmiger/bricks/functions/zoomin.css ** */\n\n.tc-storyview-zoomin-tiddler { position: absolute; display: block; width: 100%; } @media (min-width: 77rem) { body .tc-story-river > .tc-storyview-zoomin-tiddler, body .tc-story-river > .tc-storyview-zoomin-tiddler.tc-tiddler-edit-frame { width: calc(100% - 4rem); margin-left: auto; margin-right: auto; } }\n\n/* ** $:/themes/telmiger/bricks/todo-components/thumbnail.css ** */\n\n.tc-thumbnail-wrapper { position: relative; display: inline-block; margin: 6px; vertical-align: top; } .tc-thumbnail-right-wrapper { float:right; margin: 0.5em 0 0.5em 0.5em; } .tc-thumbnail-image { text-align: center; overflow: hidden; border-radius: 3px; } .tc-thumbnail-image svg, .tc-thumbnail-image img { filter: alpha(opacity=1); opacity: 1; min-width: 100%; min-height: 100%; max-width: 100%; } .tc-thumbnail-wrapper:hover .tc-thumbnail-image svg, .tc-thumbnail-wrapper:hover .tc-thumbnail-image img { filter: alpha(opacity=0.8); opacity: 0.8; } .tc-thumbnail-background { position: absolute; border-radius: 3px; } .tc-thumbnail-icon svg, .tc-thumbnail-icon img { width: 3em; height: 3em;\n -webkit-filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));\n -moz-filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));\n filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));\n} .tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg, .tc-thumbnail-wrapper:hover .tc-thumbnail-icon img { fill: #fff;\n -webkit-filter: drop-shadow(3px 3px 4px rgba(0,0,0,0.6));\n -moz-filter: drop-shadow(3px 3px 4px rgba(0,0,0,0.6));\n filter: drop-shadow(3px 3px 4px rgba(0,0,0,0.6));\n} .tc-thumbnail-icon { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: -webkit-flex; -webkit-align-items: center; -webkit-justify-content: center; display: flex; align-items: center; justify-content: center; } .tc-thumbnail-caption { position: absolute; background-color: #777; color: #fff; text-align: center; bottom: 0; width: 100%; filter: alpha(opacity=0.9); opacity: 0.9; line-height: 1.4; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; } .tc-thumbnail-wrapper:hover .tc-thumbnail-caption { filter: alpha(opacity=1); opacity: 1; }\n\n/* ** $:/themes/telmiger/bricks/todo-components/toc.css ** */\n\n.tc-sidebar-lists .tc-table-of-contents { white-space: nowrap; } .tc-table-of-contents button { color: rgb(255, 255, 255); } .tc-table-of-contents svg { width: 0.7em; height: 0.7em; vertical-align: middle; fill: rgb(255, 255, 255); } .tc-table-of-contents ol { list-style-type: none; padding-left: 0; } .tc-table-of-contents ol ol { padding-left: 1em; } .tc-table-of-contents li { font-size: 1.0em; font-weight: bold; } .tc-table-of-contents li a { font-weight: bold; } .tc-table-of-contents li li { font-size: 0.95em; font-weight: normal; line-height: 1.4; } .tc-table-of-contents li li a { font-weight: normal; } .tc-table-of-contents li li li { font-size: 0.95em; font-weight: 200; line-height: 1.5; } .tc-table-of-contents li li li li { font-size: 0.95em; font-weight: 200; } .tc-tabbed-table-of-contents { display: -webkit-flex; display: flex; } .tc-tabbed-table-of-contents .tc-table-of-contents { z-index: 100; display: inline-block; padding-left: 1em; max-width: 50%; -webkit-flex: 0 0 auto; flex: 0 0 auto; background: rgb(225, 225, 225); border-left: 1px solid; border-top: 1px solid; border-bottom: 1px solid; border-color: rgb(80, 150, 110); } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a, .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a { display: block; padding: 0.12em 1em 0.12em 0.25em; } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a { border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; border-color: rgb(225, 225, 225); } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover { text-decoration: none; border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; border-color: rgb(80, 150, 110); background: rgb(80, 150, 110); } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a { border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; border-color: rgb(80, 150, 110); background: rgb(245, 245, 245); margin-right: -1px; } .tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover { text-decoration: none; } .tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content { display: inline-block; vertical-align: top; padding-left: 1.5em; padding-right: 1.5em; border: 1px solid; border-color: rgb(80, 150, 110); -webkit-flex: 1 0 50%; flex: 1 0 50%; }\n\n/* ** $:/themes/telmiger/bricks/todo-components/tree.css ** */\n\n.tc-tree div { padding-left: 14px; } .tc-tree ol { list-style-type: none; padding-left: 0; margin-top: 0; } .tc-tree ol ol { padding-left: 1em; } .tc-tree button { color: #acacac; } .tc-tree svg { fill: #acacac; } .tc-tree span svg { width: 1em; height: 1em; vertical-align: baseline; } .tc-tree li span { color: lightgray; }\n\n/* ** $:/themes/telmiger/navigator/styles/nav-top.css ** */\n\n.story-backdrop + div { padding-top: 4rem; } .tc-topbar.tc-topbar-right { display: block; position: absolute; width: 100vw; top: 0; left: 0; right: 0; max-height: 3rem; overflow: hidden; background-color: black; color: white; z-index: 1200; box-shadow: 0 1px 5px rgba(125, 200, 200, 0.5); } @media screen and (min-height: 570px) { .tc-topbar.tc-topbar-right { position: fixed; } } #navigator-top ul { height: 3rem; line-height: 1; padding: 0; margin-top: .5rem; } #navigator-top ul li { list-style: none; display: inline; margin: 0; } #navigator-top ul li:first-child { position: absolute; left: 1rem; } #navigator-top ul li+li { position: absolute; left: calc(100vw / 2 - 0.75rem); } #navigator-top ul li:last-child { position: absolute; right: 1rem; left: auto; } @media (min-width: 28rem) { #navigator-top ul li:first-child { left: 2rem; } #navigator-top ul li:last-child { right: 2rem; } } @media (min-width: 42rem) { #navigator-top ul li:first-child { left: 4rem; } #navigator-top ul li:last-child { right: 4rem; } } @media (min-width: 77rem) { #navigator-top ul li:first-child { } } #navigator-top button { margin: 0; background: none; border: none; }\n\n/* ** $:/themes/telmiger/navigator/styles/nav.css ** */\n\n#navigator-main { position: fixed; z-index: 1200; width: 100vw; right: 0; bottom: 0; left: 0; margin: 0; padding-left: 1rem; padding-right: 1rem; height: 3rem; text-align: left; font-size: 1.66rem; } @media (min-width: 28rem) { #navigator-main { padding-left: 2rem; padding-right: 2rem; } } @media (min-width: 42rem) { #navigator-main { padding-left: 4rem; padding-right: 4rem; } } @media (min-width: 77rem) { #navigator-main { padding-left: 8rem; padding-right: 8rem; } } .shortcut-code { display: inline; font-size: .875rem; color: rgb(115, 115, 115); } .shortcut-code kbd { border: none; background-color: transparent; } #navigator-main button { margin: 0; margin-right: 1rem; background: none; border: none; } #navigator-main button:hover, #navigator-main button:focus, #navigator-main button:active { background: none; border: none; } #navigator-main button:hover svg, #navigator-main button:focus svg, #navigator-main button:active svg { fill: rgb(13, 13, 13); } #navigator-main button > svg { fill: rgb(115, 115, 115); color: rgb(115, 115, 115); } #navigator-main button:hover svg { fill: rgb(13, 13, 13); } #navigator-main button.tc-selected svg { fill: rgb(13, 13, 13); } @media (min-width: 42rem) { #navigator-main button { margin-right: 2rem; } } @media (min-width: 77rem) { #navigator-main button { margin-right: 4rem; } } #navigator-main .te-close-sidebar-btn { position: fixed; z-index: 10; top: 0; left: 0; height: 100vh; width: 50vw; border: none; background: none; margin: 0; padding: 0; } @media (min-width: 42rem) { #navigator-main .te-close-sidebar-btn { display: none; } } .tc-story-river .tc-tiddler-frame:last-of-type { margin-bottom: 8rem; } ",
"title": "$:/themes/telmiger/navigator/styles/static.css",
"modifier": "Thomas Elmiger",
"modified": "20190408153010121",
"tags": "$:/tags/Stylesheet"
},
"$:/palettes/navigator/penguin": {
"text": "_dropdown-link-foreground: rgb(232, 232, 232)\n_edit-background: rgb(247, 247, 247)\n_edit-background-focus: rgb(252, 252, 252)\n_sidebar-background: #181818\n_zzz_Bricks-special-above_:\nalert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(245, 245, 245)\nblockquote-bar: rgb(89, 166, 122)\nbutton-background: rgba(0,0,0,0.08)\nbutton-border: rgba(255, 255, 255, 0.8)\nbutton-foreground: rgb(13, 13, 13)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: #e7040f\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: rgb(13, 13, 13)\ndiff-equal-background:\ndiff-equal-foreground: rgb(13, 13, 13)\ndiff-insert-background: #aaefad\ndiff-insert-foreground: rgb(13, 13, 13)\ndiff-invisible-background:\ndiff-invisible-foreground: rgb(115, 115, 115)\ndirty-indicator: #ff4136\ndownload-background: #19a974\ndownload-foreground: rgb(245, 245, 245)\ndragger-background: rgb(13, 13, 13)\ndragger-foreground: rgb(245, 245, 245)\ndropdown-background: rgb(232, 232, 232)\ndropdown-border: rgb(115, 115, 115)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #357edd\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00449e\nforeground: rgb(13, 13, 13)\nmessage-background: #cdecff\nmessage-border: #96ccff\nmessage-foreground: #00449e\nmodal-backdrop: rgb(13, 13, 13)\nmodal-background: rgb(245, 245, 245)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(115, 115, 115)\nnotification-background: rgb(150, 80, 120)\nnotification-border: rgb(242, 242, 242)\npage-background: rgb(245, 245, 245)\npre-background: rgba(0,0,0,0.08)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(80, 150, 110)\nsidebar-button-foreground: rgb(245, 245, 245)\nsidebar-controls-foreground: rgb(150, 150, 150)\nsidebar-controls-foreground-hover: rgb(227, 227, 227)\nsidebar-foreground: rgb(255, 255, 255)\nsidebar-foreground-shadow: rgba(255,255,255,0.5)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.5)\nsidebar-muted-foreground-hover: rgb(255, 255, 255)\nsidebar-tab-background: rgb(70, 70, 70)\nsidebar-tab-background-selected: #181818\nsidebar-tab-border: rgba(255, 255, 255, 0.8)\nsidebar-tab-border-selected: rgba(255, 255, 255, 0.8)\nsidebar-tab-divider: rgba(255, 255, 255, 0.8)\nsidebar-tab-foreground: rgba(255,255,255,.8)\nsidebar-tab-foreground-selected: rgba(255,255,255,.8)\nsidebar-tiddler-link-foreground: rgba(255,255,255,.8)\nsidebar-tiddler-link-foreground-hover: rgba(191, 191, 191, 0.8)\nsite-title-foreground: rgb(80, 150, 110)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgb(225, 225, 225)\ntab-background-selected: rgb(245, 245, 245)\ntab-border: rgb(80, 150, 110)\ntab-border-selected: rgb(80, 150, 110)\ntab-divider: rgb(80, 150, 110)\ntab-foreground: rgb(13, 13, 13)\ntab-foreground-selected: rgb(13, 13, 13)\ntable-border: rgba(0,0,0,.1)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(80, 150, 110)\ntag-foreground: rgb(242, 242, 242)\ntiddler-background: rgb(245, 245, 245)\ntiddler-border: rgb(89, 166, 122)\ntiddler-controls-foreground: rgb(143, 143, 143)\ntiddler-controls-foreground-hover: rgb(64, 64, 64)\ntiddler-controls-foreground-selected: rgb(64, 64, 64)\ntiddler-editor-background: #F7F7F7\ntiddler-editor-border: #ccc\ntiddler-editor-border-image: rgba(255,255,255,1)\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: rgb(245, 245, 245)\ntiddler-link-foreground: #00449e\ntiddler-subtitle-foreground: rgb(110, 110, 110)\ntiddler-title-foreground: rgb(64, 120, 88)\ntoolbar-cancel-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-done-button:\ntoolbar-edit-button:\ntoolbar-info-button:\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\nuntagged-background: rgb(150, 80, 120)\nvery-muted-foreground: rgb(89, 166, 122)",
"type": "application/x-tiddler-dictionary",
"title": "$:/palettes/navigator/penguin",
"tags": "$:/tags/Palette",
"name": "Penguin",
"modifier": "Thomas Elmiger",
"modified": "20190302134319465",
"description": "Penguin – Mostly black and white",
"creator": "Thomas Elmiger",
"created": "20190302133253839"
},
"$:/themes/telmiger/navigator/ui/Buttons/new-tiddler-big": {
"text": "<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=\"te-big-new-btn tc-btn-invisible\">\n<span class=\"shortcut-code large-screen-only\">\n<kbd>{{$:/config/shortcuts-mac/new-tiddler}}</kbd> => <kbd>{{$:/config/shortcuts/save-tiddler}}</kbd> / <kbd>Escape</kbd>\n</span>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/themes/telmiger/navigator/icons/new}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>",
"title": "$:/themes/telmiger/navigator/ui/Buttons/new-tiddler-big",
"modifier": "Thomas Elmiger",
"modified": "20190217210901494",
"list-after": "$:/themes/telmiger/navigator/TopLeftBar",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"creator": "Thomas Elmiger",
"created": "20190201135607628",
"caption": "{{$:/plugins/telmiger/icons/new}} {{$:/language/Buttons/NewTiddler/Caption}}"
},
"$:/themes/telmiger/navigator/ui/Buttons/about": {
"created": "20190208064547584",
"creator": "Thomas Elmiger",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/themes/telmiger/navigator\" tooltip={{!!description}} aria-label={{!!description}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/themes/telmiger/navigator/icon}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">About Navigator</span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/themes/telmiger/navigator]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n",
"title": "$:/themes/telmiger/navigator/ui/Buttons/about",
"tags": "$:/tags/PageControls",
"modifier": "Thomas Elmiger",
"modified": "20190303095444038",
"description": "Go to Navigator theme",
"caption": "{{$:/themes/telmiger/navigator/icon}} About Navigator",
"list-before": "$:/themes/telmiger/navigator/ui/Buttons/menu"
},
"$:/palette": {
"text": "$:/palettes/navigator/penguin",
"title": "$:/palette",
"modifier": "Thomas Elmiger",
"modified": "20190302155851643",
"creator": "Thomas Elmiger",
"created": "20180317160745662"
},
"$:/config/PageControlButtons/Visibility/$:/themes/telmiger/navigator/ui/Buttons/about": {
"created": "20190303095000040",
"creator": "Thomas Elmiger",
"text": "hide",
"title": "$:/config/PageControlButtons/Visibility/$:/themes/telmiger/navigator/ui/Buttons/about",
"modified": "20190303095000040",
"modifier": "Thomas Elmiger"
},
"$:/themes/telmiger/navigator/ui/Buttons/control-panel": {
"created": "20190407131945966",
"creator": "Thomas Elmiger",
"text": "\\define open-control-panel()\n<$action-navigate $to=\"$:/ControlPanel\"/>\n\\end\n\n\\define control-panel-button(class:\"not-selected\")\n<$button tooltip=\"show/hide control panel\" aria-label=\"show/hide control panel\" class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n<$list filter=\"[<__class__>prefix[tc-selected]]\" emptyMessage=<<open-control-panel>>>\n<$action-sendmessage $message=\"tm-close-tiddler\" $param=\"$:/ControlPanel\"/>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>",
"title": "$:/themes/telmiger/navigator/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"modified": "20190407141117452",
"modifier": "Thomas Elmiger"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/centralised/styles.tid": {
"title": "$:/themes/tiddlywiki/centralised/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml .tc-page-container {\n\t\ttext-align: center;\n\t}\n\n\thtml .tc-story-river {\n\t\tposition: relative;\n\t\twidth: 770px;\n\t\tpadding: 42px;\n\t\tmargin: 0 auto;\n\t\ttext-align: left;\n\t}\n\n\thtml .tc-sidebar-scrollable {\n\t\ttext-align: left;\n\t\tleft: 50%;\n\t\tright: 0;\n\t\tmargin-left: 343px;\n\t}\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/readonly/styles.tid": {
"title": "$:/themes/tiddlywiki/readonly/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define button-selector(title)\nbutton.$title$, .tc-drop-down button.$title$, div.$title$\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fclone>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fdelete>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fedit>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-here>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-journal-here>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fimport>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fmanager>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-image>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-journal>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-tiddler>> {\n\tdisplay: none;\n}"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/seamless/base": {
"title": "$:/themes/tiddlywiki/seamless/base",
"tags": "[[$:/tags/Stylesheet]]",
"list-after": "$:/themes/tiddlywiki/vanilla/base",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nRules copied from Snow White\n*/\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected svg {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal-displayed {\n\t<<filter \"blur(4px)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n/*\nSeamless modifications\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t/* Drop the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-frame {\n\t\tpadding: 0;\n\t}\n\n\t/* Move the sidebar up so that the title lines up */\n\tbody.tc-body .tc-sidebar-scrollable {\n\t\tpadding: 43px 0 28px 42px;\n\t}\n\n\t/* Stop the tiddler info panel from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-info {\n\t\tmargin: 0;\n\t}\n\n\t/* Stop message boxes from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-message-box {\n\t\tmargin: 21px 0 21px 0;\n\t}\n\n}\n\n/* Use the tiddler background colour for the page background */\nhtml body.tc-body {\n\tbackground-color: <<colour background>>;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour background>>;\n}\n\n/* Adjust the colour of the page controls */\nbody.tc-body .tc-page-controls svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n/* Adjust the colour of the sidebar selected tabs */\nbody.tc-body .tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour background>>;\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/starlight/arvo.woff": {
"title": "$:/themes/tiddlywiki/starlight/arvo.woff",
"text": "d09GRgABAAAAADn0AAwAAAAAWXgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABHAAAAFMAAABgd9Zm82NtYXAAAAFwAAACwAAABiJywnghZ2FzcAAABDAAAAAYAAAAGABZACxnbHlmAAAESAAALEAAAEMw49DYfmhlYWQAADCIAAAANQAAADb6MXFtaGhlYQAAMMAAAAAgAAAAJBEVCUFobXR4AAAw4AAAAmQAAAOA90pQtmtlcm4AADNEAAAA2wAAAVz1kvXhbG9jYQAANCAAAAHCAAABwoxMexRtYXhwAAA15AAAACAAAAAgAzIHJm5hbWUAADYEAAACTgAABZeRsQXhcG9zdAAAOFQAAAGeAAACLHojM/14nGNgYj7OOIGBlYGBdRarMQMDozyEZr7IkMbEwMAAwhDQwMCwHEg5wvje/kHeDA4MCkqSbCL/NBny2Dcw/lJgYBR0AMqx8LC+AVIKDAwASlsMnQB4nO2SZ3NNURSGn3NdUaMHIeK4eheidyLRu+gkjB69JiRa1CREb9F77z0h0UWNMMwY1/lgwjd+AHO99zDKDOMP2DPvOmevs/c6e6/3AXJhy+nEwDsCNNObkYOPkam5iaVcBzoxivGEEkZHOtOFrnSjCU1pRnea04KWtKI1bWhLO9oTwjSmM5oxjGUcPXCoqpPc+JCHvOQjPwUoiC+FKEwRilKM4pTAj5KUojT+lKEsPelFb9ZSjlgCKa+TVMBFRSpRmSpUpRrVqUFNalGbOtSlHkHUpwHBNKQRjZlAFBOZpDvs5QQnOc1l9nOQDNK5QQo3ucVt7nKHe9znAZk85BFPeMpjstjJDrJ5xnN2qcI8pjCZN/ShL/0Ip79yccxXXMxmxZF2716xip8jgZWK8WxhDckk/cgPYCCD9DzCcQ7YmcEMYSjDGE4ELzV/i5v1JBLJiO97VkuvpWOc4ShnOcV5LnCRc1zhqvKXSOMaqSxiBjOZxWwWsoA5RBPDXJyOQK0JlTteB+rKtTY6QYS+xen2T8jhIx7D1wgyIo05RpzjruO+402uVLOE6W8Gmi6zitnMDDFnmIvMeFcxl5/L3+Oxyagn99vq9JH6x2518inv+WQUVJ0I1Yl13FGdV6pT3CxtBth1mv6hTgHwZEhpnk+KHyS398qeXtJo79uX4/D5mdXRCgMryAq2qlk9rbFWfyvc3dud4Z4lXkO1zNurKLtb06Qr0jvDIZJtGU5F57dmGnn58/gX578z/SufyTYfiSJgnSiZLz4S5HOS9oXLjXniYzkr1O1V4me1fFkmNgaygY1sEh1H5Okx0eDldDFbxekl29cD4nWq+Eq13T3IdZaKvnQRfEP0pojfeLbJv8fqfJZ43Sl6tojZbJvaFywRSfvYziG5c5g9YmPudzJiREm0zdzr/3T8p+PvdHwF87BilAABAAUACAAKAAwABQANAAcAOAAH//8ACnicjXsJQFNX1vC7770E3JBAwipLCEkMEEjySAIEwr4vsm8iAgKCGyIiIqJ1QdwQXGutWsuo49hobadqa61LrXXajjPjON0+u0w/p/XvlGn9nda2Si7/vfclEND/m682eeS8+84999yz3XPOo2iqkaJYF8EQxVBOFOUuFUmN6NPInBgun0/fscoFQ4/EjYIACv1HU5MpSjCMxk6n3ChKzjFShpNI9RyQAnQFUoZ1XbPS+kb7QSjeCD4BSvDxfii2/gL+NmQB5fCExSJIeHTFQp+kj6PZ+tG8w4LvKS9KTukoysiJZHqBzp+WiIVO/oxE7ELLpEAk1ZlpfWQ4LXP4s39ggD5ZNbgydVG9Nj8qIHXli1XWXFAMajWFZllwXFEEfAGUa4rigoPNRREWdvfLdGrH4JzaIxqf1MIqzdyjq9LoQThZk1vHhRUmKOhDUKRIKFZr52aFUxSgMkb+W3BcOBlRRQGFQhbkgijypzmdwegpFLKyoGAFosLNEMzpPDw8OQl7LfnzzcuvbMkp7r2w/PA/i84ozsGfBp+Hwx8sXHgVTDm47f0+bgFbtWx93bFPV+64s7P2uZeLFr3X1f4JmPniIAj8sGvW4oRXMW8RPwQHEW/FlBTvg86fRTxgZYi9IplUxI0uno5suji4cY5ON2fj4MUm6x8HBkDxUPMbW/Pzt77RLBgy1G05cbVpwdsnt80zoLU/Xlz1wserV/3tUCVeG+b5TTSHO9lpmQjttAR9RJyITNPPmm9a74IbMJr2u/n47YEBwRAsAhT0tVghuhQjfFgOxvCIxuEhsmDHQk+y/ox2fxSH9wnrsIVHgHn8o+AO4nEoWrPIhZEFKcYzVaZQODkwXqqXigRSxbLtLxTueWTj68Cfd4fVfpz8+ZY2zPv1l5dfeaiF5fQ6IdDMas9RzLPx96NVhe36V5dtpOuOf7Ky5x875rz5rsWqsq1BeBStwRf9kEpkNupHV6HHMLQ29nUwNDAAxfuHd5PlgKH9zOL9giHL40UWCy21fokWtcdigXrwwShv6DaEdwrmzSheWT/4B0IzA/Pj1OPFhBOAahxxo9ehsRLbWCT0TkInpcFoZvQi2T7w3VqJNMxDn2wxRYgV/u7HyLMepqRUaW7x9MpCWWaKScIu43UTy8/HZF5PRAYmH2Ct1AOH1cnYLlDVYW2iFw/CJutxaAFDB/CqdgjiT52y3rIeREuqpL+xE2hfj0CI8LrZaCRqqLdLDGIHPcU10Mf10uMttrVN9wpwvQzj7XuNnneC6Hkvm45LHQkCSK/RX0ijwd/BV+AeuNHfD8WD1u9PWu8hK2Jh111+dFfgd/nxWkTQ9kd/EJget1pG6RLKkf0Q2/ZPCsa2DhjRUqPB0LoRyhqP8GwfAPvp15xPIvoeXWW/fXwNL+/lxzINAwnvsM4/RPLoTinRah1UnPVwk4hpIau0q59NKpmAQ3D4jwuwJB55EUy9gv6CPx3puLo5q2DnlaaOtzdnFfa+6Y+V/IWjWMm7PoR/P3oUfvVR14W6Y//VufrekbK6Y3dWbr+zs862d+wNovsBvO7TvP2zr0hqM34KpP4NjS91p6asPrUA/psXyGIgip6bqty8VzCkn3+gvmj3kgTr93iBUBYQW2la2s3LRwa8QNaopExojeH0hCUio8sbOV4dZUFO7hPWTF/Yfu9Y5diS55z4Z19i3gpTdIXL/qmJZfWa3N49KarQBsKFXRcWYy4UbLrh5b75Fpi6b4wN++G/b20WicJN0abUqJLoGVH508B8wpWvBwlXtny2u25MprMQX6RUmANfkHvwdOc8pQwiU/Y0FnU0vNSdpsqsN3lzavmU4g00/LQ1YO2Sa3Z+yQi/9vD8im6ZmyWeojJlh8Jzl8DN1e125vnHVpha1xBZyx/5ku0T0lQy+jXGEE9Pm58KCqeVMj1HrBXPM6UynNFHmtFvNAzZM2Z/Qm5VeM6ybEVERtnM92dvq9bmbr28rP14a4p7znBE8fK0lMW5Ki5/btidjI6S8JSNl7sKtrSU+GX/xJ4oj/CWxeaHJRVoZ7gk+WU1bCyrPrIiWV+xLNbSUhUXEBhXZowriVW4mD1S6jaUlu1flqhIrY2xYLqRoRO0En+NvLXIZtH0RKzA9W3w+E1Bxk249CCUWNiDQ2AALh16XG9Bz7WODAknE77b7JJtZTazaFsz+tkKvns+umFbUenA/Oij4Lve2Yc/6lp56/mKbUjTrOa1v2+NDF98tpd+G1mX4qPQUlF+8qfD9CXM05GHiLav0BwuvP6iGELGGy0Z8xMY2gAl8F9wxiYwtBH0gBf7ieZiK/W4hd1J9gTFIpMeEp2xPz+GAv0tc56MnoWz4J9gA+yBt2AawdUCNoBQcBCseJbHqHr0McHaJoh59C7bh/CeRHQNjvkF3ohyo5dRIs+BoaWwEViqofgNeBFeeAWK54EzsKkLDO1CoU/IC5gFN6zHLRZwDcYhwzqbjjp1CtaCF3j7xaF5Qnn63XmUBPOoYeSQ3wF+QHsYmTFYiozYNrhkBcIJvcE9xM5V1n8jnMh92HCxiOXUNPQDEDemB8Qvs9uGW+gb7zw+zWy0FrzDpgumPj4yDMvvslUjFDhF6HD4T0N+j1AsNdKIIjRKgrw6Sw1TBxqRLqaN3GUesDKkiXFImoRCIgGRZha5bE+jzUw4Kc0MFnkJjguxzTQaR63HdVP/7Jy1VZwysWzuPHVG3UwQGFOgiyjNjveIk5fXNmgrB+oNoA3eHpZnJUW5g08MFYnB/sacGmOapmiJOakxmwuYNsm5xFig95km8Z2+zkvlJwqt3FZrfWRZ6xag8vinV3hKmCpOJeFtR/TIfXaLUEx5YJuOohSDgbPb1SCFEkmxDAQJnUQeHnadjQb5SQeLGk92peT0XmjJ7dVc2EfnZ27SBq6uTlhRaeDKlgvF1kEuNmfr1fbuD3bNUgcnCpqgdyxnvS3lNLUDNeWbq7X83laN3GWnsuqnxZDYvBLG0ZhxnITJD1lXkrisRKstbU2s2RFywL+8pSdr0fmerLzN55rqXk5qpn/JTjPU95eXbZ+nn1OZk9CYoSzY9f7Kle/vLExJtZC1Vo18yx5Ha/XCGg94tzG6Q2QikYxBs4vGiKFvgPT98LRuY3Hz2Z7sjI0XlmWvju5rKFoaoVufkrS8TKcpXSkUP9pvKeGiM/tublx5fVuuVAX6Hsu0WjolRKGt3lxes2uezjb/XQaySuS9QtD8Yg9PzFUSMI/RgAyhh4cEYCmRhjNAPG2q/DfzC54rzm78U0vz79dlmrvOdbYfmsdNFjAwOrE2RTWZ9mb9YqvB92GZ0voGtWZtWkra1j9tabm+uzS9fV+eIk8ODslT680xdRkzEc9LKIqpFxIPinR11C/oOT0vk55OePFCCbhw//4gdD740ku0pnx1jr44iRNHB86PKprLTn3WakRK9d6zg5WbKsMmi8STe0Re8+t5eaqCRlbMyikFFe0o/4S7aCIxASiN/gyRJyL8DuxmKrneUjun87pNF759aFjRtji83j+3vDoitzUz+JfwHHOEiOtJszF/tiHWzndZqH7Y7+Gwq8ygfNYnLMAtsGDrgng3P4WENqpnjm0EoBCpAgrxIIhIPGdTRhsrIvHynex8WQYyhDMy80sjijZVc8i67OhsTdgYsw+KD+5AYr5phjZYHF69ux66Ivv1aUdXXLj1CHKLF228QF9ZgmFqEuXHz8TjdLdttN0pVoFChHnPvjaJTOPrEyGTSGQRPr4amYSdOoyw0a/RDlC5RCLXINxxUAUuCu4jW0a8D4mJlQaD/kn0xSA/vGxNgXtFwe4u98BQb6/QQHd09fJGV3bq46MV/Q1R9LZp/e3M87SvVwi+GeLlHSZ1d5eG2fQU2c3biF8+9ljdKLMHzjIwKkJVYDH92kMz2LIBXgfl3Xdg+ZZSmHryjFBsGX4EUez/JtxpAX+Gn9sYRPDSGQjvJEfuVIF8xI19+4hW4ZFkv5wOswGUkcxP9svD83/YtfFbWA+y6KDswgrN0sEwRfHsekPxpmotOmPsWtmavF3XD/12dbYmbjTtwqcOdmqnH6fwKCoPig+f4bixCVriotBf5nDri3hTeLrYB4iuIBI3jJ9VbyPURiLj4jALIkiKCNJimUKEjENrWeUXqfCwTY32uXTkK7aeDeFjbncbRtvOGh1CKaxBpSB366VlbZc35+RsvtzWfmlzzjtcRXtSake5Tle2MjWpvYKjhV3v78zL63+/q/ODXQX5O99fVTHQYDQ0DFRW76rT6ep2Ybk1QRXbg3TYB588EcfH+wT7CuXj/YIJZDn4hVldUYNIWwborIwerbSryuYa2KmlNs/wp92FUh/4CtrhbdIYzvrnIINu3q5R34DtiIo9jmjgbTUnesKSYKZOsNUX9unWF47a6ZXRF5AglZeskOnWJtusBfwQrNYaRw21IvzRexa6LkpBZ6uCtXM3l9lMNb+3TC5LZB6FHNgc8+t2xzuLt0HnyeRekqbGqiefscJ+MACy3dTGZGVkVTijTfDmZhngVLKf/YFGlSdNcBaOfMX0sqFYjkfjYw9PbO9trHWMjhVKpUIx5gBl9AWlOSd4ZrLGNz7rxjMrjA07yjr3q5r+LI/LnanMMAYm5r3b2a6ds6m0ZV9s7U0m0CQXuQVp/SPjfNJC98xPbStQ5yVYQuMUbu7ySKkubUZWaE990tKCcHM2iYG5kXv0DUElWS+OxMXjfZM79hBGMPDvn5gZZmVIgiJUsyAjpSE1iDn223PYI5yMy/Gb7tbt7SfN21BHxzz7SynPx9iR79m97FQ+TnT0uCTCFpNJRDL6byCvDf417Vh13toKzXaQt2R+XG/sNmIAawyx6rm7GsAPFmtXx6owJd2B8YpR3DID4XWxxYXuvElC/8SgsRZQj+JBRgU89To8XchOtVgN9PsWy/AAs9T2rDAUPWuLKd3dOXf74wxDMGRozv5y8F9vxWIc/7B898/T8JsKjGYhkzh8ld5NUJmGr2N0trjShV+jnGMYxxDYc8xUSulzpj+9x8ETxcAEP2kG5crLV3WgvALeAYYceMICUEiJTEwLSLVYHj5E9vI0PGwh+AOQLqgRfnc7vTxOXh6BLABs6fo3XAW2LITcDli9Zgk8XkyIpfdaLI/bEU4/ZgnGk4NkGnEDx79GPhkg4cPgHHoaPPs6/bX1R1B3dfhRGw13AfUKq/AMfI3wC1rACeCLY113T6C8eQcODwDfUus9Pb/H1eA+3UMfJPcRZdW0Ety32PIPNSM/gnrqEabdOMEx1UiCI8Y8W0SwpHOim0N2oBzJzwdC1p5zsGXADDgDxh/IJ+Yc6P7B/9oQlfPMtZMvfrQtKqrns9+092cGz8gfaOvYmqL0zu13W/lX4DN4CqjPPdN4G37029/Af9xe9erco3dWd9w5UV/f97Bj9Z2jc4m+IgI+F3riM5SREwn0cmJ1HuyGN8Hx/L34OFjy21tDj/bisyASd+a2UEgFY96aGTtFTrIxk+2EeC4tpyW+Jk46M602JnJOWij9GsjoPFLeeHxFokiVzEEl3Tvcu5veGJiFHJauPEkhTZhrnvtie2LisoOzgwvmLIiz3jxDzqwjDxicG0SnDEDmEgrHzeVw5ubGjLQMqTH6k5kqTW1ON9XWsJcEuSsOly483ZXsxeVHRxSZg3PWv1xfdXZNrPCK3962yHk54eF582NK05KaM5RsjbIiW6tamlK2fYEZB5eamrKsGW6JlctS6n67KjVx5fqEOQtCshti4xvTlc8qU2YjOiuRbrTb8mKAQ+JmFI2FndIq2vdD6wjY+M5//zeKqXZZt9HFzP7hFY9c4C8WiHQATMZrzUI+UI9w4KjZ0Rc5BJI8C5yUOMMK4qJW5Cy92Judtflye8WB1bN9j7qaixujM7pmR0ZWdaXn96p3M6XWWcwahTJ/89mGxvNbCyJKVqQVcmXxMn1VV1p6ZwUXrfFkvI/zvqh6ZIhdi+b3xP4QTCBBH2kwAvfRswtPCxMBLXHzlFWWnvzSXVcXNb61qyxZB9pcMhoqEQndmSmrq6NiGzYJhqzv+Tindp9qWvvu5vSsnjeXlVuq6UFrurqguzBvdYlaU74qq7C7OITXJeQJ2an8WdjIGXxoI6/Dwsm0E+LnuXbD+k3rDdY/XGHuJg30bTSsgamWAyAOhIHpi9uBYd96+Dk65r/7HNJMhtqG7Ge50JmSIW+UjZCPLynYXK2R90DMhDjDfcJvuqP0ueXJVblccaw0d+OZ+oZXN+ZK40oicyqS2g5+pilqiTcvKdLg42l8S5HGqEiZY+QqU2fOTK3kjHNSFEJn86KdhXXHDf5F85bFzT3enZHRfXxuXNu8In/jsdrCnYvMj8+ZmvOQIDabYpry1Oq8JnqtrixRoUgs02n5K9mn+Yg/m4UCfp+kYPyxCq8OMBP2CZwGc3SFEeVv9ZThfVr05q6iZB3cGMjvT3d8Fb9fdKzYJbX7fDXepYxeskvWCkGZfXfsu4VpuI3s3cdCFbJXnk9aPJGUkd2eGOUDVvXqRMsn+OBxK95zAZWNfFWFzf6FUvFUEdKjCVjlExYl55Ab/A9jsnWz12Rnr6nktJVrcvPWVGhBaXB8hK9vRHywzBzu6xtuZgKvPf7hbfpTfuBsnbZiTR4/UMYPlNkGsv3JnbP1+tmdySkrq/T6qpVD3mpzMBkUHh8cbFZ73/x1CBQlo6OaYfbK5JROfO0c8lHHjQ2KU/vgWtfIA8FuZNM0VCI+pwqUY1kAo0OmEBd8nJAWGjlk8wBwYewLQ3qITkCRDqGVwSBwHgqpa+lOq/1dd4Y8sawqyUcr9zQvHCgs27vI7BUWl5qhALpA5ZSLojQDEA+nBRlneqhnLYyLrMpP9oMbv/EJlpuLwnUFMYEqQ4WpSfiPyNJ4WcqKF+fEtdXnRyR4mTPyFPlbG03mpq3ZsbMzTDqVO7yb2R9T/X7tCEUrXbTxmfKYeRkqn4hEBfLtyTMyZ4bkxcqkMbnqkDlckU8s0ms5KwPOwmjiP2Ui4ye/v8vKaKErkWkV+rMLyRNfd5QxaG8Z7vHvVP8A8b9z+QaPsz6ihbx96INx9EFhNa6TAOQosad0I7kUkoal3SoHGgw41N86q6s4LKy4axaMW/ozcAKSHTuABAh/Xrqk/ouhn7u7f/7X5/UYnx7hS+HxufMuTWlEbhf7XVropLdj2VI50GgwNA5UQkv95//Czw99Ub9k6c/wEfxuxw74Hfz1Zz5OMjFdDIX2F+cyjZ5Onk5KJ6VRbkTRPLj7i/zXQ4v37ln0PITK4R7B9IKO/I8y/vTHtL8Vdhc+JHWMC2w/e4GvF+FKnIRk7vrB0XPgOKw8B6sYT/AbOOc8rATHMU9H7jKhQinmKXI7Mrr7tPXEaaH017cRT3dCoXOd4Dby2c3orkg86h9ZJDgsYhbLh764jEkqAGYGVwCIbWRxnD7hMALQaH04Y49AhHqZRp5VF+MZ07zn3F+Xtd46u7c5JqZ579lbrW0fzaluhY93bB2hvji/Pj19/fkvALV1OwBfnFuX7hOZPW9lWtVqWfzh2c0vP5Oete7lhsxN0fCX6s1BIn1KgTph0aywkNzFzEVrc5zZr2BZZ2Xj5d/1NUTFLNhz9i9LW2+d27MgJi7qUGq2De+WkS/OrU9PXX36rz88k7J1zZKCiPz4yJjMZ07W1b70TPZMeZHVqSzVKosN9UKmNcY0P1fNy9H3sJdeJzzJV7p5Z/092H3nDlwsPPnsr1P38/HHPWabUE1kFvFXNUhfGRSqf71A6gCwF9zln8dRMK6BgdA7YDdcfEfo/uzPn+9HYw7QrvRO1pnEtBNs1QFlSpU+sipFia6RenRlpkZWpeJfej0PxfPDfraFr9ECm2nApJJ/4Nacg63mtPXnW+nS/LNfv0a/JUxs7i9uPNAUOfhrqvDNX1P5dbqOPGAHhGJkVZGMjMVsElK0cyBq1Csq9Y6hFJ2Tl2AK8wpOnG3U5Bv94YY3jE376+ccaU9281eIuaIY6awt5+crlWKFOLG1WKMrXmrOZ95hgjQmf125OVBmLuUeD1iYO2k7lqUntD5XHJ6byIml5bVdKQ3nN2YILwoE2tJlxsS2bC3FUo0j95y8hfvQGSOCmkWVE64hMbWVv4PC2bFkAE0yeEIakDSEfQ0eyBxynlIlrgZJcGVDhIQcF4Ia41oOXrrTseKzy4eWxsUtPXT5sxUddy4dbIk723z+YV/fT280N7/xU1/fw/PNwLWuEdzNXFGoFqtilQHaqapCeoTiXOpnJVfBHhDQn1VeVMbEryBPE6w2TPwMO34+39x8/ucd1UBraW62QCs00YcPh2Q1xGhzTGEiUXrkicOwOAseZmLhcFyKORXHKY7rLvnfrFr+P2SSkRX836+W2aZpjklYigOXpQlRzQGbPDNKazXN5zfn5W0+3xwzvyLT7z+vdTtg+LWWh4eg3UxIWFqsUcvW+euVnhhL0/kts7xV+hl8nNlIWZiTzCXk9ZGVk8sYd44B5Jumr3z22ZWv6b6rd+5c/doCtoAtsAN28NenPAsYzh0dZPnvnG/wU/QO/qJ3fJQ8zFA3EY/1wIXEGKYnoxb5f/h901Ol9w8wqLy8VIYAf73Kkz7yBOQFr5kGBJnpha4B/ujahcF4mD8P9P8Pv0nNBXzNUnQvtjkiW82F7h3kdRndc3a450z9Yr9HU+uY28wJpOfEhwJPRsngj3zD5Utn0EcojrfCPPBv/G3LPaHxG+zj3ZXunvjzpW04czuepnPhVPyNa4DMbfA9GUswgwUb7RhtuVPmNLgv9OPvAyUQf4YOz0I/2+EZ4H2jabJvth237bVldHPHjRm/p3r7JvL9SY0CKdr96eM9JL42gqPnwTE4+zyswkxjusFRWHUOLgG7rHds/OMQbzmef8jmS7kx5tL4vCFoJLU+XHfnEJFS9OGcZOQjc0dRrbvMyLnLgNRdenI4/rIZzEVfXym/KvhBfj/7ag58Mft67v9V/VBoBYvB3AL4InsamOHb+HMD1l6DXaAHf66BF2yFP1y3fJ0pYY9QQnxulAD0/2Qm21pJHx8+S/8KfvsGvA6vvwGOEfpKgZZJYVztvVkSsuZS+nurG/6AS33gyz6M8yjC+QOPEwA9/p/5AaE7bq1ksuk5cPYbwARMb8AKjLNz5EfmrnA60gmkERMlHmuI0cFh2Ot56IiBgi1QODHED50ekmXSl5mDcNtVwaKkGWcE6SuPzqt/foGhaX5EJ+c8Mf5/0LSzs1KnTorPjFQXJ86MmlUeMLV4X2ty0pKdsxotGdKm5+bn8Pu2bySNlQtDcc1dIFKQFKLESNJqjgV2dOgW8S1DTnqZnq/wOJTmnUQ0O69N2vGYRiFgu9KUIT0TXZOqCMlvz7peslrRcMuTnrxk9uJl8qjkgNM4ExBR2pl5ASS5VsZZpoCCkrwMuU4qnhQxXZtRlxgzL0c3BZTAk9PzDBaG8UjMTzeH6AJEk/RiLmV2nHlhccxUeAnT3oPijC0oTohAu0bq5pjNiEZEHKlnSBB1OEWIQThjiNndExIfIpGbcpRbUg0qfIbAZweVIXWLMsckl6Cb9O3w7BodeCe+LkW2prkaFptrMjTT2GmajNo4WF3dvFaWUhcP3tTNzSZ9bPvhA8AJL/FxjEi2//nnhZd+ieR5m4Hoy7HRp8ccxQTiSE+Pk/04lYKz+9jRSEjYgKUjgydLJptAlp1s2Lu2uRoMxtXaiKoxA0t18xpMFIzV1WSHrw3PnquDqZh8EtODVjaePkh5Ixr4xMNYWpbFKY8+9aqKmK7ljYrQMl2murNSmV+Qmx7vjX6Bu8VVar06taituEoSKA+UpBTx65JSLFMneJWKwmu2J5n9aScnPoZ1EpIipCeKp9C3B65E4myNmVYolTLpNR+FoW5zUdbqcjV7HEhmmhShSWpvmmYnu01xcnUGnv90kThPmiQzq8E3w18ticvyn+LlOswoU3cV5q2vjtRXr8+drMiICvIOjZF6R3Cxcl+D787Q3EBFZVWJ9MQJWW3bhhRb3akFyXYAku1wLNtPCHKQTZLHdR5iSa7cu9BkXrSn7HrKSs2C8ywAoc+MlY77Q57Tnlx6AWS6VvW9vmjBub5qEZgHD7qYOWRjQdZYCbkiu3mbJzxL5JSqYTewXxLPCowA2XF0aAJKehrcthPUgpIjcBvofBYOwkPH6aPgShc6guxvg4nQ3IHsbGkLsVEkD0pyuMonI17Rf8qMTvzNbBszGMEeHsEa66Qnc6cjQ9AC1pI5PZ+cE2dyn5gn5Q4c7n8S+Utjud5P2f2Mi+AWscvIFciUTp8+ih/e29PL7gfR8Mbzz6Mx5ewBRiXoJTn/cQI72v0AonWZ8WblDP2kDvHygqi8hCjp9AB/b6fF0zSxqYJeqTJQESIrmRMQHMBOD5ihj4hXuCK8SvYm4ydIIr5UqpcyftbJ9EP2Zjumq4PtZsoFN8jZlyQ9+cSgkXNhwL2cDfNMTCdQJFVGRlYmKehOJnbeRrZbV96ZHppnkgWZ8sLSO8tJbfgczKcLR14l50wzQ8LHc8aK5FDnfW45zesz4C0gjy0IV2e2zcJJOZqmBDfZfU5tttiCUbo7oQ+77+G87z9+UPetUwrcogadEeSb8M8PGsE9agH2pHJ75sIxSmWN4MOkyigvVx+pm8Ig1k6ZqTN4xjVmhwSbcmZl+/n5GaJjg9x9pjtNm3Rc6DLN2Tcyl+Mqskxqf2eC/0u2hXEW/IX4OAY5aE8j4zysHR7o6RX8Bb4Aat95xxYvskPobP8eL49gXD7TTDtNSPCBYm1ZkkKRVKbVliUoFAllpRK5dsYMrcLDQ4GvconwPXK3NFEuTyzV4tH3MdhhGK6psQdoseA6Os1g/8u5gw3wq19eZw8AHxH8EN0vRve9bfc5CZAB1X344QHBdRH8htCsZD+g7yPZe6oOTfTRSizA3uFBYnFQuDcWaPABgahlYrFMTSCC/AlK82SdHdQxF5GtvGjj0wS+GCfwDTwS+aEHFX4ikZ8CIfATNUVWp6pUqdWRkXPSVKq0OexFDHUY9Z3DzUg8GPHhNPsQvCoYftrZ+PTE0ELQNZFmgCMWWoX0flxd3WTrMrA3FSD7ACnKKQnFdd4UOoAoOfBEr7Ne6kROioBewGiYkzdhBOhCB71bN4cDu62P9/wGSpivYI1FkEB6lwMs1kek/xlCC11Kv281IK3gRu4Ki1kllUQVUnOwpHnqjQbHNigPT96t4TKoVOxgLRRj6T/WHQFRbGOz9aPdMV9tzAcg0FTk2B/V9juN+ZUVthYZq4db2Gj7zIorSYEl9UuMxb01kaS9iq7dyymE9g4qRuDQTkNXS5iqcT1U6dlp+baGGkONrdGmpFSZEOaFE9uJ9Vk6/2lQmhlb3YUbrLC7Z6aO9t3QlBGq2HVClb2mLnp6Tf2JXquM8b1Wg7gLmc4Y326lsvaNtVuFyeEei0V4ArITO65oqgn3cZAe42A+syMRjPbQSuwU2BtEFbIFYOgwyMBNoildpxfAi7hDeCvIAxm4LzS7ZZ5g6NQmENn0HOml/ZJ0g97km2mr6iJInMFkgB7kvyeT2MpJbyT1s6rCvk9N+fBj5nXwVs62DmsfqcnqmSxaisb643jfnsUVOskcsvc4DDEC9wDO1T/UR59AdytTKnTYnitCvkO+x4s5AySB6Qp3mY9rrCayJDbQPzpfpygO+a4Tn2+YeDpaqKYM9noZEiXZWNhur8EjcRstl/EhngFYXAPUfq4zg7w2MoqEci6qOlkeHh4SOzO9xqipygjrcU42YDuTER1tjE4QFLvKZrhP8ZL7hM0yyWQxOSGaWd7uRSZNUVyQX3SBXsNNnyH35IwLDTY7zFQw8cKwp9u0iQ0ejYaaTQUFm2r0kTWbCguRGO8PiskNU+dFS6XReeqw3Jgg9mpeT61RX7NxVn5PjQFfI4tNgYGm4khjabS/f3QpP+c8ZjKaM5hCYgEmJDP5NhalTT5xsU6J05u2lDqtDKmJN85OCjaULoyMyPQvSU1skumi+zMTmjKVhXfPGOb6HgyMmumZzpwOUgVGZYfEFEV6OQu1KXG+4hpZqF/s3CR4Y0PdTN/NLj4Kby1HeGCkTrJ6gYrUohAPDEalkRgFD0+jJ9kZIc4V8zbBSWlUKCbypZtT7965N3x+lLExfMuRnWqtJmz3s/2a5ujo+RE7jx8N15wMy2mMiZmfExaWMz8mpjEnjL43a0f0K12/9/Lx8Tzadjp6e17u1ugzHS95+/p4vdxyKWZLoakRj240xfBXLKNacIbtYO6Rczg2lXq249zwUuae9T2w9nV0/zDS8cXI7nrgPgBbp4MSDeTsfQ4c84jvciiJf+cd0uJwzYL7G7xhkOAu393AyPg46zQtBq8yvv8rH0AfGP2lxQGbFtehoAp8zLb9f2I/zl36RB1K9aoKDjMPJrgT+BWuRNGUM4xm2ti1CB+pOI/H54lPa2N1GP1oOGMwmgV6sG/iVJ9OD8lG5+G4sfOwEJ2H6xqebzY2N0akcYHuzgycQMjHTc931jseicsCx47Ep9KlUTFJZa05hHcH6dssJ/iWP+fjlmFAHwG7++F1eKUP7BZ8O/xPepl1B+OB17Uf/ojOf1dtuQOO7BY+BaJz4FWrG3SxupP9GPlw5JpgP6nDkHoCe+vGY/aGUPXrAQwZuSZcR+654U4/fB+gLw4dxZH6SPCbFmPmjx3GT7JRwGsP/OF879KlvfDMsLB43adpBfAtjBAsAu/B6KNHl1y7Rv8B7MkY7LQ+t47k6fA8k8g8gaQSjeaRE1tJzvMTTeWTc04HbkEhhnBd9M6ZqdV6rip1plL2NVBD5+E4PH8hvIjnPwfEAUmBMi46NKrCLPWLLtKHZMmH+phtT9DiRWiJJfVjUnN80q461JOfsKvjWSSIxjSCKBdfle/04ADxPhSuVxmjalKVoSr3IJ/pqoy6aENNZuizTnGclypAFG9ITNYZ6UpHPmLyBZXTA3xFkz1lXhFFccGy2Fmh2llekwJCdL4aFJ0GxpYY1Jwrir9Cja3ccPQoq/Gakke+EAqFKSg2Jz1acsVY5zbH4HYTvvrjJJPbOrSAhwfl4WnvXQZOlbXaynWDlxa2/aFk+43P5i3Gvy4vWP1RecsN+u8dVzZnJsVZ08zPwfwoA/2aaXsBfgfkvxYA8eHF75/pb4xKiP49/GYR/PuJxe+/PDA/KjO5/0rtsU87W/9cMLyOM4Lvr8xiVoVE4Hc/KLIHkSPX2DfZfnTOUuIeJONYvximd7SrzElGEVIJ99kxej80mbO3XFqWtzmm593bsUmZvVdW5G815d9glvl6w3R5cThuHLR2+HiB88HF4bh7cGfGxdZV7+/MDw46CR9kXGpb/cHOWQrZfHrzMrX1j94+6OxcGb9YTWs9Pbi6XdXEtq9FZ/ejJOZQkSwKX5IYe2nPnW8HsRvztScO0gnj3ty7cvD6hQvf2d/co49awA+nxr29B36hn4ciC3Qee4WP9GwMs2sFD9FecjjzihyJu4OPt7EJexPlxN4N+kDFSf3Wt7mksl1vNS66uqs0v8dSpawzL90buXjTp1k9DbHG6tWpmd1VkfqKZYKHg8ajanhkjqVi2Zs9Welb3l07//TqNGefC5qjsi+teaHF3YVZq8o16pLVebmry8KR3ozw7wgIbtEKHO0gK7W2kCJw0g8v+AuCBxJ4VyIPJz2ggl4Ex4kRJ6qdOuQAvzUKX0v9lcBJzx2B62zwzwmc9B8S/Boe/yMeP+kLI3AjD/+ch5P3WJ1eQXCaxwNWgr8jOHn30+kMgrME3gXYUfhDMt7VNn6PA3z+KLwdzCVw8v4MGe9hG/8qgZP3iAh+MY8fzYDh5P0NAve1wRcROE/nsVE6u0HbU+FrwE0H+G9H4cuBK/hoFD5/FN4Okh3GHxyFP0O9yK8L5uN3YEf5sBIsIHwj732SeYU8PdR9Mn4ifI2Nnzz8lVH4cuoPT4WvpR4ROA7i2gieyTz+kQf28ePga6hsAkdxP32I4OHhy0f6CRxJH33PAb525GeH/To2ul/doN+OXygn/Jlu48+Bp45fA759qjwsB2EO+35sdN+7wamnwtfQTk+Vk+Ugyy4PglAy3sc2byeB8/p1fVS/ujspB72zwzF/bj9VH5d7OI7vHYW3ZzrAhc+N4nlm5AT1OdZfmI/fZ7HpL5IH6oxdrxlI5g2yycOhp8LXUD87wG/Z4IieNOopcCwPgwSODZ6K4FnPr/cgPx7nAQwO8DV+PDwGwVsInvU2eagl8GkIXiAYphBcSiGfso56gdxfNzLXwd5cH7U33dRNAid98IRPoTb79N1Tx68ByqfYLbS+BZSD3bo+are6qU+eCl8DdE+xcwhPO4+H9MuS8Qbb+GwSw+lHrjEXkb+094Q8fHc44Qbb/ziS5Cl+ZDlbfjb0yQh3YoYWt3KCwxPj2om/4V5Sbts2IZR9IllLOw/a33ULQ74yaPy7bhx+wUxiO6HrpeQfR9582wn8gfYQfvPt9dfh18AXfk1egHsAXOCDV+F77YIhC/QC/8diga59e/oeWiwP0QXct/W30zX0fTwX36/KxwQyx7YHJ1I6dBPNEE8xhHsrZ0wfjRsnu/u6kcixE4inB0qlrjJuuq9cYg8YJUqF3G0I19yENyhqkiv9C+n5GR/wCW84hm4gwiEUwzVHaGHaSc+xE991DOydx/Smsf5jOobPTAOqjcmjT6DYzYXvM+X0Rvs8bcBjA/zxUkdbWwc8y7aC21C7Rdjf8PbbZJ4sJCt+wqnIpiIh9ORsCVlSO1MoSPXMYBwrkeDCg16j0WrHun08/QXjEwhKmbvYg/SeESxCPDDrX8HJc2Oa2uXRGUHhleEJC3NDa+ckFRkXHZ5f2NuUJkr8P86a5IKQ6CKDr8yYGpS7qaUsNqB5dlpW4vIjc+t21MW5pv2gSshtalkfllqskggT65Kk3l7G8vigxTX6nEjpFJcZLu6xZe25809Eag4sytsw1yCLL+WOR800h3p4q+Pk4cla6VRfbWRc3rykBS8ZdLsXlu5aGBue12ikfzIkqbwUbEs1l64NnAICDBnUqG19xWZbsS04Cs5iW0C3gLOjOvZXZCvWuXyE74NPRz5COkjSGv8PP+XQlnicY2BkYGAA4ooCnW3x/DZfGTg5GEDgxCNZSRB9kp1z/n/Tf2yc39g3ArmcDEwgUQAjPgrPAAAAeJxjYGRgYN/wj43BnOvbf9P/KZzfGIAiKOABAKJwB2t4nF2ST0iTYRzHv3ue3/O4hoWHQYcw9SAyPNUaYrZLxRhLQsSGyMsYMdZuISIWHqSDJxkvEtQY0ml0kBCJ8BASUgfr4CGiQxiIiJBg0UGGSLS+zzsH4QsfHt7397y/f9+vTKMIPtYiYtLwzT7SZo+nhS/b8O1TpNvi8LWCr5ZRtF2MdcAPlxkbJ0mk5bh5mtf85y1GTBUxewGTZqtRj4B5v2PZZBCXd4iHNgBhPckjJfsYlBw8OSLP4akD3JNVeLxbUIt895BkH56qwgsrFEwWBfmErOxiSNbg6Q0U9C5G1QniJoUbMoyoLSEqN1mrgi69hGE1iKjaRS70EXlzFeN6AqO8l5UsYrKHCZlChvlykuD7HyxIHQ845xf7HnfMOvzQGHrVAmLqM8okoW9jyHAHegS95ywW+e2XfhPER3Q/qnLCPDvoaJtD0SEdTcLAlps77GaP4YkI58phkniqhKJDtkics/iI6gNEdJV9zqLG+4+512esMR/aRIVnmnfLuoYefn9oLmJetSOv2huH2sM3/YNzdqJP/8aMfoU1k1RQl9DJ2I7TUN3lfucxpgrok9XQfZ4rZKhttvHXHnN32xgw/SiFjtCj1pFQM4jrlyjqFPsrYYA6XpEVvAj+467EIsx+lhRQMY8aX22NfmoxiFvyAdfMIea421ygu9Pc6Uicbk5Dp1XgQfrPeSmAHnJ+cr5xsbMEXrVNr7agT7POq6RELgd5Tn3aytki8KTr5yy5ph//h7PC7YhcpzfPB723/Hg6R4vAe92NhBSpJWvobhQidbupf1LXGKYkhUxQm/f+ARdUu5F4nB3OQWrCUBSF4VPBCsVABDUaJKjQgRja0oiGN3TkCsQVZODMNThz1ql0GS6gGxBHbie3fy48Pi6H+857kl44B9zoT21d1NLAdji0MyZ2xZH9YupJ4cnabuqo5WYkHU3tB+du7pYmDNhVzGZEc4VNZ+SdEZ3vijUmiZnv6tF5xoz9nsr6hKGuNCDfYWYFTu0NZ+7cXdoec58/7BW/fb+snxhwyH9uGDCh7Yo5byUkW439hyl5hV/cTdnfYLCFcnzok2SPwY4qmPvY3F25a5IFNvulJtb/BxtQXB8AAAAAFgAWADwAiADEAPYBGgE6AXwBqAG+AeQCEAIwAlwCggLCAvQDTgOSA+4ECgQ8BFwEiAS8BOIFAAUIBRQFbAWqBeIGIgZkBpQG5gcaB0gHfgeqB74ICgg8CHYIuAj4CSIJcAmcCcgJ5goOCj4KYgp+Co4KnAq8CvoLEAtIC5wLvgv+DEIMaAzSDRQNPA2yDi4OPA5SDnoOog7ADtgO5g92D4gPlg+oD8gP6hBAELwRMhFQEW4RwhHQEd4R9hIMEhwSLBI+ElAScBJ+ErgSzhLiEvgTTBOqE+wT+hQ8FGYUuhT+FSAVWhWEFZYVwhXQFfQWDBYkFlQWaBaiFrIWwhb8FzYXVhdqF5wYIBhiGJoYsBjgGSwZZhmuGgIaEho4GlgagBrWGuwbABsOG0IbiBvyHEocnBzYHSYdMh0+HUodVh1iHW4deh2GHZIdnh2qHbYdwh3OHdod5h3yHf4eCh4WHiIeLh46HkYeUh5eHmoedh6CHo4emh6mHrIevh7KHtYe4h7uHvofBh8SHx4fKh82H0IfTh9aH2Yfch+CH44fmh+mH7Ifvh/KH9Yf4h/wIDIgaCCcILgg0CDsIXghiCGYAAAAAQAAAOAAawAFAGYABAACABAALwBZAAAB3AYjAAMAAXictZLNbtNAFIWP47RJ2iRqKyG6QGJQKtFu/FNlFRAiqpCoEgmRSt2wQPmZJlZdT2Q7ibJhxwaJJ2DNBvEuvAJvwZaT8VQxFZSyII7H35w5c++dawNoWF9gIfs94J2xhSJnGRdQgjBs4x4eGy7mPBt4iKeGN3N6CQ28MVxGFe8MV3K8hXN8MLyN+/huuIo9/DBcw75VMVzHgfXI8E4u126uzj2t27CKFc6eWy8MWyhb7w0XULc+GrbRtD4ZLuY8G3hmfTO8mdNL6BVqhsvYL7w1XMnxFr4WFoa34dgNw1Uc2K8N1+DZM8N1vLQ/G97J5dpd1Xmipss4GE9Scez5nmhHqYpER6l5kDrteK56cjwL+/EKxUCm/ZbwHc9rave5jJOA9rWiLSKWoewnch36cHhklpc3MuQmd7CLdhgK7UmYJJHxXI7ELBrJWJyddoWayuhCRanoBkMZJZKF+ZM0nbZcd7FYOJcqXv2dobpyb8iOlP8YIMwcbp+NcXEChSmWiBFgjAlSfjCHGOKIz2N48HkLtBFxRXEU6PCpMKc/hcOVmKzQg+T+GUL0qVyrAgPqKbUW2aff49XMxX7CeK+4u8NPXnJXwrhZnt+51/EEvZLZJDnhuM4YcC60I6XWx4irV7qqS2oKF7eeZ53rT567dWxAx+152qw+1Oe4jpOYUyW6E3OOIyoz7h5pReAMp+jqU0ypRDyL0hkE1YA1rLTV7qx7vo6a0tuCy2uhL4d9ULob2ehwn2KH3L+4HcaV/7mC8JcYrn5rq7fq/gQl+PaKAAB4nG3PRYgUAACF4W9W3VXX7u7u7u7u7nV31h1jRmd27cRWFEXQk2JdVFSwMU9iFzY22N1XXb0J/vAOD95/eOL85ddhDfyPp5mJU0llVVRVTXU11FRLbXXUVU/9TK+hRhproqlmmmuhpVZay6KDTjrroqtuuuuhp15666OvfvobYKBBBhtiqGGGG2GkUUbLK5/8CiqksCKKKqa4EkoqJavscsgpm0S55JZHARW10VY7y62w0iqr7bLbHgccdMhhRxx12hkbfBKvrHLKqyDBGGONk2SpJT4rrYx77gfiPPDYk8zXzyzW0RprPfLQXets9dEHX3z1zRabnbLTpkAWO2zX3msn/fDdT+tt88ZbkwPMM9ciL7wy3i8T7JfmuZf2uuCcfZKluCTovIuuueyKq25Kdd0Nd9xy2zsThUwyRVjENFNFxWRIN90Ms800yxwLzLfQ+0BWx2wMZAvEOxtIsMwJx+OnJCVHI+E8U4PRUCQlORhOD0aDKblTQtNDsVAkHJucFEtLTJ8RCYVT/yyiuVIjGdF/Sizjrxv9DS6Pg1QAAA==",
"type": "application/font-woff"
},
"$:/themes/tiddlywiki/starlight/ltbg.jpg": {
"title": "$:/themes/tiddlywiki/starlight/ltbg.jpg",
"text": "/9j/4AAQSkZJRgABAgEASABIAAD/4QarRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAACvzaAAAnEAAK/NoAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRvc2gAMjAxMDowODozMCAyMzo0OToxNAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAABVKADAAQAAAABAAABVAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAAV1AAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAoACgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9E/iknTcf7ElL6ptEikkpdN3n8if/UJvgkpX5Eu/PwSH3J5SUsCknTfgkpXZKNPJLyhLukpSdN5JJKUlqlCSSlaJJJapKUEvwSS178JKf//Q9EP+oS+KUJf79UlL8/NMkB4pSkpXmkfBIQkkpfRMUuEklKSSSSUr8EvPsnTJKUkOEuT59kklK/Kl/rCXeUh/qfikpRgfkS/j4pDhL8ZSUpL8iXxTx8klP//R9ES7pFL/AF1SUrsnTJJKVp/sSPeUkklKHj4pflS7JJKX5CZLWfFOkpZL8iXdL/WElK0+9Lt8E/nzKZJSvwS+Pglolr80lKmRqkfhCf8A3pHhJS3dJLT70vypKf/S9EnskkPJL5JKV/rCSWvzT9klLJQkEklKj8EteE6b5pKUkP8Acl+BSme0pKUEkuySSlFLyCSXx7JKVqklolM88JKUlEpxPgmSUr/ekl/rKSSn/9P0T8ieE3xS/L4pKV2SKXyT+CSlkteySX5ElK+WifhNql5pKV+CU/NIJJKX/wBZTfgkl+RJSuEkpSEpKUlHikl+KSlFL5JacDhLRJSpKX4JJa9+ElP/1PRUySX8UlKn/el8E+nCUfckpZJJL8iSl0oTJfNJSjzKSXdIeCSlcpa/66JfFLvEpKV8fuS15SlIT8+6SlJJJJKVql8EtfFOElLJJfDVJJT/AP/V9E0/uSSKWqSlSUgPAp/4pueUlK+GhT/BNKSSlaJcJJHySUpL4Ja8JCUlK/GEkuySSlfFJJL4JKVyl8fv5SMpa/FJSvjolp4Jymn70lK/HySGqXdKZCSn/9b0RPGv96bt4J4SUseE+qbzSPmkpUpQklpKSl/wlN+VL/X4JJKUdU6WvwTJKV+RLskfH/al4pKUlz2SSn7klK/KlOqR/wBQkkpXkkkl/r9ySl/gmSSSU//X9ESSSKSlJJeaSSlJJR5JT/qElKlLSRCXdIJKV4d0uEv4pafNJStUoSSSUrhP8R8kySSlwmCSUJKXn70uAm51S0+P5UlKKU6p03+pSU//0PRPh9yXwS+KSSlf6hJIpTKSlRwn1mEyX+vmkpX8Uo/3pJJKV2ST+CaJSUpLVLlL8qSlafekl8EklKSS1SSUr4JfDul2lKElK++Eu6SWqSn/2f/tI2RQaG90b3Nob3AgMy4wADhCSU0EJQAAAAAAEAAAAAAAAAAAAAAAAAAAAAA4QklNA+oAAAAAGBA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KPHBsaXN0IHZlcnNpb249IjEuMCI+CjxkaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnN1YlRpY2tldC5wYXBlcl9pbmZvX3RpY2tldDwva2V5PgoJPGRpY3Q+CgkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPkxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVRpb2dhUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+Nzc0PC9yZWFsPgoJCQkJCQk8cmVhbD41OTQ8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+bmEtbGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPlVTIExldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPtAAAAAAAQAEgCTgABAAEASAJOAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAAAAAAAAAAAAABVAAAAVQAAAAJAFAAaQBjAHQAdQByAGUAIAAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAFUAAABVAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABVAAAAABSZ2h0bG9uZwAAAVQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAVQAAAAAUmdodGxvbmcAAAFUAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAFkQAAAAEAAACgAAAAoAAAAeAAASwAAAAFdQAYAAH/2P/gABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAoACgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9E/iknTcf7ElL6ptEikkpdN3n8if/UJvgkpX5Eu/PwSH3J5SUsCknTfgkpXZKNPJLyhLukpSdN5JJKUlqlCSSlaJJJapKUEvwSS178JKf//Q9EP+oS+KUJf79UlL8/NMkB4pSkpXmkfBIQkkpfRMUuEklKSSSSUr8EvPsnTJKUkOEuT59kklK/Kl/rCXeUh/qfikpRgfkS/j4pDhL8ZSUpL8iXxTx8klP//R9ES7pFL/AF1SUrsnTJJKVp/sSPeUkklKHj4pflS7JJKX5CZLWfFOkpZL8iXdL/WElK0+9Lt8E/nzKZJSvwS+Pglolr80lKmRqkfhCf8A3pHhJS3dJLT70vypKf/S9EnskkPJL5JKV/rCSWvzT9klLJQkEklKj8EteE6b5pKUkP8Acl+BSme0pKUEkuySSlFLyCSXx7JKVqklolM88JKUlEpxPgmSUr/ekl/rKSSn/9P0T8ieE3xS/L4pKV2SKXyT+CSlkteySX5ElK+WifhNql5pKV+CU/NIJJKX/wBZTfgkl+RJSuEkpSEpKUlHikl+KSlFL5JacDhLRJSpKX4JJa9+ElP/1PRUySX8UlKn/el8E+nCUfckpZJJL8iSl0oTJfNJSjzKSXdIeCSlcpa/66JfFLvEpKV8fuS15SlIT8+6SlJJJJKVql8EtfFOElLJJfDVJJT/AP/V9E0/uSSKWqSlSUgPAp/4pueUlK+GhT/BNKSSlaJcJJHySUpL4Ja8JCUlK/GEkuySSlfFJJL4JKVyl8fv5SMpa/FJSvjolp4Jymn70lK/HySGqXdKZCSn/9b0RPGv96bt4J4SUseE+qbzSPmkpUpQklpKSl/wlN+VL/X4JJKUdU6WvwTJKV+RLskfH/al4pKUlz2SSn7klK/KlOqR/wBQkkpXkkkl/r9ySl/gmSSSU//X9ESSSKSlJJeaSSlJJR5JT/qElKlLSRCXdIJKV4d0uEv4pafNJStUoSSSUrhP8R8kySSlwmCSUJKXn70uAm51S0+P5UlKKU6p03+pSU//0PRPh9yXwS+KSSlf6hJIpTKSlRwn1mEyX+vmkpX8Uo/3pJJKV2ST+CaJSUpLVLlL8qSlafekl8EklKSS1SSUr4JfDul2lKElK++Eu6SWqSn/2QA4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMAAAABADhCSU0EBgAAAAAABwAGAAEAAQEA/+EPLmh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iIHhhcDpDcmVhdGVEYXRlPSIyMDEwLTA4LTMwVDIzOjQ5OjE0LTA1OjAwIiB4YXA6TW9kaWZ5RGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOk1ldGFkYXRhRGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0iaU1hYyIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgeGFwTU06SW5zdGFuY2VJRD0idXVpZDpFQjAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgeGFwTU06RG9jdW1lbnRJRD0idXVpZDpFQTAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDkwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwOTAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs3RUY4RDFBOTcwMjlCOUNFOTAwNkUzRDcxRjgwNDdFNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjM0MCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0MCIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtGRTM2RkQ0MzU0NEI0ODUyODY3OEVERkZGOTk0MkMwRiI+IDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IPJElDQ19QUk9GSUxFAAEBAAAPFGFwcGwCAAAAbW50clJHQiBYWVogB9oAAQAEAA8AMwADYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsWM2pk1LRLUWykThyCK1QdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAAA8bW1vZAAADsgAAAAoY3BydAAADvAAAAAkWFlaIAAAAAAAAHeaAABAmQAAAxlYWVogAAAAAAAAWO0AAKuMAAAXrVhZWiAAAAAAAAAmTgAAE/UAALheWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAUUCyAQ5BZsHIQi8ClsL+w2ZDzsQ6hKXFEYWAhe5GVYa4xxxHfkfdSDyImcj0iU1JpAn5ikyKnkrvi0BLkEvgTC9MfkzNTRrNaE21DgHOTg6ZjuTPLw95D8MQDNBV0J5Q5pEuEXWRvJIDEklSjpLUUxiTXNOhE+TUKFRsVLCU9ZU6lX/VxVYLFlEWl1beFyRXalewF/VYOlh/mMXZDJlT2ZwZ5NouWnhaw1sO21tbp1vzXD8cilzVXSAdat21Hf8eSN6SXtufJJ9tn7Xf/mBGYI5g1eEcYWJhp2Hr4i+icqK04vajN6N4I7gj96Q3JHZkteT05TOlciWv5e1mKqZnZqOm36cbJ1ZnkSfLqAXoQCh6aLRo7iknqWDpminTqg0qRuqA6rsq9Ssva2mrpCverBjsUyyNLMatAC05bXKtq63kbhxuU+6KrsEu9u8sL2CvlG/Hr/qwLTBfcJGww/D2MSgxWjGL8b3x77IhclLyhDK1MuXzFnNGs3azpjPVtAT0M/RitJF0wDTu9R11S/V6daj11zYFdjO2YfaP9r527bcdd023frev9+H4FLhHuHs4rzjjORa5Sjl9ebB54zoVukg6ejqsOt47D7tBO3I7ovvTvAQ8NHxkvJS8xPz1PSV9Vf2Gfbc95/4Y/kn+ev6rvtx/DT89/25/nv/Pf//AAACBwQfBggIJQoRC/INrQ9oERUSsRQ4FbEXHhh3GckbGhx0HcgfHSBrIbUi/CQ6JXYmrCfaKQYqLitTLHctmy6/L+AxAjIiMz80XDV6NpU3rzjGOd469DwIPRo+Kz87QElBWEJkQ3FEfEWGRpFHmUiiSapKsEu1TLhNuk68T7xQvFG9UsBTxFTLVdJW2lfkWPBZ/VsLXBldJ140X0FgTGFXYmVjd2SNZaRmv2ffaQFqJWtNbHZto27Nb/ZxHnJFc2p0jnWzdtZ3+Xkbej17XnyAfaJ+w3/jgQKCIYM+hFiFcIaFh5eIpYmxiryLw4zHjcmOyI/IkMaRxJK/k7qUtJWtlqWXnJiSmYaaeZtrnFydTZ48nyugGaEGofKi3aPJpLSln6aLp3ioZqlUqkOrNKwlrReuCa78r++w4rHUssaztrSmtZa2hLdxuFu5Q7oouwq76rzGvaC+d79MwB/A8MHBwpDDYMQvxP7FzMaax2fINMkCyc7KmstlzDDM+s3Ezo3PVdAd0OTRq9Jx0zjT/dTD1YjWTdcS19fYm9le2iLa59uu3HfdQt4O3t3fruCB4VXiKuMB49jkruWD5lfnK+f96NDpoepy60LsEuzh7a7ueu9F8BDw2fGg8mfzLfPx9LX1ePY79v73wPiB+UL6A/rD+4P8Q/0D/cL+gv9A//8AAAIFA+wFvwezCZ0LYw0jDtEQbhICE4sVDxZ8F+gZQhqoHAwdcB7TIC8hhSLbJCwldCa4J/cpLiphK5YsyC35LygwVTGCMqsz0zT7NiE3RDhlOYM6oju+PNk98z8KQCBBNUJIQ1lEZ0V1RoFHjEiVSZ1Ko0upTKxNrk6wT69QrlGuUq9TsVSzVbdWvFfBWMlZ0FrZW+Fc6V3vXvVf+WD9YgFjCGQRZR1mKmc6aExpYmp5a5FsrW3IbuJv+3EScilzPnRRdWV2eHeJeJl5qXq5e8h8133lfvJ//4EMghiDIoQrhTKGNoc4iDiJNYowiyiMHY0RjgKO8Y/gkM2RuJKjk42UdpVdlkSXKJgMmO6Zz5qwm4+cbp1LniefAp/coLehkaJso0akIKT5pdKmq6eEqF6pOKoTqu6ryaylrYGuXq88sBqw+LHWsrOzkLRttUm2JbcAt9u4tLmLumC7M7wFvNW9o75vvznAAsDJwZDCVsMbw9/Eo8VmxijG6ceqyGrJKsnpyqjLZswmzOXNpM5izyDP39Cd0VvSGdLX05PUUNUO1cvWiddG2ATYwtmA2kDbAtvH3JDdW94p3vrfzeCk4X7iWuM45Bfk9eXT5rHnj+ht6UvqKusL6/Hs3u3R7snvxvDI8dDy3vPw9Qj2Ivc8+Fb5b/qI+6H8uf3R/uj//wAAbmRpbgAAAAAAAAY2AAChlgAAWEQAAEq5AACa4QAAJq4AABLNAABQDQAAVDkAAmZmAAJMzAACK4UAAwEAAAIAAAACAAYADAAUAB4AKgA2AEMAUQBgAHEAggCVAKgAvQDSAOgA/wEXATABSQFjAX4BmgG5AdoB/AIfAkMCaQKRAroC5AMQAz4DbgOgA9QECgRCBH0EugT4BTkFewW/BgQGTAaVBuAHLAd7B8sIHghyCMgJIAl6CdYKNAqVCvcLWwvBDCkMlA0ADW8N4A5TDsgPQA+6EDcQtRE3EbsSQRLJE1QT4BRtFPoViRYZFqoXPBfQGGQY+hmQGigawxtgG/8coR1EHegeix8vH9MgdyEbIb8iYyMHI6skTyTzJZkmQCbpJ5QoQSjwKaEqUysHK70sdS0vLesuqS9pMCow7jGzMnozRDQPNN01rzaEN104OTkZOf065TvQPMA9tD6rP6ZAo0GiQqNDp0StRbdGxUfXSOxKBUsiTEJNZ06PT7xQ7FIfU1RUjFXHVwZYSFmNWtJcGF1fXqdf8GE8Yohj1mUlZndnzWkmaoNr421Hbq1wF3GIcwB0f3YEd5J5J3rFfGp+F3/HgXuDMoTthquIa4owi/iNxY+ZkXKTUZU3lyOZFZsOnQyfDaESoxulKKc4qU2rZa2Cr5+xtbPGtdG317nXu9O9y7/BwbrDucW8x8XJ1MvnzgDQHdI/1GfWldjK2wXdRd+I4c/kF+Zg6Krq9O0/74vx2vQs9oP43Ps5/Zr//wAAAAEAAwAGAAoAEAAWAB0AJAAtADcAQgBOAFwAawB7AIwAnwCzAMkA4QD7ARYBNAFUAXcBmwHBAecCDwI5AmQCkQLAAvEDJANaA5EDywQHBEcEiATMBRIFWgWkBe8GPQaNBt4HMgeIB+AIOQiVCPMJUwm2ChoKgQrqC1YLxAw0DKcNGw2SDgsOhg8ED4MQBRCJEQ8RmBIjErETQhPVFGoVAhWcFjYW0hduGAsYqhlJGekaihssG88cdB0bHcQebx8dH8wgeyEpIdcihSMzI+AkjCU5JeYmkic/J+somilLKf4qsytqLCMs3i2aLlgvGC/ZMJ0xYTIoMu8zuDSDNU82HjbuN8A4lTluOko7KTwMPPM93j7MP75AtEGvQq5Dr0SyRbhGwkfOSN1J70sETBxNN05WT3hQnVHFUvBUHlVPVoNXu1j2WjJbcVyyXfRfNmB5Yb1jAWRFZYtm0WgZaWJqrGv6bUpunW/zcUxyqHQJdXB23nhTec97U3zffnKADYGwg1aFAYauiGCKFYvNjYmPR5EJks+UmpZomDuaEpvtnc2fsaGYo4OlcqdjqVirUa1Or0+xT7NLtUS3Obkruxi9A77swNPCvMSqxpzIksqNzIzOj9CW0qHUstbJ2ObbCN0x32Hhl+PU5hXoXOqm7PbvSvGi8/32Xfi/+yb9kP//AAAAAQADAAcACwARABgAHwAoADEAPABIAFYAZAB0AIUAmACsAMIA2QDyAQwBKQFHAWcBigGtAdEB9wIeAkYCcAKcAsoC+QMqA10DkgPKBAMEPwR+BL8FAQVFBYsF0wYdBmkGtgcGB1gHrAgBCFkIswkPCW4JzgoxCpYK/QtmC9IMQAywDSMNmA4QDooPBw+GEAgQjBETEZwSKBK3E0gT3BRzFQsVpRZAFtwXehgYGLkZWhn8GqAbRRvsHJYdQh3xHqIfVSAJIL0hcSIlItojjyREJPglrSZjJxgnzyiHKUIqACq/K4EsRS0MLdQuni9rMDoxCzHeMrIziTRhNTw2GDb3N9c4ujmfOog7dTxlPVk+UT9NQE5BU0JdQ2tEfkWURq1Hy0jsShBLN0xiTZFOxU/8UThSd1O6VQBWS1eaWO1aQluaXPNeUF+wYRNieWPgZUhmsWgcaYlq92xmbdZvR3C5ci9zp3UidqB4IXmkeyx8uH5Mf+WBhYMshNqGkIhNihCL2I2lj3iRT5MrlQ2W85jems6cwp64oLCirKSspq6otKq+rMuu3bDxswe1H7c6uVa7db2Pv6DBqMOrxafHncmMy3bNXM9B0SnTE9UA1u7Y3trR3MDepeB+4kzkEuXP54XpM+ra7HvuFu+u8Ujy5PSB9iH3wflj+wf8rf5V//8AAGRlc2MAAAAAAAAABWlNYWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAAwAAAAxlblVTAAAACAAAADRmckZSAAAACAAAADRpdElUAAAACAAAADQAaQBNAGEAY21tb2QAAAAAAAAGEAAAnGUAAAAAv9ORgAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAD/7gAOQWRvYmUAZEAAAAAB/9sAhAACAgICAgICAgICAwICAgMEAwICAwQFBAQEBAQFBgUFBQUFBQYGBwcIBwcGCQkKCgkJDAwMDAwMDAwMDAwMDAwMAQMDAwUEBQkGBgkNCgkKDQ8ODg4ODw8MDAwMDA8PDAwMDAwMDwwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAFUAVQDAREAAhEBAxEB/90ABAAr/8QAdwAAAwEBAQAAAAAAAAAAAAAAAQIDAAQJAQEAAAAAAAAAAAAAAAAAAAAAEAACAQMDAwMCAwgCAgEDBQABAhEhEgMAMUFRIhNhcTKBkaGxI/DB0eFCUjME8RRiQ3KSslOC0mMkNBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A9e2GTIUDksVQEZNgpBrBHaY6yJ0FXY2tcRiA7mMwbrgSCZn1oPT00FSyYiF+SupYqKUUEysT7iv4zAc6qMhcogSwE51WQGWagHYTG2gtjCq6O6JiCVIC1Nwb03ECYG86BG8YLOMiq8BiFZSCWAJJkgATM/hvoBkV6iA6+MQwgBRMmSCQARQSacU0GMjLGNmvudWSQ1kibxMRJnmugtiORCPMjITJBWGLCQTKgcE8dfroFtYKA2RsWIKiAKsyBAAa2an0P56BTkAcq0gCAA5oLl7SRtQkCTP3qQTITiIUOEOMhgAABB3tYTvt3bzoGlypSDklVDXgMVNPlMySRzyNq6BsTR4cmQnHkAKqWYBHCyAaEbXSPTbQLKMH8S4zBORrjHyJ9YNDFRHvoAcox5MbZP8AZZWn4wT28zLEccT+GgvjIxY27ybJYy03K+xqRHFfSm+gmouW7JjSbSvkVbQQBuBDTMgCm3Ggqrw+TKBUNaW5CiKMWAHU/wAdBO0h2Ug+IKTcQAsikntBAqaGR9BoFJdMeNmZMuNYQDdiQLbQRO8mZ0E7BjyBXWAR+stwtBAJisD4kAGfvoKhpNxu7p8ZBEwaLU7tFN9orzoECCVFxQ4lP/xugPAJNYiTNKDQPkbJjOTJ5CXDsMaEgAgyOYG9QAa7cUBP9dsgZWy3suQh1qab0AJmpIjqNA9oKYkXFeWWP9g9oYKQG2uH0n8dBsCwl6BmdlNrgxWYhgKbtvX6aB0sCqMkocQsdC8QIJltgTXc0M/TQMoJVcZAuDnyEm4MeVmORQ7CftoAASoOVihQFnZVE2gAiYEDeea7HQcqOSi5FaGxKGCndiO4xWgik/SJA0F3d1IV1DYe1QHBgt8RMiOJPT8wU5AFD3x5A2NcWOeBLHYEHaJ/fQFyMrgLjs8LMAUAYTcdhTYyON60poGGNMdxhnCi31tmIu5k0j7QaaBAZRk8CeRFvZ2uBBXckLWSfWvtoKY1xsuNbGZVAEXme5kBuBFNtqc++g58mV7PJlDE9wtb4kss1rwD600HQwV+0HvWbUBoAsFtweT77caB3HlcHyWEQbSxrKkkFCRBIbcHQTtJcuLkAdfHkRdlYW0kRA3JH/AL5j5bvH2eO26Vttu2mPjd27bV0H//0PX5M6Da4hQFtxigAqJN1a7dx/HQVuuuibmLSTM7AKCTFtzDY/u0ALI7IUORg4hV7kIIgEljQn8j9dACFzlIwsAlVde8sCJ/qgD2bf8AMGjIVLOpEqVgAFax3A9xJIp139BoMyBmU5iFYD/IWBUsCRWRaKnpztoEPjwuWLqwzLNFHau8SpET10FmLBmc3plKTELAImomZIWhj7dAULl8hCG2wkIXopJk1BZiQ0mfXQJ4hLoHAWyGJ2K7AkkzSDt+WgqEx+QIFhREFREkmWoTImftTpoJModFsUsWHwC27kKbXXb1knQMuRxkMqGve4of8gNFWRsJgfn7AiQmQAqcJMHGFuaSINAN135/LQBMrY1JBQPjQKVi0AMwN3dEbx+O2gtkYZWIux4hmS0s3IYmB0nmm/00CAY8vbCiLSgQxSjMAACZBp9eNAhkrkgXguIS0EAGimkzSI499AcYQEogZDBYiJYTsBzRh9/qdBsYyNCI5gdxyKCamhhjFWkzI2qNBMoQSSWMlqEyy1a7mTBFI599BRWWMarlbIcptLGhkQJm6sQNtvtoLPQyiqyrBQkCGDEtGxNBXr6c6DnVUdQsoEzFpxrcbQIIYAEVjmPpvoKW5ZOQVONWcZAoBJIkSBHrIPPOgRSDidMl4Yi7Jkq4FBsQazVqcToCyoK5ceNmDtfDMpVhW4TBiOPtoAq9qjAQRJjIJUK0MT9a804poHK/qXnHepIVAxiHckMZQED98/TQF+9bLmEsEUFipNrSxgk8DfedAUyS7kuwtCgQS1GAIFJMyLTyffQSIjwAkJEEO0iwqQo7eAY3I+2gZUvIxLgZMQC2vVbZhoiRWd4MxT10Axse96I2EAnGgUQBNP6rZ5n+MBnyqoOOy9f/AHCGghWAJikUFK+mgTGMb47rUFgm6bAsmBNKEbbyR1OwVVkcJi8LOrgPeFVoJJIHcImD9uNBghUIgwWS1Qr1XaDTYxT333qBKuqu4xgJhDM1jEBmBqAKikHefpoJHzYyJFmVUFASTVixAigkiB1oNBVmcGCWwqVvhRszUA2kbMaDQSYBGyhCIyY6liVBABJINSTPX1nQW8ieSIWz4+O42xMTZdERX47d3poP/9H2FtdCj41IW2QvbUmNyWE1MgjnQK+MUbMhW2SELCHJNAF22oOQNAr297hijAEYgFKtewBINKloFTvoCA65MmbIihYI7zABAGwidgYPTQMcjhWJC+KYx4pEBBW6efaYj30ECQiCySSAyMWUBJnYqBImvTbQU+CxllHJYY1aBIUmJqRSYp+6QBtQsCFIJZZKkKXUiCqxaCAYGgCoFGMELkJ+KAXCQtwBI+MyTFRoKsSS7EswWioKsKQCRUkbzIp0Ogg6Yggx5mKs1FViKHnuAJqev56DWK3eo7WEM4UghQtaQJEjp7egF28jEWl2CoGDAw0VIIINeRQczoMt9CMt+SQFRCQtSZJgrNDIrvTQOXXC1lpyAqCCGIAeGJWP6RAPtoHcW3B1axu7LdSoANXmIMAU/DQKww4i5UWm1LV3DKFgHc7ETPoPqCuqBAhFghbncBDMQCTAmJ4+u9ALZFIuxsS4JUNdcx2UggQTuIImaSdBFMaKRLImPIsYxkAYmYJmgB+/4aAt8VRgLm/TuNAwBNBJWpEgj220B8OW0hXqfhaCqwAWFAFFS30IpXQUIQK75AWKBgBvIUm5SRFOk9NuoMtxORSSbSGbF3bSQFBaNx99AB5wqq5LMO2HIqGhaiQPap9ugBxIsYkktC5DMwwn47k9oEESN9BlYE/p5FyHLaxBFyg7KGY7+hnjroEZVRxkDIytJJuKkXNSSKgAEftGgIJCDKLRkL9yTC3cLDFYIEdK9eAVXxwUoAUmjEi2DRmmhuJrNQdAQIY3SMuVSpGMAEmTc1RUGJmnHGgnjcs4QSyuT2NBUwQ0yTNF4npvoKXK+MMrnIAD42grDJ8oY9an2npQGyqYGNswKgjyi6kltpP9oWm356DMgZ08JrkJYm4VAU2lSZmNtvfQFDlOMpbPcVkVJAoDRh/bzHpoEzEENKBnCmSzAMF7YmagEbyBvG+4UVvEFk0Q/qAioUNQyAGmDMbV4oNBEMhDOMRMyDlEt3AAkmBSOojroKKoSFVLirXgshWgKsSKlgAa19NBiuJE+VATbBYDtAVpAIO/1im2gacZGYMHbHlMBiwMwKFTUe5n35gBa1vkrHht8f8AVETtdMfj9NB//9L2ALOjJOUqFqwtAMieBaSpM/8AOwbx9pDg3uD5WY95EgFZgjdT7ASToGzKnmDLkJGX/JUWqoAuMmh+P56AMbLzKqgcqyqJVRADGFG/PdxTQZTlyOj5WCFgy2TaTJg79BX6DQABSLWDRk7pNszkiiGo7jUfsdAoftUDEVwAsQSZUGoABrQ8wa/mFJK50CsUtNmRhW4SBAkmOOaaBiznFejUeWuDASA0gUioAgxoFxELbu65C8qR8Ste6kmsb/bQUZwv6iMqCbswImZNwoNjA3ImPXQRuxuWdGKZXURjKmQWF5UEdT+07gGxjHdlDBwYQC2SF+TRFIArJER6bgVbKpvtsIaqC4EKBQNaCSKxMUjrsDN4sIQpjg3AdpIFxMEA0iD1O300DIuMv2wqEAjGXgSSCkdNhMekaBCYBR1cnLJVJuUz3XSsRNdiI6RXQWYHtTKzKrMJZbikbWntpIMbx7baCQx45LLkGFmZlBiASJEdIpwd/poJMczkkKcgx220JUwKKYNSCRFfeRXQUhWzOr5GCst6zjpESwUGSDyT10CgtcMgxkgzfiCkXbAiDU8iBQU0E1ZA7Y2wi5ryKG7arVYVBHA9tBfKzNghgzv/ALNO+kgCVjgQSOBoCCRmhbfkSy2tadjdE0g0u4pxoMt1nw7Va0hlIBqqqIBHUzEjnQKQs5AzhcLSq2lwoPqIqaik0+mgCiXxtExkMqxLCpJJgoIqCJ/noEyK4dgzeIAGxmIUkwBQk+pG9dB0owNuNgWie9mLAySPks1gehGgnaGCFmZvJuhMXBgWHxAEjptXgnQFGFjN5GbHK9zkgMQB/cRN1fwmmg2KUIXLkBd2kg7EGkEXCoUTJ/HQIEQIcZk5bWi4XWs/dJBkkHY7zoEM2gtlUMGtRTNxmjEh4kim9KaC5ON2DJYjqdmEQVBtBAMAiDEinTQT8QaMjIoZGZsiSPkCFgmQDtJr+dQCf5cliAquMM7STepIMCCAIG0U40FBCsjNjKjHvIFoLG65SSJFKDjffQBlxXCbkYqbLYpHdKnZZBO1ProJFGYqgPnV7psuBMMTPT035+ugYf5EcMAHQu5IAYEmhlokTX+VNBWcU/8AVuO/j8cHr8os3is7c6D/0/YPK5x1UKbYDirEEMWAhY2ia/8AIHM0AmiKI8TDiVJlWB52jQLkeVscnvQMAB2N3SKWmKQB+OgYkKyeMl0Ui8oDBkQ1ZCxAHJI340BC4kxEZT23NYpIn5AkW0B7h+22gBwA46oxzMoR2UAGCJAYSAAI6/fQSTE4bO9oNjXM3awkmpECAQB0n00BQraGa5gqkOIQCIuICyRURt/wGALgq8MxYjIss67QasZkTBjrydArvbKgeVMKkgMGBUludqGJ6wNAxyBlUHK11G7lJAmhMMZ24FPpoHnGr+XGyxjxkKwEw0wSJI49fU6BWZzkuxNamRX8VQAVUAQIk0qeOs6DJiWCEYWlrytxWVKyLAf24nQCxnUnySMv+P4ypIIHJ3iN9hoNlAcIpN2XGCob5SQQlzAVk0P7QQmQvk8xBbEo/RIW9QqzAqegM130FWYY7sWNEyICGSbGBASTSlsidAGVlRRJiFl7lFCYqSCIMTFZ69QZr2nIh8ZuDY3VboADqVAoCRU9feBoCoXH2ZKY8amVY2xcYLT6g0k7zXQRvyti+YsyJflYSSoqGYzvSRT6aCuPMmPyG1b0ZvMBdcQpMWqYFABsdtADj/7PkByTjOQKWYA9wUCRwJ/foEyvjLAszm4y0ggRcbZmDEE0H7tBihVrzGRFYKBZcbasKGs2mI6fTQZ8ih3LBPKbf1BsDEgySTAaop09NA4a0DGMuSCYDkXyJ+UAkioio+ldAbrQHfIBjuuZVJIWOjUIkUFa8b6CgEO7ZcsozRfdSBSHBkf1T09tBFTkDZEFX8kPiAYiCBWCK0HJFNuNBgMgyGHDvJCKw2JaCXgRVSNyPadAuOAhusdgkxC/HtYkgRQConn3jQBThbCwTEwe0hCpAHYsgmoEgGugpjTI1zARkBlzMyCSwaJikyKHQBWBx3FwsiEUcGAxtMneINN9BsmUIAuM2HGCbUYiSFmsT8adQNvYLOPJjFmR8djsEBkEj2pzQbaDMjd9zKcIqjETEg1NwNCTJO1PfQQc/FVVMrMoBxxsaAVkECsc/WdAxyqGuQlq2KcrArEhe2a1Hy/nOgrmZwuO0BQCCXBLAg0HdbMgmdvXQT8X+x84SJm7mLbo2i2eNB//1PYLGqOHDXMkxlLsTIHdJoBXYfgRoA6hGZsKlnoWUi6GALCY/umhrX8ASy/F/itZZW0AdskC0VHymZmvryFGZPJBClUAVcpa5yBJZuqkAGPX8AxK5UbESbccXhLTG0gGpknbb76ArlXG1z5C0g/rKkTRSxPHA40CuClyCiIA3gDQyncsAsCIM++1NAXBUrhfIhCogydbpoIEXDen130BYEktkudA7tABA3Gw9QDEdfroGYUQBVVisBjFb4p3RcTJ3HTQLjIzlXyAEK0hrAZkEdxPJoKCeg0Bc5UFrY/HbBVlCmARbJFSYHQD3jQKFdiuQqrDJDsTMkHYGBuJpSnU10DDI7hWYvjVgWlVuIBMwaHnYxt+AOcjRiAe4E3oxBa4KJtkLvMxSaddArKCGd8kQCWIYRQzQwK9wrHXQI6doA/Th78gkmrMVESZkgRUetNABjZbVhFXIJBU9xkAQGuFancnfnQHG4e1goW9ScWIEVkttJAPrWa+ugMFLU/xlggQkHci0UJG0TP4SNBJmxpcmIHG5AJwgVNgmCD95B+/IEsSA12SQWZU8dgDqCDPURwJOgogEg5Lgzy1q9p6GaLUGKnrProFCsAQ6EOyk4kCkxdAF0yNwKH89AyM3kRcxLOKOS5GxuUWgd0H/iNAjXsrk48eSgAylSwn4kjtjfaONAlykIpxsfAiXC6lsHuZZBrO0U/DQVyW7QUTPJKERLH5AM0RMDcaBkRzjWBOVWBcq0RbIqBwCIiOsaDOoONALlditoRYBkWmI63Tv9qnQKFyQPMyks0l8swFkg9p42jbjQMID+TIVdLSXyCTauwiWJ7gCDSdAFuvL5FS4ALhyNJUiBJqTTY0+++gS6HKY1dRhUUEj9M0aCY236z7aBxaWx9qZGxhAMbArWLZEg0XpwZ0E72xBcHhLZIcBnugAUNvMRWnFNAbkCEqtsGcdrTIBJJ7hdK1/wCNAQ99rnIQw7y5hoiSICgV/dOgwDY0ZMhdqAkqSGm4mgA9zJH1pQDyDjyd93xqblaIuFIm6RxPvoKqsgLexkhmUnvABkEwLiJp7eo0EP05UvmLM6EO5BI9CprxNQY5O2grCeW3x5LPFFtxv333n0/loP/V9gc2UsMHY+NzBQzcStCbgNxE+v30C3KB+oiPkZirsRONe6gG3Ue8V50BEKyKuPExVZysIF0m0KamB+0U0G/2D5DlCwVCHHnysQVkCVoSYM0+vXQbvxXBMpW0hWcybd2MV7iJAqPwnQULOOwlYwrIVO0lxJio/wDGYiNAqln/AMlofOoiSAvfsbZJJEQJ9NAmId7KFjxx5REggG5a7wBzzGgOWxWZUVFqWZJkEikkn+2naPx0AR8qtlclrlLIWtJJMU4baKx0G+gKphA4ywWvtUEBSTJMAjav0gc6BrFZka041MAowYyoBEViTQ0rP30EMQRcb+FQ7Mvjy9yhR6bk12Jn24gL18r5GgCyShuRooQZpyAI40BXGzghct3jUXkgXB1MgsDzX6xoJ5GFzlsjK4Rb4lRWTtcST3AV/hoCReuPMIQ2dzsxJUxQA14rXbemgdiplKJ/2GZmcVQgd03Xem+4+2gyhrRZlIRybCk3GQZUTNaEzO+gmC7Y0yJkOOVNyCGMKpaSNjSBO9Y9wZssFsrBgqkI6xG8AqFJ5iRWfwOgisqJ71f/AGVPke0Sa91grG/X6aC5QlVBYqGtAxGrMsw8gxXYz9tAwCK2D9Ulg58ZyEGCy7cE1j7+2gVspKriLLlIUHKsUBWBtTc8HQZELEdwLO1lsEQyEkmtpgAkb9PbQbPlbG1uMXrjIOQNQigC7WiKVmmgxIhS7ISFYszFTILGAGavMVpoCjtCWKWCm05ICEEyFBHo3pA6GJ0AP6kZRhYdwLKoAYkiQQazTpFa+ugi7hWV8aC3yFVAEsGD3QF7d6aDpxlaqxRVWt/aopSSKUMx6jQTxjI5aB5sRAuclTW31EEjqf4aBcWPLkTHky9yAVHaaSIBitQT7DfQEl8lsk3u8KtwCgtJHeu9VFfSN9A748QLKGGPJK+FiZuKijkADr99BPJkGFVVBcqLD42WnUA77EintJ0Dk2M/iUoQxKu4aDLBplQBaYPOw9dAQJa3Iyvms8YADBqR60nrG3oI0GdXKyFCIAS7Vi2AGAANtI+vGgRlZmQsga5j3uBY4JNsxEGB0PE6BgDsCiBUJUkqxAjYMxO8Gm0aA2i7yWpbEeXtt+N10RM+sesRoP/W9gZORTlhX3DY2AgOJE0NJYxJr9NAXxMcbgsjYv8AILVkCBIikUIirbdNAvZK5GKA4j+o5uEEVhVboZ4mtI4Aqcyku12O9YZF/v8A7QAJFI9Y2nfQIQzZrnUHJjdS5mSgBqQGrFZHTQW7lbyZBjyWkuHMQtZm7f0oNBmOTHdCqGYn9WVUBrrboqea1P46CTP8yyYwjCFyQDLN3QxBOxE800DoMZBKLjUqO9mMwK0McRTeg9Nwym7Citixv4mIGIkWydqdQaUnQUzUYnyK4oFJAYiN5iIFOvroJKVWCLh4gzf7HzQmSSDQmu5qdBPwqbWaSMbdyERUkKAAQAxEVA9BoHxq7APkRlORgqsI3k1tIIExJNfTfQbKzpj7ncdzXGCCyxuLmg0PPoOJ0BCEu6JjkyrHIRu4FTQ0JFQTzPvoFZ3gFvm62YEbvZq9wO0cfQ9dgdQqI5XHbiBV1Vq2BWPcDO+9P+NAQuKUIXyihS0AGLaQpIiWBNK00GCt5AthCY4U5CADdFSIICgCKH050Gse6HQjFbbdCks1wG5iZ4Jg6AK+NgxKnKCb4VJNwFRT5QGiSI0Axoq341hFYXqTIAcf1CWOzDaJ0GutMFwXAIRUBW2YCgChmZPWNAy5x3shDFwrQHE7FmUDuO52gHQTv8jAnHXOD5IDSQAdgGitsb/TQNabSPMUZ4vhZoygKC4Own68aBWBYqgvOZbwGWDWAIuImqkVIjY8aCzoFJZcbTgPaQLjcVLE1qfly0aBEQ4wGJZAq1CioFygrJOxrH330EiFLGGWb7zkAi5hX5AgClTX6TOgcElUJxFxjJ8+QkBSeZ+IbkbxMz6g5OYABVJOWAWcih4JWBtb67aBlIHjl2xqFEYwDAJucCTuY/bjQc6Kq5apaAsK6XUZWC7mCdoJia+ugugY3Y2hxiKu4r3BhMCSOePbQKwxuwXKWxB5KMAe4BYoCoAMen8gkn6eJzkuhYCuQQoNYDRNwgAih39dAbhjIZVyI0x43YyzUlRHoAJ2+ugoDjP6yZC3juCu5BPy2umgAEn03poEZ0S0pkAvpZjEEK0zBoBJIgk/w0FhixkBSqDKXKXMC8/1GhMke/8APQJ4xb47P6br5XyW3zMz9dtB/9f2DfIhN5dkbKpgIWBgC6RMCsx+PXQNgElWGEYxFy/EKG5HxkTTrSemgRiVxNhRDltUDxGZrBmZBjgUFaDpoIWMZdSDIDKBABhjb2mK9pOgqRJRVxguWm4gBSGkSUkmJJ3+m8aCig5CfmBb5HBFK8TyCDzvGgQO+bIXx2tkZIAokBlqZEkGdt6aDIrTLqyrkQd9FA4iQRN3HPXbQC2ncL4WbGaSSjsbSRQzUbaAW1OMFlztBBtWBS0FSo2ApPvToAUMzEeNxCXl2n+lgbRIiaSeK6CzSDZeQpNtqkr3MTJiv9XQ/UzoJqqK+NVWjBnvYmApEXNGx36caBbjebjcqrVINJibyCxkHcfXQUGHuXPiYZGLMy27lV44ieY56zQA6BWOJ8Y8biQa3Egwe0GeJpvSs6Bgcj+RTci4aLtdBJhhbGxXYTOgJxq6471gkUAK1rbuJE0HTfQIMITxv4xagATIDaAAJN0xMn0roAoYoiPDHxG2WCgqD8eaECafeNAcLkY1yl4RRaAoCdwAmgMcev0GgCm2wXggmc7BuTFTT+6s/TbQFXdFuOJYtXIHxgmy43bGaUn9p0GDeKCXY5cosyUJrNCwqTxBPH20FA48YdHtGF1BDrBmikEgGIBig/DQSQ5LSqgW4wFxyKPEm5tuooT+MaBIJCCVCqJZTRoJEVgikitNBRnuUY1S8+QghgsNUOYFxJDSJ450AKwGKPCFSGAAAFJMiTUwN46H0AgZMpDM4H6ZFArfKdq0mYEmsaBFfNZaKtbK4k7pkmsqaAEcbaC6kkmMhxJ3Sb5tK9AZ2G8GPpoJMIcKmTy/pymIAwAp5LGImQeY99A+R1ZBlZSpZLPFjILBSJYViaHaKaDMiM6pWDBv7VaT3WydyZikU6xQNltJgQwZ1GVwwEkhpkTI3+22gkPMsM1zq9e0pdRQwNwmZt/DnQOgUOuVQQ2I2hm7b1EdZklSI20DKcpwret1xg4gLHaBzGwroEuGXJhJACqLgFYeOQKKVIIG37RQKnIYdQrOslrwZDFv6SGEAVI+h50ACmMRGH+lUC0aQRJkiaAwQZ0ArHl/9kxbLT5OkbRd+P20H//Q9glyhCDkTJbiF1pYU6mAQCBFPQ6CRyoceQ5CGZHLBQd7jOzExNaRvtxoKBVZiWxEKLbFaP7gApaSKgwQduhnQYF8gOLyXZMRCs1TIUVAaTBOxpXpoG/U8qYxSoaSGNtrMZJnY1FdArK2WvxLW47YZFIIN4EgkiJ9vTkHxuoe0wuQf1sxtuJioJBmF2O8cb6CYe2BcVZWsRKiCXmLRMxESPqNBW/GcZyXfrMBOW3ZgJ3gikVroFyjGoRzksyY1IwB7gQOCRd0/hvTQM64snkC2EM1ryRMSBbNY9PTjoHK2TEWZW7QsPgVoDAiDXgQCYEbaCmSAXkjAqOQciDZiF4AmIk7/u0DDyJdkXGyXbISDABEQpIMrUAbaBgrDE+ZQuPI0qMgliSCRAFxqTz7/UBiD4r2JCCio/dBgLBYGgkb89K6AEAkKIZ8gK4omCKtIYzJqa9d9AfJaUVMVym8FbaINiLQawYnj89A2RCoyKFZ8hpgRiCUPVSSTXj240CrILjujGZa4/IKbiQYFTuK+tAI0DZAMSgl2UyvatomDd8Y6mdufeADY8QXxpcBaGgGlYFSu8gkmpp00Cv3XXqGyB38rIJFFg77ccz7baAhXtxYk2q1+MSpuoJIiYE6AKpc0y0bMRkUkrUGgUEiDSm/HroGCzBCM2QguDctobcwSWHcR+HvoAf08b5lBUXAZTbFprWCJNpb8umgdrMpx8soC5LmFQwJAlQeYIJpO2gUk45OVnGO4lVDbhWpBNT6zuOaaCLFUZnxsA2cMzipUgsamhFBQg6ChZsjrkRVnIbWxC2qVr3Gpp039tBMYspOQdpR4U2KArEAMIBoeu2gqGWwWMVWlygEEcTIuimwNaRoGmFME5LSArg7taCbiDz1mB10CDJ4iUbyNjLkFe0lzIGxJ5JmP46CsI8kucpNlhDCe00JK8SD+4ToFOUT6KoBOSCeyhJAk/1A1g6BW7EZngmGPkbE0bHtAIp1mK6APhSRaEZwokz2xMiaExAih6UA2CcgFgcbESoyXGhAUyRIFQIpuZ67BXyfqPkMdjEO6m4KAN6ERI/hWugmrq9i2nGZjGi3TBgqa06c+vGgtD+efJk8MTb3zdtH90xWOn30H//R9hWGQsr5ERQHtKAMIJIMmaGs6CKEBiFUTiLOgDWxAEEnagoeK+p0DRjYIYEZo8YclgDAa2AYpMDbn6gEUACVDFyzgBRNhIqQJBqNvtXQBmYnI7AdzsEIYLQTFsnqakaA5caov6YaWIX1N9LqMJMg15/HQBXBvxmAVfyjIe2STcGhhxNT00BfIbUH9SMWZWhoCrFJGwjmvrOgOQJlNpABqZktLzQANQjc9K8aCWZHL3kBHI70O5UQPkTNRvUU0HSQEojA3lR3EFlPxuF3cSsfemgRmcXOUKhVg+WLhMzJgmOhB++gi4CYwUCtjEnCaTQmBad5uAP2Og6YWVUraVRbrblBmRFpFZjaPvoIZHIY2ZS8yWGNlHdNDuaEiabVPOgdrcl1oEOAy+QVYViBALEDaszoAxFcqA5WyKFUkdpZxJCjbmoM/wAQJGTDjRMeREdyFZRCsTOwoDsZ/LQOHcDDZ+niKrLsLbm5JIYbE7c10C2gv4zhCjICFhyRyNokzv8ASeNBS0kIr4rlH+TM5DBOSOdwBX676CRyHGmSVIGMgZjkJcsQQBuIgzIgfTQL5caPgDYwECszqooSQBUAAbGeemg02MLW8d7wxYUBAIif6TXjavAGgoreVbxaHATxqO5iBLBWNd4mn10AS7LEEhQwZFsmDAShoIH/AI8aCQS5ET/I+IgLjLKLg0OagxECNzoKS9sAJbhI84eWN0XMaz6in46DFvGTmR18mUFQgK1CmhkAiQGFJ0AXI2d4BlcTBlEkgMeJJBMGnT8tAFMqzsWxuUF+QRdA7t5DRSBz6nQMktYCR4mS1mUFQ8rW0EbyTQdNB0MSFNQSoADhgDAMqzk1p7memg5rGfGEGFIuYskgm6ACRxMEwONAQjY5DoyKxBbJjeQawfWsgEcxoHdXkYxkPmGKxckgt/TIIKyRz99BmxiZMNW7MZFkQSPlAJMjiNttApuRWLOpV0K/66DdiYJO5mSed/6tBPFZChmcwRiRgTsYqCDb7AH76A4iTfjR+y05DjdbVtPqDHuPfYHQUJBF/wAgDAYXAs09vaT3ERyf36CfjWkEI7EYwpWVu6EwQdvXg9dA92Hx+K79Px+SO6z5TvN0z/xOg//S9hHVkfHBOSw97tUsyiIkbU6mK6DnUsrXEtkTyAsrARUlQZAA2HFNBREA/UAkIo7UKhipHcZ6inT+IOr5MjIxjGHC0QAsKwCK9Adxt10C2lnCZgEJZkRQXVWmtDPMGY67aBWF5xYsfyxrIcDlS0CCZB5iZ0Duy35MTtauYTjDGApJDNvWRvWmgK5QoLIsNcGcSHoRaCCGE1Mn30EsmQK7AoGfFVA5utMXSCCTzv7dNBS8ZHbDlUHMw2EgTbQtQGtPynQJTJk85I7GWUEE1IBNKVAJBn+OgouN3PkVIcsSrhSoPIuELJIkTTfQIuQsvY5ZMYW2O6Ay/wBQhjS0/tTQG9LXyDO2Q4O3ZhFRyI+XQ/unQMxcBLoyLMZFJISTABL7yIoSDx76BfIgRlTLLAkpdIBKkkvzJlSemgW8MgJIuyZQiIgWZnuEGhHTf1PQMUC34ioysAP0gFuMGQxHdFDEGkfbQAMMQYkqLSZIEqDcYJKiQZkUG0baByzJfK2rUiBFYkEGq0WkTWPuGcqb1Dh8gFlggRIgAVAgHeRoGyggG0F+03AOBw0sBMVIqenG+gioAXEAETIrCwuQQTyeQKginMaByoyYoEBcYl7qMKzIAJgnf1I0BTHndcipC+RYf+0CTSSCS0fttoKF3yoVDKRcbWvlqSaBRMgViZ66CMlSXcY7YYqzWlXETFOTCmv8tBdpcYovlzcwUkXbkAVpJmIMRzoFVchxBsuRDa0q4JkAqSSfidjzHX00CnxkL5MvjcQDFB8KU2EUPIB20AXE2NcWMFFOFhOO0G5jUHcTt0+vOgdC5QlVuSigMogX7gqtfU1520CKJw5MjYgotJXsoSBuSQN/bmmgnkLuFZL7wGKl7bJmbhtQDnig0F0FqXZFDtYGViBBDEBmJAgR6HbQCARhe8F0jGCyA2sBQtyOOftoGd/9c2uFZqBQE+VGELQ0M1EaBcjBVDC7wyyjPcYWSRQydhHEHQSREYKiiwIBeygAAOxHyJO2+5/CoWKIVvclcpW0MLSbSZJMSABMniNApR1yDExOUlbWDC2hABIJJBJ96n20CkFELFfFepJySQe0khSGHPoJOgScl13nxxZPyFs+0WTFIn10H//T9hQVsyXIFRchlZuqTABUK0Rv9uugUqb1MMzJPeoDzbG5IpsZ9eNBNcaMEuUhXubIyqCFMUA3tgV9eugbvbyTRe6+VG0L8RMcDeafLQBT+pjqqNWCDLKACTcT6EiPT00DCLLTcA0vBFXhZIoTEkT9NAO0zcyzcvkDMQxtNLSWXYU2HM10DLlLqo77UntxwSSRJEjmh2330EwrZEZHZ1ZUByOvwFDBkEXUA5/hoK0hMgDocYUeH4gFjIhbWqT6aCSkIqu+S14k5ZmbZEAzBqII5+50FF8NrEIFCMhAPa0taSB0kL/xvoFUggoO4HfJaHJuBM2i1pMD3GgQQ2JXyFkbHFpXdligBFP6wNhoM8C58b5LVIloBFwgBpJAk/noHxo5LZGUUBvJE1MX9o5IHT30COX8QGR2EkqbiaMCpAms9aCfx0FhYSpCosk42xE91XCyKSQeZ/DQIuTGyJ5G8LY7zjYooUgCjAAwTtt7aCmJlKZCwHbKXje1SBI2Kxv0G+gQwfC7KAqBmZLGZQWNWpxIkTxoNKqSJVywtioPZNxYECYB2NONArZWucoCESGOQXAOaCnoLvwHGgZsqgMMjPiIYHIRAghjSQJIk9Z/HQKS14DXAEFltYKGCmKV7RDHnbQAKrNIBJ7jkzSSU/t2AAp9j7RoLZgO0LKFf/WsCCTMAkdayKCNBz5PGVLllbKGDIpZSADG8QIgDf8ADQGLXJxlhjxhSzqAoFs1PaSRSZroCXLswxh0ys5LgQrKsTETSd/fjQGchVEsrDWpayzSQteJ+g+0gwVoCMilZV72FGLHZjWp2iCdqnQDKRj7BYqKIMiWAntrUEE1r/DQBimP/rigAtTI0wSGNzSaEQYINK6BgqlMikzk7gydxVWYsRJAk7kR19YgFL40XGIsRxFboyAxWT6msn02OgZcqgB1YI4guoabVHYJjfkzEfvBScfkOFnGMfN7zIeKAC+f3xoEUCA7JIhCpc7Ckk1MA7fsBoGfyOQIAQMxutBuMA3CYWv41PpoHXFYRkBMKs5IZVCwBAMAQRt+xGgoC+Lu+GPASoha2ryRWhjf7DQCcP8AlsFt8cRb8d/b+nfjbQf/1PYMo+MT2wjxjy7uLiGJAUQYB2p7aBshLNjYVOO43WUIgNIBmkgVB+0zoJM648iFMRtyrVbYADGVUqKViNAZTEWAAb5B8cqxYDuBasCdpIJ0CkBUcM36riDBUq0CbjaBMgkw1OugARmcs7lwYKxAuaLlk9sgBRoK3oLnN7NLfpt2wHYyCCDIpECa8aADHjYHGzHEzAnIlQgUEhWii+p0DsGTIjEFcQlogdsQACJAEUiPbQTD/wCRVQSFCRkiZikgkESGt/foMDHjxKiZC4H63a3fQdRBhZ34gbaBH8Vx8dqMAA4ukiSZEA2kdf2GgfvtxoSrkMbFKGCAAGiBSJ2+ldApXsZciDFjyARFZIYSSe7mKn0roFNipkynErCiIGrTbuPWmw9hoDcqORY5zA3LMAkVgCQagn7jnbQP58bsCwQJjgqoJUEAUFCQdxQTzzoMrLjuyDCGLPfkJMEA1mNjEz+YGgADNnYHOb3RDjslZJW0kgRtv7aAElFZwtyOHD4yWIDLAkipkmkT+egexncjJl/UFCDOzSABWAx/noJ5MeRrvI4x4pDIqxaVHyNBIImpj92guo8rFAwZAsLkRdgahVpHAMz00GUMpW0rZJawKQoFpBmTvv27/bQSbyB0TxjIqliQ4E2sbriSDHxrI5gbaCwzxkaQPi0urXAgtAYrOwgzBpoJPlCq8CDM5cQY1ESaqeWMT/CNAhVgy41Be9DaAKAsLlgtbwvPt6aA348bPapLDIQwd4NSATC1mnPSdBNS2SwDHd5AFZwYuEGtSsxPIrtPUCWxse0h/wD8QSXYXKOCagRsdA6HHs4FuQFrEDbXCYkCQRMwK/Q6AskJhUgIU7coJPaBKkgiIBiTBH10FHHcFVTIFphSr2gQLQaUmp5440EgPGMIyAd+QKDJS0BgZgbwSYO2gYKyNkDQGtN2VT3iGkEgA2yK/noGAdJxhwyVU247lWRM2gTJAMjao0EfEyPlVDc6EsnaSIKwFahoACu++gbIjnGmK05fishiJoOo4g+3I0FXcdmJGGFwQUWj0aR7SLpPU6BXbHkxpcrlcq/qLEswoIkxsTT+OgnepOMFPAFYliGthSoiBO9QY/noD5B5rvIllt8XD57dIm7mNtB//9X2AYrlcAElST+rcLQAskLsRIEETTQKglYAaFYKogMpDkEEEKsRdI/CNAA4x5QSPHlRJJKySQSDMQT6n9iFGyMmNx/WFWchMlQdrniagkb8UidAxLA+U2uznesG2y0gwCBPSRNNBLZHUr+nIV/kVAu4F0zIPH8NA7MAMeNbFRSzQ5EQQTRgW3BrxEekgFUC0rkZS2QmJCs0qpWK2mJB0FLWdFRlvksztSQtKrJg9AeB+ICYyMiMQ4C2VdaGSRbUx0A0DWujsA4ABXy5AxkqFtqJMTO5O4nQJYXVbFIglvHBvBIZlBHbSRHQz6ToMlgcg9zAB1CAkMFBFCDXkQfYaDKSxbMGVbQfKQQ93cBQsaAxIoANBnUDyYkxXKvxyXqCDBWhMgSZH/GgRk8bKzHwYywOZgpKlgCZUg0GwEfujQMuIJjGJBk/ydjFR2mCRQcjqY/+nQA0JUZAf1IUQpkTPaYoTHHPA30DeOVLIkMgcnDVpp8TETJXfqI0CrjZszM6soxCWk9xFam4kViJmvtOg3kbH5XdYj44lpLAQWJmteQSZ340Gyl1JZbVx41sa1QoBJrBYUmntPpoCL1xhuxPIBY6xaQGuEKwG0zt/IHKRegYEqtzKnc1xEXbiTWaj67aBcjeHKxTKFvNrHoSREyCCAAaE9a6A+VbAwE5hdbbISvdNxtIBP7RuAKOHhcE2gEMoWRMxbtQRSG2p7BNgVDqr4sZsbzFfiQxFsjgAGn7EgzI7MXyoS7MRjxMaFjMRQClomaHQYuni8qVtVfKLjArIAAIqCeTTQZluVwxxY6lA72yKye6tTOwiNAMIFyMSgUEgIQQLTavI3hSD/zoHmHZTjghj5gzASG6zIIM1gUg9dAqNixhRcIgBg4Y3ALE7AACTvQ6BRFyMzkP4pyBAxFtxi00ImkQRoLB/wBWS6sO0RaAxDbLJqaMOPeNAvYreVmFhueZAIFRRoDCWOw0Bw4wpmqjEbbQtQSbQTAWabU50DXEIzKoS1IkUJUGoCzIIqN94+gSdgBdkRLhDOa2MZMNQSZ9oNdAy4SXDHDJOUNeDQRJjc04ER6xoGGRfDYWXGUQX3CQRYF3FK3bg9KaAX5bLaxPj+QuiY8kRO/rM86D/9b18xkErixElJY4sZugESZBYTvSaRX30FEyZk8bhCoXGSLoINBJJpFQOlfxA5FEBSfIiq3jI+JIooABkwafw0GXH5DjRrHORSuXLNxYi2hI2p0P23AOuRsD40YsyFWjJv3KSDIBESTz9fQJWNauL59od8akgWmaDqDIEis+saB1UvllHDqvxftBMFSBNZHr130FIAIYOuTMh7Ce0XMYJAH3MGs+2gi1tohwQrSuykEKFum6KEz7n10BMhgi3PlK2qclxBB3ptWg+x3nQZmJGEKq/wCxkuAYyKgXAKQRwDP399Ap8YYBaRC47lki8hgeyPUgT7egFSaDJ3OoBdXJUGTEtP25nQGYUgKt7GDjkKb7pEtSoIpWvA0DXKobzKCCGZ2EEQTM2tUVO3XjQTbGoe9jauNjcVSFMRcIBkgV6iNBNiQRMlWQMdoAAALKO0zAmOB+AUNj5MuRLla8FWIoYB37h0G/FdA5RQ2RoaP68bdwc4yQSR0jaI4ptoGJOVO4t41QMCQO4gD3kknj+egLkF1Xse1P1FYANLV2YgQLZ9I0GtTucqvja1TYJtUQSHiRsBSP46BF+eS+DlYA3QC7ASIj/wCI/tHQ6BFyOoyMIbwpA8ZcgEQRzbB9KxoFByYygyMsYi8sDyvdaQ0E1/dGgpiKloVWIYs8K7AyAasZ6evNeugUXKylWHkchcdsR8gSq27AHedBRRkYq6uVVmZch7u3eBE8mhj6aAB1dMYxlrVJK+MBiCJp6G07DY9OQCpjfEn6j48i8VPdSQ4igBAFdAVDlLUbI4DXL/RJvBbukAyaAEU0AC5EgOQu3kciQQapFQVqfSugL5+21Vc5UCgoygT3QVMAxPSdAyqMqkY7j5FLFqwQSCygG3ehE1g6CSZUuItTGxhyuxMzazGIBqJH/Gg6CqqVawW1CooAaTJWe6KRPGgm/d3ZGM4u1kWCTAqBcxMtBkc/mCEjHfgbEWVZyspcsaS0c0B6/v0GW1g97eTGFY2KpJlpuLCpmKfKfvoMVV8LLjDx2MSGJugQACaTJjbjag0BL4hbnVljH2lJkrUL/R/TT8fYaDeUZFK5CwA7zMlWFKSWArIiR+egr5Hs8vh//sW22Sbo26zE168b6D//1/X/ABnK2JQWlsZUC2hQGhkgEk02366Cq4sChMpNk9rK42mTQA9pIPH20EfCWxsQjEQhfGT8golbSASQNqD66CmTEW8uNA7JjAYglWMyJgCsmJr60roFX4OwytAYY0QAAsFgAwKbg7/hoClhZUAMYwYNwkSLwBFNhIJMT9NApXKHtDDCz7w17AGnfO4ryKU6HQVbxhAQxLNBxAPbEADeSOu000CuVCix1dCxDLjDSbgTbEnrtSPQ6BMT3KWsSyyzEDUEgm0CDvJ9499A2QBhDNerMQpAHdXulYMCRwDJroEvx9qIpTHDXwDUMwlWkjYRJnQVftyKC/LC1gGZVpcayZjjkV0DgMQbQAq9rIXNCS0fCa1Ext9joIrkYnxlxakjEUZu+gCkQw6Hc12FdAxdWxlwsWioN9pFtrWxSKx6b6BVzMb3bEzwgxm0C0ldhI3DXaDPjKE2qJKv42cm4AEAmTO/4b9dBseVMhV/EKwp7iQ3MGKEwaT6zoFPlLNU48hZQ4gEgt3QKxUgc9PoDJiZ2Vw1hICXoQxU0EEgCoBI2/doAkq1xdKN48qmisCbWasbHjb8NBRgFUOHORwttxBJlyCDQGQdvuIJnQTZjkNj5FwzNsb9hiSe2QDUR02OgwyMXx1sDNebDIUWzArFJk020GKs+NTnCt4hLKptECQSy0PApT16ANiXHEKzKjXEkC1Yr3GS0SJFeOm+gwm8NYxewHGogG0tcCQD1545nQEBfJQMHwKS2AyoaRBINOs1roCXxlsgtbyZrvGIJP8AVEqTuII2/CdBVck5IXJfj7SMZsZQSDIJFxkwTTQRAUWqqs6nuttLC0t3SgJET06aBBkBD+S9gijyI5NpY1+hnpBG9dtBQsuKhyCoQuqLUksLRMsSQJ2r+GgLYpxlrzmliQzN1iCQSoPYOv4HQFcAGLKgV2XI5KLNsBRTf1gVGgUnGcjv8nMlclyhAIksAAbqnkH8DoA7gplJa2BacZYhVuUdokD+Vdt9BQOQpYXeNZ/VUE0FVAJgzUiduugmceTvCkrYIx/7DtSFEAUMA1j7nfQHzQcbpexQMSGBljbNBtyJ/CmgdzcyYSwYKolYNwEGbREzA+8e2gndg8dnlfb+142tiYn5VmPTQf/Q9g0YBh3YnyKgKCB3MAQIPAmP+NBgzZaIgigdyWN1KdStYkzxzoIm0YybVyO7qmOFuW2h3eBQSP4V0DvjyqCECwYlypQ3g/Ke3b7V0ALXuchU5U7XKlaCI7pJFZEe3oI0BLZQGwAEo6qq5S0LNAYMbe+8c6B1ZzOXzqcbEeNViRGTYUqYp+7QJkCwxytIOQAKWtUGJNxCxuTx/HQOWULmxrY2US8gbxvdSJ3knf66BrMalsnamPGSRUEkuRJpEdwjf7DQTDq16sxGPJIV8cyVFTJMndvuY0EywRWV/wDXVGxgn4irD+mPQmZBmPU6DBmzjMjqqNVWVbfnKxMyNxH5ToKgf66DIpBRYVSqwTJaQxAqLY5/loNaztjYKyvlLFwrQDbS4wtQZp/PQABiHYE42BIvykgqWUAQAoA5kj7xoKk+UBUy2nJLPaAGqwFTG4iOsxoAWVZzBHyMACoAhv6QJaJINPxnaNBEsQGCKyBRBAAMPHdasConcfloGOTJiVB5cZxsChVqQGqm4HqNo66Bo8XbkzFyxAfGojuJk7TExwBOgaYVodFOOWzTAraAouJMVHNaaCSePEnjHcrRUKwuO03CKBj9Pc6BgQSHmVvDFTQBgTQAmk7CvJnoAicrNJBMiis0Y2YAEmDERbG4HB9wpf5FxguSVcjGXkBjFCFIJM3Dn2jQbFLdxxsC6lhSpuADN8hFfpH00Dv5FHcT5SVY4VYEgm6gCwY53/LQTdFYM7Bmhv1X2ZlNw7lIkRx139gdjlJHhRlLDsUVZZ7ZcGP6RSTv6bBMhVdGCjJcGYDGPlG3bWJgin10GC4T3tlPb25AiyoWvIAoeSOsCBoKI0uwIacYIUi1EMn8CSOpMzQHYEMnEr5V7C5OUsGUKKVWSCa1oK9eoVtLMpMs7mGJUyrATxbEgiJP330EzlI8YUi6hF/dWGkEqZJmQIFazvoMMasHTDjEY58ZYNdJMNItiCKV6c8BVU7XvLiLWholQoJHyPURJ9vXQSYthCqGtaCpKxDWiPlsALuRv10DgF7shSMTEqVb/ITMkck0mB7e+g1wyOjq3+Mw0TZAIKk8GJrUH35CRCFENgKmnkIJorGWE0JgbR143BfKnk8/kyTMeWwR1t+Uz+776D//0fYAeR8avfeUUhoX4QJpbQ0BG/OgP6pygm44MZDRMkhlEAGa8CByazoHzBSBkK3m0KZMmbgB6CDNY++gx8kSpGMZGJyY75NxrUwIFon+G+gXMvjyHKoL5QrMlv8AbMARXaa7fnoKAXIFzIuMFwAGHbEhrYLRPFNtBBQ6MWLNBuAyKTHxClmNY2pt+GgdgPG2TytjVyWUOZCkkkEAbzx99AMeVmdAynLLRlVmEJeIAgzHIqfzGgDFBXGVCQIsdQSIN08RtMD8tBQqcQW2GF0riEFf1JtgEjYiNh+egmZVhLFgGHjdpxmrwwBpQARt0jgaDIHL48hVRHaysamVADKsDoBtxoDkDlcQyO4LEteY7BPuK0idhPtoJY0hnR3gqfIHXvC929ekbkfu0FjiGNM7mlrLBUVABBqoNJ3pH00DO9VKMVVZCuqhhAYAAAzMRMj00EP/AHScMRchWSe0CKdZYxSK++gqzsMuF3ZEZFYuxNZEyIHsax99tAjOiOVfsZ3HZ2kIZq1ZoZunQbI+QPjKhfFA8AIFQQFt60msn7aBlx5LVZm/UUt4VDXFQbSAY+W1aGmgK4yikswACwgDEmFDBh/SKbUjQZmVmx0OPylJKMR3NuRUgmKGRXrxoAw/SByK5a4qchgsFVogsSB8jwNuugrazhAMt7Y3BZSgJm6RJkCQBWPXQTyKuM472lsgZEUCXqRuWkTUz66CbYlGJcbt48afIQDbyFC/Igkg1/PQKFCZbWAORhae4xeIAItrPvE+mgKOaojNMsrM4l1JhysCJ2PBnQNYS2N3Y/K45LWE3biYngR+WgqPKc0hPGWFpiAWIqSPkKTJrvTQKUKWjNkOWGhsgUiL4Hd0oOa7aB0D4lVVCuwJvYAhS3xgNSDWvJ20GyFGfHNMWM92IBWWDTrAAj8fXQQGSMbG5S0r5WY93cAVALQvUH068g4q7P5LsYNtigGWkAgwbmkCvXfQIFuZciBr8p7mkLE9wMiYaN6baBVxLdAAQFA2PIwEKIYhjESadPr1BmDsAUUzBZ8jKZu2IJBOw9aRXbQM14MHE91QIUx8iWA7YrwR+GgDFUC+QkyVZYMAwJWKAASDX5RoL3C2Lv1PPNtou2m3feKT9NtB/9L2AZlQAorFBEQa23XXdO6J/f0Am9cQ7xk8jKouUL8lLAHiJJ2++gc+RygAaBcMWTYgR2lgbazQSP4kI48LqZyOFvAJJAJljsxM9PXb7g4W8glwgY2lkuAJKzFtKEAVG/5BgrMwCZhjJBPjLFTfUEDak+nXQMa5iVcm095ENDSACT6zECKc8ABATEcmRfEwUAG0gFg0gxaCC0aCncUwhjbkaBb3mSwJEncxaDoI2ZFVFR7lxoIa0DdoWBIIMNya6ABcjFmx43UmUsBhQYlSCOgAEih/MCcoXDjZAcSlnUxUrMnbZfStJ0AMgupYZDhn9M9yoBQ+/aekfXQZcp7VYqpmcVhiDGxiRQ0qOeg0DHIyVyYyAChZnJESSVFxU0Eip2M8xoENxeMZKgAK+QEgXGAADA2n3+ugoilMGMIwIxE90wDDE3HuAIj9ugHE2S9nENhSTcxaoNRN1N6yK886ArZcjSUQiEBgMXWQRPUftvoE8eMXSTkxISExybiCe8WgjbcU9dtAACir+myPhgAsAVBkyFBJJkjf6yBTQEQtZORna3wCYYgEVm4ihmu/46BAxD2k3X9viE2KSJVhXkUjeKV0DHD87ioCTGIBQIIgMQ1ooT99BmtL+FSVbyqCzERIB2cCQZ2/50DyjM6ZRblOP/KVFoNKbwYI59NA2Mlz3E4lVe1zQEULhhIIiadNBBsoIZ2S3I+OWKgjcMTIrNAJ/PQFSAZp+k3dkCkkdsmKRueh5MaCj2mO3Jj7YxgsW2AEFe4AbTJ99AoDBcPaDIUZ1aCHAkCoFu9d+fpoAAC/c0WCtxl7N2uDiTyRTbQFczGLkL5HeqAAgK11AbQJpWePc6DQ2QqlsBgUDhRSYBmmxmdgaxoCEyKp8gUlzGTFQFizRJ4rJqPSNAjOuXIsAiwkd5gwAWI6qeJJ++gaxsYCPjysuOGAoxAqEEiNqmB99BJWfxKHBbGYYxEKVYlltiNj99BYlIIKS9SFUPQA/wBwrcbd/TadBscG7EcZCoTYEi2TFy3HmZAEfWugcQjBpJVrlZyLReTAG25O5I/hoJYmLEyqFXdBkIVmVpFtCdgPUaBvHmnydu1n+I3T/wDH47ds9OdB/9P1+tZsWNcqkqZsAFokwB2mJ3iZAB9NASct6MyF2LGQUEEHtBm2ViOmgJdltYQhyyDlyRIBEhiYp6AdNBMrHkZgc/jJKtG60Bgz1JrO/wBdAZGFnLoXBuOXINrq7UqaEdI4FdAfKjFwFCBnByLcDdUbQYk+g6c6BwEVRcGx5VRlNCMZAkQYMwIAoemgUrkXtyBnRUUHDUm5tpYxA3rxxoGZXKoqhFfGrooYkGYNKlpha9PWNAAy41ORM0+JIGNRESTuJ9YNeOugzKiQhyBijBXLVACtQUG3dX7ToCVyre0DIckhiTLMoaJCSATUCPp7gJt8aBgFLlbEFSrLQEmTyaz+GgBUBrQWOQKUNDAle0ySIJmIjfjqD+IHHix1vNnc62HYkCRzJJEex0BuCIzHIrsLhkYTN0kHhjSu8+wGgxTE0BMkBgqEKLZE3OBaKAgjbpU6CGIgABck5cbMTkEGZkUJHcTA2GgunyBdVOSXyG0kA7hTJG3Q8aDMFxjCUjH4zXGymRIM9xUkkhSKaCJ2BAlxFnytYxIK3GSabe/JjQUQzEHJjEi8EKJIAAPdEUqN6+2gW3G2XwEl0ZTcVaigDciYFTIP4TUhsfiMybla4Yy5ABFCGM03ECn4UALkQqDjF6zHkYoS1AaysU9un3CpfGuK2S1BKMbATsTQnaK/z0CHKmR8gQASQWHp8ZM3KBsZHQfQM7viRkJg4wGyn4rIMgi4EdxBiBvoDixl2drGRXU4mYAtItiTtWYqOh99BR0ZV/8A66EYyocd4ZbiRNKk9aGZ2roJ+KbiHFmMhHfIgmYBkKVoJIP79BIspWMCtbk+ZY1Qn4ggQSK8yNA9q41DDLd42svWjwTsACQBEkbaBmbJK4wCQkjx2EggwbrQBHy2rSkb6AHKgULiyrjEEQgAAQV+RttPufXQbGAHdQ5VMUXMwgEKJDCscHYbfXQNiy4SijuIwpIKsRWJjtrA2kwBoHcs2ZVDEKBcEIF10AKSwLGa7kcc6CbMHUKENnbdK2OzEGhbaSJBpX66CuMZb8tzEzcCs2gXdym0jaZ6/bQcpxtjL7JlyGUBUMxPdsq3DuI340FFXKUyuHh8LBVDGoaVBDVg7fWdBW42/wCJbY+Vbb7rZtt+U8fTQf/U9hVuTIwYHMwJpHco7QQpgddunTQTDf692VzY1ikr3UeN7wQKyQftG2gVvFcyAFbd8oEFVRdw0AkEDrv6aBEyOFyEFHfAS4aVIgKAIANNhX350FUZoyYhjBeLiBADhtrhQ/1df4aDokmCVQMJCi6ACSVAkQaiI9usaCRx2My41MwAQxEKrisVJ3HM6A3lewsxYlO0kzDGhU/JoEzPPTQBggNTdjwuEGMCVUEAGaHpQddAreRnR8QyEBiCD/UQQvFQBA3535Og0kooCAqKvI7bgtxJVAJoaV0E7SrghHXHfLAw3Z2iO3gAevHXQFEUSpyAZALsZFbaG0EE0KxWeBHXQUF9zKbCSVkqOCC09xEzaZBnc10AuxzjFCCDjyK7WMF2IImN54/joEUsMoyISxxxeFAZSbTRbYmh+ntUBViMlQHZVksxI7QSJJNxpSRSI0Ay4wFYKsDEVKrSSYtE+p36/kAmmRCWOVgq2gY88RKqT9zSnTQULWpDBYcxkBNxUsOQtSYG8/u0ADLkzq0SKAlQZYgXK3UAjaugVItxwzZGZVYC4KbjElJiT3bnQUxszi0sqoslFBMREhZAAMdOmgyglWvewrcrXyACxukxaJr9dBJ+1GQZGIkBGNyMQDdNxmRM1PrWNBRMSK7lsbIC4CoCO7ahrT142jjQSGcuwCoBkNquxJ+b9xiaVtjcHpoGKYzkGQqhxdwLwYIhQpECN/SN9A2B3Ihf9eTHelwIYT3QsgCfw0BDEAjIJyGGZQbQTANwHWnt7V0CA5PlaQg/UhipuJFpAasAzWn20CsoIVMliphC2OWAMChBMSCJHHH00DOhJMsrK6lgvapKsDLiZrArTb10AVWf/sG8VDnIEELLbjuBOyyfXbQUKhcylwzAEs0tcpEtWIFRUQBoIXf64BHkcjF3rLEdAGEyIgz199BcVuIyNjC5ZMTbZPIAgCBIPvtoAPGQgftfHsqyxW4BqLErJ6n+IDNgZfjuIgFatYsERUkGnMb/AFBCuVmYlFLX9mR1EFTFizIiY+5HXQMHOPEykYwVUjJNO6ZBAPAJ6RJEU0DNkKIUZzs4Z+3huxhUGYiNBzwl/wDh/Tn4Xd+11tu29P3ToP/V9g3tvvQA41LE1hBIm6F7ibZ30AxhUkFzhhgqiYK71YSBtB9/xBkCMiZC5YzBtkkNHJ7piBXag0APjOMePGGRe1VdCtRMA2gCt0inpuaBK2QqFv1AB4pkSZtWTAqoj26CsgS+RgEVz5MeMo0KtssQQBbI2oPbQUKY8ZZG7bmL+S4hpJKqSdxvuen3CbrkcH9EjFjXshRcstJgTUkD/ncgXUOMjK8t3tlZiSyi0UKgwCbeY9uNAzCfGDA8BtPcZkmbpjaY9BXemgkAoxsZQkkMcoqFKg2maW1gCeNAzA5DONSbwgDhbSp3WbWXiPz2A0DtlyrkyLY1rEkqoJa4ECQRET719AdBRFCnIQhXGswykAnxsJB2EMZ3PXQTDZcbgepC44C2liQCCV2JO8Vp0OgYoyBsbG5MhUWOQLVJJqBSpBrM6DNjQIy+QA5JsuYViatuDFTOgnkbGT471jIptxwqhCygFiZmoY0n00CyV7wTSouMACLiDJYgk9ffQOz5WKgYr8qwC5lSDAmJrMVpx99AzsrItkriKrdjPcWTtEAcGvXnrsEbWxZLgVxtj7Q7XFmJYkiSKU5j89AXISmEBUxsFyKrMWlpUqKzvtIrHpoNjxYxkIyWlZPkx3bCqiQQIIn09PQGVSxLeG7ypRbd5MsxBZZ9PwjQCxlPjym/HiKsmUjuBNABMQKT7fiFQGyC4uqf7E2kgB5G0gA0gned6emgnknHTEjpjAEoqlgdgBtFRoAQSR5MZvBKqECCu47jUUMk0jpoFyG1MTjKqlGXvZbTBoCFFDFTXp9w6A73ZELWWsVgwZlpDAA7waaBQuHGFU/phSWxGbantYXQp/qE/bjQTILXo7pkOU9xUljbVgGOwFdxtSkaDM36toxKq4Qyst1yi6k1gRTbofsANt5xviVyptZlBPaJB5JFAKA/TQNL5CciMt4g5ca7k1NqkGRMHmZ0BDDGyKqef5M+RFu9QVrFYPFOOdArqA2RsgslgMZhYBmJBBHcN+vpA0CyclowgqVa9CsFSzVYElhNaAxoKquMF3xKuUuw8aiLYETUECBIEeg99AVENhJKKQzEGt09SSQamh+3oAxlkD4WAViFCE0tYi6hLCI9KdJ2BvC93yaYiJ56xHSl34aD/9b2CdhiAfsZ8YVUcC4ARQTUgSN4k+lDoCGxXZlVQceNhLM3dcSWqSTT6eu+gRnSE8iMchiSRAgyCpM8LIEx10C242e8k0Lm8QoI2uJA/qiDFDxXQKoZySna4ey9SyyZIrIBLC7mpH10FhKoikuqm4kMTAuWCpjuIDGp/wCQEkD4g6l2dFIXIMYCk3UBtI32H4aCiNMBLiVsGQgSEBHcijoPrvoAxyY1XG4/xTYAxibGKmqz19o0AGRIZjiYpin9PtC0IWSAKNx/I6BzkE4yLWVJl+0CFZSAsgUJG9BOgZMbB8LszVDByv8ASUEAKAI60roJhzNjFS6IFzNAaZNJYkN3e0V0DOQ4JZrLmC5DcYVhaN3pMdBProAwZTaVVHLBxYYB7TbUCTUSARxvoHXI2MjKMwGENacUErANbSQKAGkcfbQK2dExAmjYx2JsVUMFBk+o5EzxoBkBYlTZjdlcAghaySxjeAV3nnQYjuyo+N/9iQt6g7XAwZKgzJjfb20GJLwjMWfE1k2y4IA7gFJNCZJ/joKP43ZScYfyMFyg7C4c71/Hb6hzoMbZMzZFXE7EMFrQkybiZIu2MCg0Dh/EWyGZDFSCIMg/0mY3kxNYjQMMgVQuUk41IAYkEdxqpMgGQRHQHQPjYY/GVRcchQFJW+JkgVO8RHWugAh8YnGcxZlJFoMwtSZAO5/qjQJlVbFTK0M4NhHzhmuAK7zO0U49dBJgl6gyuUkKHMhmIqCVgE7cGfroOhHMm5E3KG0GQ1QQQm8RT230AbJixpcCpcFe0j4TuDaAYqBt6ewSQ4g9rFSypCZFG83STBpIgnb30FAbcYyHx2RCqTCEmQQCSog/tzIMWTBlxo2O0mWFncpr2yTWa9ae2giFa5LQWzElMtkWgCpUwCAN6dd9BZ8mJmu8zYwhtVTaFMRG5gwOTz9NAhZFCm0nLMMSzC0TEAqNyaUHXQYoAylEyfpqWBIItCiVQxGw9d99AVZLb3ys4DhBjaWPdQgr3EHcQf36DNOHMCVJmtQCbEJIA9zBJJ99BPDcXZgMYBcgOPgWglbQdyG/bbQBcq4cQtYm9VC4yolzNRuwG54++gs5U5MZEZIkoxBukxUQeSQdhTnQLH6Xh8dZ8XzW7a75fu0H/9f2AU2yUPlECCxZkS4VkQTFDuffroNjDFMGIgqqvADJaGtB9ed9tAZD4yMOXG9lIcSoVtlk1EGPbQMhAHjyYsasK2lABaS1STIFekiu2gbGFcMAYfGxLPaFKXdwEEnao0AV0VkOU2vjQq6tUipAuNev4iNAFsXFfc9jBjapi0KCYgkSYjeftoFXtK5cjicsjHyIBuuYr0ETtt76BoaBZkLM0KMvDsLgP/p59KzI0GUYnfzKtrRIloX5AnYSRMyfUcaAJkVcaORY+IkMri0STcYgUOxgfjoJWYwiYoEZGtS8EXQYBm0V9jtoOkuzNCqDkBUklIkTG5v6CPpoOVkAEoC3lX5f1i8kHqGJHBPHB0Dl8hKgOoVwxUQDUxVpPruN+hnQUGPG4UMcahHgEG21gSO2BPdANToFCKVW+EOM3sjkCbrjcAQSJ3/doGyWsqMrhTnABQGASwpRT3RP49KaCV7ZcqlM4OMsIRnIPZWh9vv+QCwBoORXUi13TupKiggmTAHPXQWD5RLODIEgUUEXFiWk026mK6CSFXbM16hBILipkgCjNDVk1mNtBbEiyGxgmgVnUiBaGUGZMGCCI266A5cZy47w9+O0nMkKB2y0Dfc+/wBdBLEPHIYeQEqVF1xJJKra1BI670+wFlGO5SP1cyANBkEntB4uJisj+YFsnjK3FRBLMwUyGBlhUz3ep6H00EnlVQKjgBSzMUukEEiZEHcj26V0FT41LqFJe8BsagBioWaAAzI6xSmgNuRIFqtiLC6gCBVBJkiAZknpOgzF3x4xkU2ZCpu5lrRJMCo3p9OoDQwx4h5FhYYqbSVCwaGbdpOgP6jEgKrI2Q5FadiBINDUbGfw20EpR1Uy5m4s9SSBICiZBrWhn66BYVnLBlXxEIBkNLEaV35I/augDh+3K2UKw/yEQpYsswATE9u8DgxoOm4qbZIZSRkIgQSJUQtTXqDPQ6BUKpie4i8rLle2Ga4SDJgyYn92gY2l694VT47qQo+QJiaRQnn10EnazBetpCPJCsJUyhEQsAdRHrvoGPnJwh3YAFQUaFqajfcg+lfpUJoZW7y+RXU1NWJIhQR6kVoZ9RoHtET/AO+66y1vHvP9u/48emg//9D2AEZCB5ZyKZCMlxRgOrLMkieOToJO7s5SAXsLOTBIMBYMUJkU50FMiunkdkDZ5Y4wPSDcKzQjY/loGoUOUFcTIpLZAILOwgEkyoNepofXQXfyJimQ7qkDGwgyYEgV3J6emgktwCszsuTuAeeZlxUxvSY4k00BfM12THkQFXuLLDAUit3ypG8eopoCrXKALzczEgU7iZHbdIiJ39eugmAC+NfMjySIAAJugiRSQYmv0kwdAQA6+PwoCVDlytwIHaCBA3EwDoNjTGcaFHORyxNigLNIJFF266BiMisFVACCYCgsAxBqRCg0IHpoAuJktLqcluMoVkAMFkbE0Ff25AYywxuL2tVmZgatWV2YCRySafbQY5chxJ5SwyJDF1NtCKcc+xGgi+UvhXKyggSkhaAGKgGYiDFNBVsbEoEq4yHyM9olpC1O4BikfwgGL5ja1yKJIbI5B7YBuupIJqNvxEAIZlxupK42It7gStazyRWDO0fTQEAq2TH4wzO2MhCxkwOtdiBzHGgVEhqM7QwRx8iDUsTDRFeZ/PQWEFwhNrCFxqqiTaA1ZETtwNBAhUXGBgNr1GFQVClSAZI54mP5AL0/WxeYEOfHtaRdAJVSQLZmQBP56BLRix5C6hm2C27wKNWtJYmfwjQXABbFe10lfHUjuKzWV5PSopoIlSFQsAZMsakLW2JmJk8mCAPTQEF8jXDGS/cmOVFwKg2mpAXb2pHGgooRWAFzMFChWDSYMwJAakTPXbpoHUs+QhVKPjWRDhhLrUQT/wCNBOggyJjZrWBKMA0AKZEdsVADE9N/TQKFysUyBCrqVVy4pa4FDJmTOxn6HQWY3dhPeSAQXUkEnuFu0U5Jk7+gK8AvapRgK1AETNp2YEmu+ga67KyANkxOD2rMEhgdhQUgVp66DICGaXMAs1hEMpkEEk0gRMzuI20EnV1AORZDAuwCyYgkiYp3b/SdBZGcWhcDMqsV8VAAFJHQAya7n10Axq5JkubmY4ysiDsSAeCTuPrSdBgUkNjF8yDibcKw2FBFfU8nQZWM/pK+LGC7oQoLOeoDAcGOvvoEDeTKuRShue6xyACALQRudj9K6B71m3ymP8l15mJmbJmOf/j66D//0fYFEwh7XAVEUF1MiFm+s0Mn0Br9NAzHGiDIci1hglAwuoZZQYArsNAuNG7hkyFyyKi5ADQAHczNWkHmaewMi5SqNiPeflFEYCIoYAkek/TQQLFaEEsarkU9xaR2QeRH74nQP5WXJnLLQMGfKGA7aFSOOKCPTQDHjuHlwglgtt8zEQak7ye40njnQOqOiN4jeBe2JiphRvEyd4p9540CRjKKgVSuQoBKwBuo2Ekm0yfbQXdVuGPyi8juLAgsSSQVbfdRz00EAFuLZGUKynzmLW7YkVAq0j6aDoDByRkxuBJIiFHdNx6RB3J9qzoIoitYjoFzYWAGKTWQGJBHNPpoHZFdVIUrjNQSCLYUyZi0VNSRx1iADXosrU5u1mKwGuMLQginvt76DNlcAPIaodjceJYQK7bTSR6V0CkM6sGTGxtJLIrAVEUI3rB2iNA136fbkL+V5DKYMgwQLuN/Y19gby9j+Z0MAyQAGBa6bY52520Ad4XC5tVpQPjERsxAqYHHt66CVqKXw4gcXidR3LIugAEL6kzP510DYkEnNBRRk+ItiafJZYCK7VjpoEYp4sgTtyZTJdiVvUGokXSeKfy0FlJyxkRScasYWisSZWJBJqYr1GgQKLnBx1auQd8i70AYCpO4rXjQLKgsUQePLAYiA39toDUmJ6/TQVJxtj2K4ygZscBAVJBHcIAkg/fQFrmQFn8cqpyh1uItUm61i0GnT66BAhYIRe2EAPhDdhuJoJLACoA2PpoG+SsxYoS6ldwL1EmQelZpxOgQhXMjKGDsAcrNMBpZVhj2x6+++gGRHKrAWWACtN0jcEGKKLtxSemgCPc8OhXJUNDTJ3akEzK0I5A0FghqUyHFcBVWkFSehk1gwRUn00EMeTGDJy0rcqdsMkdwMVuAP0OgsoQgB7i/wZiQwQwobciIYg86DJ4kGPuZrybMW0hSD2kxzBkRPNdBQ5DkFkksH7ZkXRsywCD12p+OggSzozoDlR1Ks8nY0N0iuwqBMeugotuM+XETkVmJmlSVGwEdY2Feugic2I+PJ/TjawZlW0VkgAb0EfSeugZCRkYgEu1uMZJ7WJBg0JMGN/UGOdAP+uPH/lFkfO0z8Nr9omkbaD//0vYEM6Dx0yrmMY1JBFKiJIEenM00ClyBjwytmIqcu4DKZBm4RMzM/noKKWdmZjaGIXIjAdLie4bRIg/emgXJ5mOJ3AaFIZhDqCdwwG1JnjQK+NAy4nMY1LN5i3FJA95FPz0ByWuGy3KGKMBjG0gQCIIpEj+Z0FCMqOVxuFLUrBejfKpJNBttGgkr2uHGMFmdy5YmZFRImgHrt+OgfsygOruUFCcgkAk1+pG8DbkaCY8gamNkXOxJDCApIIkSI2mZHrXYBbI2cnKgVmBgKJDTduGA2B6+8HQRDsUVyWWaK/yYmJAgmQSpO8+m+goWGFFKqFK2ghouoIIEAzuIpvvoEyB0CF2UhMhBYAXSK3dx5gE/w0DK5JxPePIWEEQxaQJgkQtG2P8APQYKCcJcqchcMGAAgtMQGAG9RvyYnQFsdxxhBjQmikEm4dpgEChgSDHSOdAgLri/RBD3AkKwPawpPTtP4dZOgqVRThxkrKOodA1do2kcmaCo0CObk8aM+ZoawlwIE9NyDvXjY6DL4ygXHkPjYKzZTdAFaNFNzJFPWmgU3gtKIoR0BcyDNoWKARG/1odA5x2/qC0XsVyFVkAMY2haiSPbjQKiv3Y8p8iBw2Y4xuaypoJqZjpoBjVoUupLFwhggA2mDMjakkfz0AW0KHhDGNUZEgmII3NDUg19PchZirK5RlyoSBjooUQboLAzSJ40HOsgIpW1wzFliF7+2JBkiabH8NBXCxusKIJj/sACilSAqmSST09froATkcLGSctjUcqCH2MgUNBSn10BZMi9pSXMqWmAVMt0gSAABUcddAoJV2JZlaoVoAJNsEkELIoYM6DoQ5GIfIoYszeNQQygCGia1kcA7aCDLDB0Qpd867AkAAqwGyzvt+GgoRJ7cYTBa9yMAvcyme6KU/D20CKuQq4M4lZpDzCrAWDEAj4xX+egLY64s2RiWCtcgUNcu5iACJ6HroNLMyLarJkdPLkYKoYWxbaZO4P10AIjERlYXkWquwxltjcKRQEiKb+ugYE+TGrqqLJdy1ByTKnpG800ElQMcdqjIzLAUn+kwvxIG6xWONtBXECtq5MCjIvdix3SblpSbjtH56Df9pf8Md/+P4rMbe2/Fv00H//T9gnyqVKF1VWUWwe4S1WNwESG5/fQCfGc5mJV1a4SZLEGVBPUCabU9wwEWC7pczjaRK2kAgUpI6aCJvdcgHcaHJJVjcYFYIMiIAgdPcLQ2TL4mBVFbtOOQwJE1kWiY4jQYOLWEv8A9fG1ocLDgwZ9RHtPO2gEPjdkJIQqfCQCo7TLUn2rz1kzoFXuFFlsX6bYgSyHaggkxA+p0GgNgV+1ASSwABoPUhpMST6E0NdAuMrbY6MUxiVVCKr1lSABz66CjXUZcb3GGQRBFBPcOkx7U0ACMDcCVV1kFMcBTWsSOKT99A/iVJu/RDEFTE2hYJurIn3540GOV4QW7i58sMawCSIqOKR6aBVTKHCul3/5ItZjIEljWBMQAONqaChcLjV2uRBIXJBDCn9pBEe3pTQcwBUBWdi8XOpYEysSAACZJ6/xkGGQOVxLfF17BSXYLFe4jaSIjpvoNLP/AK+Iu/cXF7CoWIrBHU1kV6xGgYFi0km85AuZZml5tgGaT06fXQICUN+S0mB44k1dYEWk9PwpvoGo2VoRL54UAhgQZIurUxMx166BsuPHmU5MdkM032laEyTcTBIifvoBcmR1aB2pcpop7ZKiCTuDzxOgzTaWy9qnuIWIUMd5AEkAADc/TQKolSWm3MClAbYJNCDNVMn9/UGfIypnbKzKxCTkAFyDaYMRMmoP2Og2I9+OzIzIxJECte3cxMUnp6jQFXyh0HytZhkIYLJEMwgwKHmn00EglxLWMwabfGe14ZoWQBHvG3TQOzhsnzZyxkE5LQPjAUrT33P56CbW40QKxRAq2BVI7m3ImN7aT6jnQZ2IykP3KBGVn7WKyYWSNiKmBXQdBbJjLKYJgsUkxLEdY3YGPek6BTkyMEy45FvYU5NQVukztBmv8Qz1ZZKNkKBhd3BvkJG3pMCtIHGg2Jz5LMmMu4tfuCAqxNYUdZ366BmABGQiRB8mQtNYgggH1inpGgUFpTHkgJlMMFi4EgpJoRU7yZkx7gMbeMmss+QNlzK4Ip3Ghtp6Dj6aBhYfFkdTkuktjUSzRIllgSPXQKHxjyAomQM4UkkmYld4LEzSk/mdBrh5/liif8UCbfl061n67aD/1PYUZmd0KFmVyXR7ZAABBnbaYif5gjuuRlHcGgLJm9W5tIU+k+/GgZ1ICOhs8ZZ/KV7iSJaAYUe+2gDBH/UU34mFuK4kiu5IkzBE9aV66CauhV2yqRjJBRmIYmgJUhpNKxNPrXQUa1gjkhSzqcCgqtxJIFRJJUEcUjnQLJyurtjfIXS0ZQqmAZ2psYoT+Gga1nKsQExhTKiCYAhhcTAFaViDOgAOcAKFYEHucABiWaWC9sdduk6CRH+wrfokxf24we4wwBmmw5kmPzAFAndk/UGS0mR3LvP9x7Yj9qhYOiFSS03QMMsW4gHfb1+mgkuVWUqp8rKRBooZjQyAFNuxIj8NBRSBYuIXeRicRghgGDb9ykwBvP5aAqAUClhAt/UAIPc6waEQDH2rvsDycxscFlDwUtBqGm6rExBHpoAuN6lhOQDtymSQYkXQNwIqf3jQFsVw7ybre3IwBiWoSCWHHpoIq6YwpdVN0Vx2kCQSwkCD69BzoKkHIHyLjRBjgY8rnZlNRQmk+v0OgZoJAKKHQdgOM7AmgaafE0J9PXQaACwXLaH/AFEZVyMQSZrUjY7c9NBhiKhCCexmMTRVBESJNxURP8dAmOVCMzFiCHcggSTIEQayfTbQDJdcEVw+WbgodbiB8oakRESa78aCcNkMqQ5cG4hrQEJgmGHpUfTnQK1yDwrAyUAAibiBBho3oIOwpoNdcotBYi69lFJQlgwO4JBP8NA6Njc9wHiQHxdloA/qIkN0NOfyAhcIQueCHyj+mgFQZHQkc/joDbC5Mgzhw6lWLLO4gVmIkATtOgfGhbttUKisuXKQFPyqYIYbg0/loJw6FWyOmNVUnxyoK1jtG0UED6zOg2QYVVmKFExvJBIa6gmASQJMfloLM6qGZUJYIQHt3EirbQIgkU0EizCxUyH/AF1LCpIJWAQAwJnpII+ugKo6glUBy2hirCbnUCpgzNfwPXQZQIONrpAYAMFJuXuJaSRux3/noMxjBjx0x2qbGWaCTJg2VWK+vGgXG2S/IBkLLjFYtLMQSayeJ9p50C5UynLjxjGnaB5Aq3JasQABWhJkfu0DkOoxMxW0jYmQBPZIhoWm86DWGbbk8kXeSW+0/Leu/rtTQf/V9g1XI5KtkvByXLBtJWBuBBiD+1JBStylbgrE3B3YAwBNSpmIAPqa6BQruAb1hlLrXcgMCzAEiZIniKemgdSnjVUXG4aTtPdGyg805+tdwqTmfMWGMxcptViDHN8NExxoOfMHUPmDBGgFSGAuI+RYTBEA/wA99AxaWjGHEuWIcXKGYzECeta/jGgJvd2KqUZpAuLhSVKksTx8Y+2gVpZwQTkGNRczFuhErLUmJG/WugVhjc+Bj3MFeRJJIPd/5Hc0ProC7rk8bnFNg71BDEKrESsQO09f46A4sjYTkQqqNIvXe4mpAW7oeB9BoAiK5DsxyXMSzqYhlUkVmaUifX20DqVcNlIh5YKgMAk7sG6UM1iNAMrEtkyJkCoVk5bQSsHYU2io/PfQaGZxlbJaoZXdg8ju7RBrABn8tBrbBkORjkVVaPEhWtZagiaRXQOXx4LVBJxn9RVLFSs7TUmJkmmgkyhRlJyTiS4KzEgzUGY+Ukg13n7BYEjGrgM2QAHJd6AGvcAY3qac76CLsT5Lna5YiTBLLyJi2o29R7EC+Owuc7/KtwFJVSCTBJBg8U5jfQYBkVwREteqpLMxLAE1mo2ieugInHkxhUZblJQPBbtEgkCDImIqdA5cjFkcY4cgW5IBAQsSD3ECJ/j6AJk4yO0QzFqMJtVTSik2gHn/AJAOFyktbcHcTMSAV3FAwFZ5nrJ0DIsOjO1oxhwcgpUUgQYoF2A686BMhQm0KAZaVdmMwJhkAg0iB9NAvaj1BXHjxwyuAwaWaoO1TyR+egKkIEytLrkdsqXMVjZra0Fag7HQNlYJcr5SEj9YC7ciO0RtU8+22gByKQyuMYGUhxQtBjY8EwBEGvroB/r5CqMhYuYuACwxAEwTGxOgVZbJMOvjaZyPJBgwYIhfWZ30BZcjYXkH4ghlFxJMrEhazQbSJ99AVctZOM5bWGRq2kSI7azIgxz1rXQVS4YgzfINDqJJFCKQZBANfTQBPHePg73EvkJEqtKn5CoA2j89Aj5sik5hVlS5UEhTAIkgbjkf/doElVZQhXxubMQgMI2AMsTTpHpSdArLcypkLzcB2Gi282iRMA7H22jQLeY8/mM2z4L13v267aD/1vYRQh8eHEoUBlyOskiPkO4UpTem1aaCY8jlScdrSWJAYVNywbedzI0HQcQBZTa0hVIrHQUJfrSaUOgnbiZciMb1xiVJkKCAoWh7amTzOgbKxR8mQsFUAwCAxBMUiRvvH350EHxADGWyM4ZaWkG5jBIoYJJG5njnQL8Ec5CcoMk9oVgd2gi7eZPv76CzLjTynJRSwhZitxAHqO3aNthoFylsljW+Qst2MfFu6IUkdJptt1roESAqqMQZ7lLowZgu8kKAAJkkfu0DoqM6/pqxeQ2YBnBZCBPETJP79AECg5BkAxOjFXbcWxuQwI9J50GyK7EDE7GAVV61YdoBmCDUSesaCwsUB0w+JcZDsoEQGQgHYyQOKRoNifEt1uTsyEkNLbEmSQZPFTI+mgj348aIwOJIIk1CsO4kQTyZFaxEaBxkDteSHLGEQ0MAq1pmlBPPOgijKEOML25BagBobjyVIH9QnY7b8AxTKzubB40JAQsCpk0oTEEjafy0DEhQ2NT3KGe0KwuIqpc1IrwToMA7lwcrW2BMrKbhd8RaDUVJ6z6aB7iiqP1wTS/5XsADcJJ4G329Qx3fFiyoQWUJjoQAZMW1BFTO0R7aDnvZmF4K+Ol6ds/3TINRIO0/XQWC2qBjUjwnbG1wYEFgQ0SIk8V2roFSxmJVLJMsGDFQ7RAI2rPQaAhSW8jgtMEgKIIJYBQCv1E+3roMyTYSAwGMsyqpsYKZUREDad9BSwWlGW8Khl6g+MEwJhpEiaH6RTQIEBQsMl/Y3y3JIElo7vWPTfoGUtjuIUKCLxcCSotNd6ARG1dBNWw2Wu4AyC4ugIIVQF7lFagz09+QZnY2IDav+OwhWAZd0qTOwI0ADnEPJkxKUzENeSpYhlmiwBQ1O310Gy3hXaA9jDcMe5TWpMRv6x+APjkugViAtAhkGD8QszS3+NY0AsOQOzWuxZRkLgWIVMNIBiafbQNZBIuOEqh8bJLCFgtzNJIrH30GTxgFikYGttm4kSJhpkQf2HOgXDBL4XZrZjDjMmB0DGhBHBJG2+gnaVYXhFBUBDIgXkkGSYMkGk/XQPYYYl2y5CWjIoErcQqlWJiSQOdunILdmm+3unyWT3zZZfbERNdvw0H/1/YQBVVcgeFyKWvUlVmALZiggUpNNBJmawYoVmDBQFkSKqQb69J9DoAynxqyEoW7bUaV2OxJihJknkeskKlScqnE4GNGolGCGIMAxUGvtoFW6tceEIFGSBuCIMEQa/zB20GxXh1ClcTBQlDcO/uAtJJJEzM/x0GdAGZfK5Fh/VSnAMAjYAGYoNBmvnIGVskYwHrDQYkQOQSTPuOaBj40byZVIyX/AKmSCVvkEBQDXaD7eugEY1d/EbfKAggCqwsAEjkddzseoOtjG5Q6rBK3cyW7xMkmAYkfnoFTHaRlUM3iJXH5ZWm0K1BNYEj20B/SChXTybY0dqCpqBWe33MRoMq5JtV2ZMnwfcKSoqeNyRBjfnQbMtxCA2juDAm6ccySA28A7ivGgdvnkQFYeFIUhRIJmSQZ3E+vvGgIyQ+O8M9k2vMloNTaYHrz99AgDl8YxLkVLQtYae4SWWR7NH/IBP8AYbJekKMkE4yty1JZT/aamPz9gzBsf+veMZlJGUitQwNwWgoR0/Cug1sHJJ2yQylvrJLRIhoI5+ugy4SUVHNUFyBgpMd0KZaOTwNArBUJX/YCBUgYUaYFamQJMx7+mge/HkQBcZRLpcKkXEEMAIJrT76Af64VFXK4tvNqYpYgQN1EFq/kdAGZVUNbICArllVBbcCALaH+MHQMxxwIJxuxU+Mz1uk1HcF39Y0AIJdcIymcYVlyWVFwIiDFK9KbaBjm8TLjBk1AGUyQIAEGI3EGvv6AuRsbFnZbpa3LjukrFxBG8GkRIH0roDc4XOEJVWYie2Q+x5IFYmT9dBPGqZGZwrKwRmDFqhHEgyCTSuwpPPIUgDGRnQ+NVAIpDDcGJgGKUPttoERrGyIhNV/TytcGKkC43Gn9NIHGgYS5XGknGxDVZjyQaiYruaj1FNAhZ7WL5jAxBkVgGIkb1gGRT7++go62rZcqnESclqkG2DdNsQIgj250CrjZsaIzg48c/pYjFBtUwawa6BkN1SbMiIAlYoTBrWoA4FOSdBIgNlGW+7HeCirapiWAo0T8QOugfGgdgmR3YoZQksCsLF1RQn16aBVAYKym1XL5XNGKhSBIqYoRtBp9NAbMHh8F39VnksaL5m3+6YpvtoP/0PYJMlgZxYzJ8grKItNtu9QYpI/HQM2TxqyY8gXIQLmyFmFYBBIqDJ0DBSbAmVhcZAfeFY0JoaE/z20EmUmIyoFZMfkESZEGigV+vGgwS53x5e5SVVixJYMYoSCOCax03jQUAxgABHLpDrcCKmICiik0266BVGJkCeQFUcHITQwR3AmJncEdBWNAjnC5YAZHP9KxcDbdLSegPEfv0CBsbYwys9wEY1RhKgUAgmSdyP5ToHkixgpF+NWcqzXKD2yesTM+mgzNlwBmEKB8cQUgEsSaDesdd/QaAQTJyAE/7B8YyC6WEC0hSYk/h76BxlepIxowYT3QYm4krHIiTAOgXzC/JjbJVzbNCrjgihA9aHQEFMaYw+MMpUIWFCpK2kNANLp/aNA6iWCNORlE5RcGNwMRYRArz99BIKGUWGwvkBBKyKnde3ah946U0CjE6kDGVVkPYJB7lHd8qdD1Gg6ULPAGNsa9rlXgjesHciTJn6RvoEyOFUuqnvPezBRAqSCYNeIIpFdAVLG8YxbwhItm64q/Ux/Op0DBlAAlmGJlUsxPZsINRWGrEwNBLCqkHKqojlVLKWHb2wsVmoYb7+mgQdwd3dQ1wKQBBug1ExJ9bTFdBTGDDYyMiOg2SZIWdupMjeBXbQRbIMYyFcqkgqWiSAwAqO5iQPX+RC8hMaYy8Olrl5L/AAJiTOxjmg0EzlWw2OSMVbB3G0k3DtJEAERX00G758fmdXajiCxC9IEQJiN/TfQOFkiljiVboxYQOVE8bVn66B9mamQ90ZcbAHtJ26xE+lNBBcVroGVVlQApqzKJIBF1SYHFdqaAeNiiFWkqzHMptBVzAHeQINd69NBQKzYl/RLqrGVMEgIVWEBrQjY+vvoNcXUlvIyYwwyBEADFgDyd4M0+/OgbGBjPcrjxEQwNwIi0EncwG2GgXG62+MmcmUB8oIIAaGLSKChFZidAUY96ywUMSGcXFlNTyKECYpSeRoJjxw2J87W3yzmVNFMAJBoDT8OmgarJIUZGRxBRpJEA0Kjcweke2gGa11sCjJjxpc2SGBCLBTiJqfp9dA+NTLY8pbEUCoqqO2JmbhMt05B0E4Mf9q9rYstuF1l2+3WkfjGg/9H1+RUZCgBAYLj3gQGC7bdeKH1oAoMtxGUAXOhDKymIurQsIFNyI6noE+/CExiH8gkz2bbdDQ8/wnQO9BmDKDjWAEgwOtIE/PkyfTQBVKdjNcog3WhpJUGDIiKcGf3BseJnYqKWqyMs7sGtJkgkiDyDGgKqCqrc9jICEN1ASRvQVisj2MaALkR2GMdyZQ98hb95EAMTQR/Tx7QBBIxZA7kqGDKB2bsG5NKsKxoGhUjG6g+VMgyZF+ULSfWQNuv10E+5kSxjjR3ATti27u2IFxECugbxl2hExsJEhrjQ90Ai6JumRsfSNBsYLeVVAW5CHU0HaIEAi7es7aB0Zbm8SkFbsYeJIti2AFYDmfvyNBI5CUCAgJ3KAAD3AwsLLQIEERO/voG8TY0hMjY7nYY2UEwlQRAgTMmBUfkEsJgPjXfICyNcDBALKbACQfT8DoKhiqFBIOMlcRvgUNsHaKesjQMAckZGZr3JuCgkCRbIgGCIoSK9edAGVTkymKORCDaSpEyJAJmoI++go5zxapSARduJVmkDmZ2/KSdBNlxN3rKgEORaBuvLqQBvNSK+40ATIuS3HaQ4x2giV/qgCsmPpA+saBPM2VMdwVyXNrMVBIkgAmgkXce8dQS/txNJVkMKKMFaYkcER6UOgqBLowotFYlLiwOORcYjmCaU0C4xjVsSHGtQCCTc2xruDWNgI+tNBdELKgzKreQMwZWiPpsYmRxNdAzHF/2JCspKNkYqGViBArt02j89BAqUxlj3eJrEAvCjuAHaN4rBn8dAwGNigllHe7EEF6ggxW4+8fx0DuGHlIyEDGD2zSyQYt+W3/IGggJLogylwXIZHCkFgKmB7zBEzoOlFgIks7Y2sMyFIgj5AH+7afTQCB+qakuQshSJrW4AQdt/tEyQPjfG6OBjpKntpNAIiP6j16+wCYCZGNuNQA9QZtChgsADtJmvvoHfyKJQLOQfpuZLUI3iSafu20B8HjJ7nVRIDKbjBXgBQF6+v10HK2RFRAREAlcqgBpD0AUECB0r+GgfzZpIfx3XECt4k3RCkzQtxWPTcHNpZcQxgSFLrG4EUNJPymo399Anny+O7s3mLP6buu0T+HM6D//S9hKYlDwFz5awStSu4MgDttmft00CM6uqM2NsZe1yJFpUCBUkxVjEfw0Dm0AImO0OxQMTZDKCFnYtSI/PQISy2B72Rf8AGSe3aQTG9RMg0nfQVH6TeJRcEJILESotI/unrxFdBCwZlcKimwqEhStTWImbYp6SYoNBYl1DzkkoqFVGOAYB4O0+lBoFGQ2NKuAxKYwVkwfkIqRERAED8NAoxuVC2b3A5ma24Ciwa7DenEidA6jxqLfjEhgwUQ0Fj3SI7SaUjQTVbqklcrFCTet0uCWIUDtP7hProC97FVVw0sUClzBVqiYAG0bHQKB2hFZUxjGSqglgCVa9qGgk7g/v0CnLitxIMRekkTcZelIoT76Brsd2JivZjaOSqGT8TbBNKmfWuge/xSFYLaoCoSQFKGgPobh6esRoFBK5swJJTGrHIlwiJBMrFNj9OugrjdrMKZGN6hyQzf8AyjurwD7aCVgDO2P/AGDQ/MsogEAGWBPyidpnfQVdCxWY+IuxA9xO7AGhE1967b6DnPkDKx7DkbtV171cyJFO6DtXkaB0F5/RUXj4SqQJJFBuIqY+8zoMyWq4KHHhUgFYBBCypmtJBFd966DMquodgLpZ7Xu+L1JAlQIBk6CthVSMb2kE3ZWIMRSbp4tFwiDtoEdEYBypBiSENCi0IkgUg/sI0GyEYSqC1b71UlGWAYAkyQAZk+vE6BDi/UTxq5QMTCSJtOwJIAod/wAZ3B7zjc3NkDAbCWDGJEiJDUn0FNtAgUNKNOXGojISLQLVIPdMitTH8dA4JyY3tR08jEIymGmQZ5HHX+OgN+QBnAZ2YkgRAtCkbNHyNSBxoJIWIyuhAunteYQIoIigNJ6aB0TErHI03WmzJRZVwCB3NIMyJB6130CIEXs71OVWOIDua07qQJidx/zIOqsR57GJY3FnQEhQIVgY3gSaGugOHEnjMZP0gZTLVaf1E8bSK7R66BcyKLUxY3EgmwBpAINwAmKrx1OgqFvQIuMESIM0daGWAUjn7fiCspAyYP0yCAbAItUSYJgyPWnuNAoaZN/jOQBceNSWBM3SQTXoevvoOZ4yZRiYxAAXK1AACZvBM8UEx7aDsufxzb+nN10CLbY3nea7zxM6D//T9fnUy6FGtKqxxGQibg7cbneugrcEdmKhVAJyKZ72rzJmDv09aaAm7IsOgOS+hNVkMO2TvINabe2glR2PjYsGEOx7lFFJF7A7xzt00GubwmFYK8za4qE4BINIG3uKaBg6XNmJVrnDK0zaVgxb9edvtIMVW1QHBWScjAqb2kVKm7eBt120GUWt3OwlCceMLuZAPAmsUIpoECZcjBgYCi1goQ0kbivAPPH1IBkVSJYqxAGEr8gLR3GDAMUJmscROgoqTkEwoKkvdd3VgkqREbbj+QJcuO/GwKuxEqtSAtQqxQkRNdAoZgDCLhZGdFILUnuiVBmCdojQPk8JDIp/xv3tIB72tYEQB1G/GgwLY2Zox2WXY26qdt6xQsRP8NAWZbcYgDKDXGB3EGPWQTFfSd9Ay3SjwrqoS6rN0giQa28b/U6DnzZAqBVKfpkeXKAI5AIJFTG//Og6QQiuS6oMfbLcMJkbUoaUI99AvzITExqSYZJiBANTEREe1TO4Iy/7CzkDk+T47GrEAdwEAR6j+AUOIusKpZSaqosKiWkrIiZHJ5PXQTGRmsD2phADCTFt0GAQadB0B9dARjQL4SFXyESFbuLDeJI2NBJ3r6EEKlcduPJMoRjxtXeEkRNpqRtvT10DeOVDPiAIYExAKhakG4kbbDp9tAspaSxLYXucBTuDQF6QPpXp00BLQXAuyZHQDMir3EUX4wOBsPueAz5HyBsVqt3dhaqxXIFJkAzaNqR+IMuTJdkxG1YQKFikzbG0kVFK0+2gRT5AuN7XuWmNSLYLVMqdiO3aZ/ELlycb5MOYk3RdEm20cQ3pP4xwCkMqrmab1uZRICqHisgwRPUiedBgFVWJBGK60MsAQD3sDUiokD7aBshOJWRK+JV7mkgQKlhMGkx68U0Egr42xAKiXA3XKEggSTSKU3H1jQZsxJCTYC3ZkK0ZQfpvJmvvEmAOFBhYlnJhRaBAoQ5kXEdCYOgGFJXwlWPcWa0AE0Ne4U2AjQUKyVxhUKLbfjmLW4mpFSafQaBMqOblysVDTaZFsXSd943iB9dwCsosID3jFWQiqAVIm0gg3QCY6aC3hfyzIsifHY1kdYn5cR00H//U9gyHDrk8hxhFAQFrryQT8tprtB9ONAzHL5Lf7WbxubzBOxMCI6fbQIS4WLbHQhUyg8jmonYfhoFHZcQwaTaq2MVW/lOI5AA6e+gwbHjYY/HGPJJKr8jtWpJ3WI39J0BZ1IbFjxl3RChP9NRaq9tOKV/HQUi1b8qyskOjSknIQZEmKTEe9eoQIKY7cSsvcDjVw00BhYWZJVd9A7liMhAMAlZAuIcilsbKRAEc6Bkx5TnlDKlAXzG6tQdzQmnTnQJaWwDJkeuNv028hJUmNyZ+0bfXQJbabEeDhZy8EiADIEgNSa1++2gqMpNneqAXTaRdRVAAuY/b9+gTLhZGGZgEKRdXtZyCVLAzQk2zP20DYmyFSX7EhkK7w1ZBiZJ9eTsZ0E1MjysqlLSmVQtAGM3bAMB6ffQdKpjyY3b4i4S8CTEPvtBpFYoNBO9VON1awqCsG9ZiQAJBFJ6SNACJYM2SI7QiLUAQJAglaAmBtoHKKjrkF6OzsSWEgMQYFOOafv0CHIyAl1JRwJFoJSSZrwKRUcfTQZFVC6siO+MMqoUUdzAQIpMgfXidA7OQzPkRe35csccyO07GSOOPbQIWFqMirifyFMhBIqZWVWp4oI0DN2PkYMbsQIGXI0iDaZhfUR+0aDfqY1wh2m0GXWltorcASDCn8NAhezx0hD3sgYyQoE7AbRTiPTQYXBiRkhVKljLNLWyx6CgJ3n7jQVbGpZhBDeQnLBqyg8Fj278H+GgTETkDeYOlrq6uCIYtCmCJpPQ0nQTKhHPk+ZZniFJWBMkCPkB6fgDoHAxup7LsiHxgCQGHyqNyDBJpX10G8WYDJa6shEWAAgx2iRJIIEGgroGOMr0xvDDwhiF75tEjiaRPtvoJoQQ6lhId2KkAGXFKGaRNJH79BQrkS0gscjL43cqS53jcmKne4DQEP2qIgos0gKXHBaooTSaToEMLfjxA3NQ5JdyWLFTMxFVknb30G7cyEANieLT2SCbqiAYBNJk/XQa1yjQWAeQ5YKBdFoi6g6EAdRJpoMFVrcmAhMTEA2yGpSYUACf23I0GfHkRFDMqwpdQw+BELSCSLQaGug1v6Pg8g3myw3/K35e/NsxxoP/V9ghiysM0DxNNqYyoFCQQZFBIMHrH00BKpYXIqwFQQi5CogbNsBGx9uZCc5DGS3McqvLYJoFK2gi4bgMJnQVCChbIpxiceRzFRPNuwJinT7aCf+uEUq4zNk7izlxabbdzQnYzJ9NAz2scd2YtCrC1JI33WhOxofodATiSMgxiCTbka+IgETyYERMdeNAQkTK4yVBcW0x2mpJk8iRP4QNBFyy9mK4tcCFSoJiRyeIiKCsbaBcnmuh8QDu5C5DUATBgTMVmpj00HQzYzIdRkDNa1QqmALASJntr+0aDN4iXVgWVR2IDaaMTAAM91IPMDmNBgEZmkfFiMzlrUkAybdpk/ShrXQTKL5nVrP02UDFUyLYj4TUATAjj2AvF4hQWxUQQeCAKBYmkSNtuh0EvmQEysgUFImsc7ttCkxNNA2O8OztkQm4KL6vtEBgd6RP150F8bXsxWGDkXoymStwao9JMVroA5EZHDtJhXIJDSNjE8Cpih30E1UtldEo6syrYYIXuJgxAqY9J9tAcYxYpT4I6lCWIIlTt3Lz9v3AtmSQmRZQ5HvYBSACAZJYAxJqY6emgI80uwcqL48gG0rERU7t7zvoL5AGJOTGc0wbCUhWFWUExxvT9+ghemYKuQBQwW1nqTDUK3QTQ7/hoAtAwZodWCvkLQSaXEsSZApEbaDI+NizPjIIkF2lmlVta6RA+VSaaCZkHyMniyKhhAAApDki2ARND+PGguFVkVFIXAXBtZSLiwEChgx6g+u1QQpkKYjYc2JA8JNpAHaFneZ6e22gDPkaHULiJAIUTdkYUImhIFAINNAwCRkySmS5Q9uSAY7ibgLqgVkCugDugATKSpFpCoi1EQBHP5fTQWxllsyNmlu1XYRbU0kbRxIAroJjFYc2NgMxtsLlSFIIWJO8g8T0jQOMrOL2/UKBSChkiAJMQYrO1T7DQcZQjGqg+PFkJJMgqx2/prQ7Cs76C6nCqm9xkUglmdZ7mUG4rv9v36AIzNGQgZLEItFFYg/ICzdp4/foNke8SQo8hCsxJEuAVIJmgmNtBRhKur4Vv8bLasloJikrQHjfQGF8hIIxYsaWKRUsqgkxQzEfxGgPiWy28REXz3REXTE/WYjQf/9b1/ZVyDyZVJo8X9vbKgSRMESOnr6hRsZxS+MoLhLK5EUoVA+Ig28/fQI1v/wDoNkuWRxK7QSoBMrUcnjQTW0H/AGsl9+RAGvWSbQDIBaSCAZ33GgqiL+mqkMFEZSvbLCQBLRNaD+B0GvzIgZch3ZmQmilIpBMkGDz/ADDBPEMxB8bKvcEUFQsXC4E1gAj1meugZkq4CqgcgPuquSbRwaz9vzBWxM16KXTHlgI7GQTAqBSIjn6dNBsyLjxh2xqoIPYDWszBIBAr09+dAyYwwS3HP/XJIFFJgCDT+4RU10CwEIz+QDKYCirO4WhBBCyajj+Ogw7fJAV0ADOHTtgEky1u8itPynQKuQuExlbhKhFIMGhAMiensYPWgUi2cjYZeTOUCIjlljq0xv8AbQE42xqt0gWlGKfFpEiTVj0/LQSZ2cBVPmRjCqxD1mt0VihMRsOuwPjAQeQBhNqZSryotBESGOwNBHpoCPHkKKMYxCScVxmW33IIBkfXaDoFC7MexyVNhIMAMwBLNW6JG+40GtCY1yeNKAKXNyS0wCZFZBr120DFsgE2lWDg9pXsoQJHNzE+ugUeRWfFYrq39IJehCj1iBEzO/TQK2Nycw8JZQwPfBrwAVqBQU9uDOgYFvIcjXFpkC0gblVIkkdTU6A48njG4IZi14cRMAQBtSJroHZ3b4pZgQlTJBBmJG8SKxMroFYxjVoa4KUACUF1D2GZIArWKHQKA4uvUeJQcaYrjVbSQKHkeh29KgiK7ZHeTjNSV/pLsRWDQwTBnbQEI+MEMEJDLccdzEGJDQBNYA+/XQNlW1UxPKoEvGP+lmm60Dmo5p7U0C5YEH4YhBZrSEYGTW2TIpGgauF0xswyFmCuCtLTatoJFTETXYaDF3ZXYMrKpNuVmBIIWYEGlpEV6ztoJhnJUswcPAKM6sFFtCAZ34JO++gvjRseNcci9IuVYUkwSCIBqqnav8QDNGTuHaFuu7SXmpFrR8gOPX6BhKkhl8mdXDNQEkW1AmJilTE6BSwH+VWgghkAI7SbQIYGJrQHYaBhlvvOPJkEMsoFqCxERPX2n8ZCZlMDAYwbMhYkiFDVHLbkmOY67HQPB8U3/pW+Txc3ff4zz9fXQf/X9grFLKhQy1HcAG1KEX3TMVAkeu40FlLsrMQz5FDFCwBgyQIJAAI/bbQQCBgAqKi5xDhSLSxmdpqIER+Ogay5Syrjzo5Igg9zcEGoFNzG40DAAre3idkBNqkxLbMRMRBJ29RvoIt35AwIUAkZLz3cgXQxFT1EbUidA2MIULuCSqeNgUkATBJmQCOZ440CqMdMgyMTB8gUSoAniT2ggU0GKhiwUTlyNCNEAMA/xJ4pQz7baAuy+IsQHGRQUXxkD5CgkDtp19dBQvlxHKxDMmMgEtAkjY1Etxz/AA0HPMtk8UsAptYkuDNxJImBJGxG+gs63BcOzGAhK1KiCAZgdaTI+8ATmPakWLlizIrEEXKAGgxST+x0EisqVHxcBQpWdiOTEkRFPtTQdAgkZExeUyCp3owBlSdjUbgdeSdAuWxCM0hThJQogBiTK3gE8idvx0AW8JIN4F65b5cSYNYFYWkjfbQQtwZHdGzeMMpQYl7VW0k1Mlab6CxAVjmUtJDNkMi9QBsDBmJP2jQTWBLRJi8hSHUWQTbBAi2BHSnXQVJXPjBxyXcyRcCTbUGCSsXesffQHLckKihUyHtKDutAmD9aGn47hlmy9AVckIgYKIpIiCPkDTpO9dAMhznGkYyMq2wxAZVJNoCkzWannQG093gPe7ADK46TJnqdjSZ+mg5yBlKOzKxcoy+xFpoxB395p6nQWKKgKCwKq2jJNs2iJJk1kdOJ40C2o7vCq+R4xqsmtDdJMGRz6RoF8mFnOdvkbT5A8Fgpj4rJH7RoKL48YvVQzKbGxAECagXEkgb0mDGgqKqiHKca/KQ8NBB3k8RMinTQQwIpaxSq32sQJUmQZoDLKDEcV0GhWCASozgXsAoDMwFpIngwY/OdBLvYBFcvbTLVQpAMAiWigXcjQWXGq5UBUMuQ3qAAQFIbtDdCSPT76BDdiRS4AS4qosttMAyrQTUUnfQF2KXuEjOqMjEEm47xdU0Fd9BhiGVjhLqASASJVzux7THIG4O9PQKlnyPawVcayrSDaSACT0UW7fh10GKY7iDCNLuzxaSLg3Q7H1230CAq75PErLlUd2O7tM716Az6caC0m/8A/wBgsmduYnrFttfx0H//0PYEBbc2PKQi5JVzaJuALS0CCYrPtoKWIpliXYAeQT+mSGAYknkCjHn8NAj4wcpUdpJopclpIapC921K9dBgVdkJ/wDWFIw2yVioDMtRFftsa6CqoAgnJ5BkKqTRCwHbwJPMDQc6ichnxsbf6x2y8sSSDFQK+npoBeQuV1NrZCXRbh1IMyIBp69JqNAyYyMlqllAKl0EEDHUC+sGd/adBRXd4JyYhAvwy0mYNfjGxJ20EcJxKmVQuNKgOryoB3qTO30PXQUY3LjfJkVz2qxlRuTRgAdqU250CkZnvKOofK0FlBUDuKiYBkSOdBsgW5cZZGyZRPnYkCRETWsniKU3jQUyCcQxhCEZmU7XUBWhuFeI5roEIdXxY2xXg3KoUwGERQRT1/hoCiQ+PIJTDhF7YiT29tSInrMTOgksDIi3FGQshkdpWNgKzJoKTEdNBZF8lmN8UXAuQWJJr0as03PG3oCwnksy5ASoPhP9Kl6gggyPSa/bQVZcjBlAsfGAcjrNTAgAzQTxFBWlNApVv0imK2yoEwYgAXA3QZJj79dBNkZVUlIZlIOFQLiLZAUgTSBTj7aBjIyloh0Y9oMCNxM1liKkcaAsUSCzDM7lz3AGQRdDWtBC80PpoDlXCtpOIgUAxGskHb132u+lNAis9uQO4AiuQQCsw0xTap2n20GOQ/pqCAQ36iAkdgECLTAoZmfc6BQuO48DASzsJvDSGvArIMxJ430CuGcErbbCjKKdykdpA9o5iduugpifx241SFbxu5uJmYmAI3kCn5aDB+wqX8aZQ1orAoCRMqIBMV9p0CDEZKoxBxqTbUzEgEcmC3AFdA72Gxg0sjIACIMGLRLHYxPXQC0ZzkZQVbIA5moBMRvA4HFfWh0DlhkhUqCB5MYuJhBVZBkQDFBU6DMC6q4IV4H6gmatF19qyYiBSn00EMjZGTxLlLOC65UkCFHJjag/H6aDoarY7uxFCeFCzGbKyeIjcnaNBzhXJbGGGQnHAUKaCtetRzBHGgsXM45txUkqvaLYAkClIUmoO0dNBNcYVcdrnKqvLGYAmCBABIkkjpoGXECVCshxl4vY33AEipiJIam/TjQT86TdYfF8fLxPxnaZtrF3roP/0fYE+Lx4/nd3eL5WTItm2tu1scaCSTall/j8dZ2ml13MTO3O2gy3eN/LFkGbouvn9SI/qnafT10Fntl//wAt3f47Y3S/fjefx0Dfq+NLLLv04v3m7unn5RM/noBk8sN4ZurfbZHyNsxW6I0Es1t+O6bbf0brYugT8e2I/GZpoMI/U/8Azy1szbs13y533pG+g6O+cs3een9sxB6Unb0mNA3dI8l1sHxz8d6et3tSNtBE+PyLMRLeOYtthotmsbf+P4aBU88LM+Kvxm31/wDLadq9f6tA+Dzy3lt/7EiZsi2DbMV+Ufu50C4LZxWxbaP8k/3H8bZjjf10GHk83+xvdcnjiJsu4upH79BJfLelnl8d4t+Xx4u/8d96dNBQeD/1X+SwTbN0Wn+2kzt/+3QWabeyPFKx5L95/Tj62/jOgmkePFdfP6l/wmZbbm67aNAH/wDb4vJfP6e19s8XVtmf+NB0Gf8AqtbM2vF3ziv4z+06CdJzTN9xsum2azPEdY40E8cSvljyW/q3zbFduP8A5R/HQNkj9C/bts/unyCI4mJmPrxoIZLrj4IurM/OZp8/SJj1mugo/nvPht+S9PJdH9cV3mdBscXYI8fmtX5770iK7Tv/AOOgknjj9O6Lx47Z/uE7V2j161jQWMeMTb4PGLIi2eN+fld/HQMZuptYfPbET29azMxNZ9NActvmPlnxwu+01n5cxbtoHxeGG8s7NPm+dsibvrEToEW7zNbb4rG/us/8bvSPpvGgLR4Wuu89N7L5gREc9JroES2xrrfD5zHymJM+SaztE8xoA8WLZd45fzWzfMj48RERP56BO23FfffYLbPjNo/yTWLutIjQdWHwzhtj4i2+L/gI+sRPO3EaCb/DP47bJN9+8R3bf/pia6BT5fHj8Vt8L8bLfjS6PWbeNtA62+Zf+ttdWI+FwviaWz9ZmKaCTWRlu2lrbI2keTenWJ4+mgPb5f8A1XWf/wAls/8A223/ALToP//Z",
"type": "image/jpeg"
},
"$:/themes/tiddlywiki/starlight/styles.tid": {
"title": "$:/themes/tiddlywiki/starlight/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nPlaceholder for a more thorough refinement of Snow White\n*/\n\n@font-face {\n font-family: \"Arvo\";\n font-style: normal;\n font-weight: 400;\n src: local(\"Arvo\"), url(<<datauri \"$:/themes/tiddlywiki/starlight/arvo.woff\">>) format(\"woff\");\n}\n\nhtml body, .tc-sidebar-scrollable-backdrop {\n\tfont-family: \"Arvo\", \"Times\";\n background: url(<<datauri \"$:/themes/tiddlywiki/starlight/ltbg.jpg\">>);\n}\n\n.tc-page-controls svg {\n <<filter \"drop-shadow(1px 1px 2px rgba(255,255,255,0.9))\">>\n}\n"
},
"$:/themes/tiddlywiki/starlight/themetweaks": {
"title": "$:/themes/tiddlywiki/starlight/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "Star Tweaks",
"text": "Demo of a control panel tab dynamically loaded with a theme.\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/tight/base": {
"title": "$:/themes/tiddlywiki/tight/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml body.tc-body {\n\t\tfont-size: 13px;\n\t\tline-height: 16px;\n\t}\n\n\thtml body.tc-body h1,\n\thtml body.tc-body h2,\n\thtml body.tc-body h3,\n\thtml body.tc-body h4,\n\thtml body.tc-body p {\n\t\tmargin-top: 0.3em;\n\t\tmargin-bottom: 0.3em;\n\t}\n\n\thtml body.tc-body code {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body section.tc-story-river {\n\t\tpadding: 0px;\n\t}\n\n\thtml body.tc-body div.tc-tiddler-frame {\n\t\tpadding: 12px;\n\t}\n\n\thtml body.tc-body div.tc-sidebar-scrollable {\n\t\tpadding: 12px 0 12px 12px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-subtitle {\n\t\tfont-size: 0.7em;\n\t\tfont-weight: 700;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-subtitle .tc-tiddlylink {\n\t\tmargin-right: .3em;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tags-wrapper {\n\t\tmargin: 0;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame button.tc-tag-label,\n\thtml body.tc-body .tc-tiddler-frame span.tc-tag-label {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h1 {\n\t\tfont-size: 1.5em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h2 {\n\t\tfont-size: 1.3em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h3 {\n\t\tfont-size: 1.2em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h4 {\n\t\tfont-size: 1.1em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-improvement-banner {\n\t\tmargin-right: -15px;\n\t\tmargin-left: -10px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-info {\n\t margin: 0 -13px 0 -13px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-fold-banner {\n\t width: 13px;\n\t margin-left: -15px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-unfold-banner {\n\t margin-left: -13px;\n\t margin-top: -4px;\n\t}\n\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n \tcursor: pointer;\n\tcolor: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: text-bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: 20%;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
* добавлено правило "[[Вскрытие замков|Вскрытие замков]]"
* добавлено правило "[[Особые материалы|Особые материалы]]"
* добавлено правило "[[Плавание|Плавание]]"
* добавлено правило "[[Пороки|Пороки]]"
* добавлено правило "[[Удушье|Удушье]]"
* добавлено правило "[[Улучшение экипировки|Улучшение экипировки]]"
* количество предметов и особенностей местности, с которыми вы можете взаимодействовать [[свободным действием|Порядок сражения]], изменено на два
* добавлены новые способы использования [[Очков Героя|Очки героя]]:
** //''"В этот раз наверняка."''// Ваше следующее попадание атакой в этом раунде считается критическим.
** //''"Даже не почувствовал."''// Вы можете потратить одну Кость Хитов.
** //''"Есть ещё порох!"''// Вы можете восстановить одно использование умения, которое обычно восстанавливается на коротком отдыхе.
** //''"Погоди, костлявая."''// Вы можете один раз перебросить третий проваленный спасбросок от смерти.
** //''"Я с тобой ещё не закончил!"''// Раз в свой ход вы можете совершить одно дополнительное действие.
* внесено исправление в [[бонус владения стрелковым оружием|По принципу действия]]: "Владение стрелковым оружием позволяет вам в начале своего хода, ''если ваша скорость не равна нулю'', снизить её до нуля и получить преимущество на первую в этот ход дальнобойную атаку этим оружием."
* изменения Боевых стилей:
** добавлен стиль "В полторы руки". "Пока вы держите одноручное рукопашное оружие в одной руке, которым можно наносить удары двумя руками, и не используете другого оружия или щита, вы получаете бонус +1 к броскам атаки и урона этим оружием."
** добавлен стиль "Морпех". "Пока вы не носите средних или тяжелых доспехов и щитов, ваша скорость плавания и карабканья равна вашей скорости ходьбы, и вы получаете бонус +1 к КД."
** добавлен стиль "Тоннельная крыса". "Бонусным действием вы можете встать в оборонительную стойку до начала своего следующего хода. Пока вы в этой стойке, вы можете совершать провоцированные атаки, не затрачивая свою реакцию. Кроме этого, вы можете совершать провоцированные атаки по существам, которые передвигаются более чем на 1 м в пределах вашей досягаемости."
** изменен стиль "Сражение большим оружием". "Если у вас выпало «1» или «2» на кости урона оружия при атаке, которую вы совершали рукопашным оружием, удерживая его двумя руками, то вы можете перебросить эту кость, и должны использовать новый результат, даже если снова выпало «1» или «2». ~~Чтобы воспользоваться этим преимуществом, ваше оружие должно иметь свойство «двуручное» или «универсальное»~~."
** изменен стиль "Сражение двумя оружиями". "Если вы сражаетесь двумя оружиями, вы можете добавить модификатор характеристики к урону от второй атаки. ''Оружие со свойством "механическое" является исключением.''"
** изменен стиль "Стрельба". "Вы получаете бонус +2 к броску атаки, когда атакуете ~~дальнобойным~~ ''стрелковым'' оружием."
* изменения [[черт|Черты]]:
** черты "Крепкий" и "Стойкий" объединены в черту "Живучий"
** добавлена черта "Альпинист"
** добавлена черта "Бойкий на язык"
** добавлена черта "Закалённый"
** добавлена черта "Крепкий орешек"
** добавлена черта "Крепыш-коротыш"
** добавлена черта "Оплот"
** добавлена черта "Оппортунист"
** добавлена черта "Предприимчивый торговец"
** добавлена черта "Чистый разумом"
** добавлена черта "Эквилибрист"
** добавлена черта "Эксперт по настройке"
** "Лекарь":
*** добавлено свойство "Вы получаете владение набором травника"
*** добавлено свойство "Вы совершаете проверки Мудрости (Медицина), необходимые для оказания Первой помощи и Реанимации, с преимуществом"
*** изменено свойство "Когда вы используете комплект целителя для стабилизации умирающего существа, это существо также восстанавливает ~~1 хит~~ ''количество хитов, равное вашему модификатору Мудрости (минимум 1)''"
*** добавлено требование владения навыком Медицина
* удалено правило "Серебрение оружия"
* удалено правило "Адамантовое оружие"
!!!Классы
[[Бард]]:
* добавлена [[Коллегия Грома]]
[[Варвар]]:
* добавлен [[Путь Экзокостюма]]
[[Псион]]:
* добавлены Псионические дисциплины (5/9): [[Телепатия]], [[Транспозиция]]
* добавлены Псионический архетипы (5/7): [[Блуждающий разум]], [[Пробуждённый разум]]
* добавлены Псионические таланты для дисциплин [[Телепатия]] и [[Транспозиция]]
---
!!!Заклинания
Добавлены заклинания из Kibbles Compendium Of Craft And Creation, которые прилагаются к [[Псиону|Псион]] и новым подклассам:
* //громовая нота// (заговор)
* //мелькание// (1 уровень)
* //принудительный запрос// (1 уровень)
* //удар грома// (1 уровень)
* //импульс грома// (3 уровень)
* //эхо-копьё// (4 уровень)
* //пространственная манипуляция// (5 уровень)
!!!Классы
[[Воин]]:
* добавлен [[Техно-рыцарь]]
[[Псион]]:
* добавлены Псионические дисциплины (6/9): [[Психокинез]]
* добавлены Псионический архетипы (6/7): [[Стихийный разум]]
* добавлены Псионические таланты для дисциплин [[Психокинез]]
---
!!!Заклинания
* переработан //ведьмин снаряд// (1 уровень)
Добавлены заклинания из Kibbles Compendium Of Craft And Creation, которые прилагаются к [[Псиону|Псион]] и новым подклассам:
* //арктическое дыхание// (1 уровень)
* //замурование// (1 уровень)
* //заморозки// (2 уровень)
* //молниевая подзарядка// (2 уровень)
* //разряд// (2 уровень)
* //мгновенная заморозка// (3 уровень)
* //огненный циклон// (3 уровень)
* //поражение током// (3 уровень)
* //ледяное копьё// (4 уровень)
* //скачущий разряд// (4 уровень)
* //разверзнувшиеся небеса// (5 уровень)
* //эфирная буря// (5 уровень)
!!!Классы
* [[Древний дракон]]:
** изменён Расширенный список заклинаний: //власть над ветрами// заменена //призывом драконьего духа//
** изменена Драконья речь: "Вы можете говорить, читать и писать на Драконьем языке ''или на одном другом языке на ваш выбор.''"
** в умение Последователь дракона добавлены самоцветные варианты
** Дух дракона теперь требует первоначального спасброска, и уточнено, что существо может повторять спасбросок в конце каждого своего хода
** конус Дыхания древнего увеличен с 9-метрового до 12-метрового
* [[Драконья кровь]]:
** изменены Заклинания источника: //призыв стихийного духа// заменён //кабинетом Морденкайнена//, //подчинение личности// заменено //призывом драконьего духа//
** требования к школам Заклинаний источника изменены с Воплощения или Очарования на Очарования или Прорицания
* добавлены подклассы из Fizban's Treasury of Dragons:
** [[Монах]]:
*** [[Практика Восходящего дракона]]
** [[Следопыт]]:
*** [[Укротитель дрейков]]
**** добавлено умение 3 уровня Магия укротителя дрейков
* добавлены подклассы из Xanathar's Guide to Everything:
** [[Плут]]:
*** [[Ищейка]]
**** упрощена формулировка умения Намётанный глаз
**** изменено умение Ухо востро: минимальное значение броска увеличено с 8 до 10
*** [[Комбинатор]]
*** [[Скаут]]
**** изменено умение Превосходная мобильность: "Ваша скорость ~~ходьбы~~ увеличивается на 2 м. ~~Если у вас есть скорость карабканья или плавания, это увеличение распространяется и на неё.~~"
** [[Следопыт]]:
*** [[Странник горизонта]]
*** [[Сумрачный охотник]]
*** [[Убийца чудовищ]]
** [[Чародей]]:
*** [[Божественная душа]]
*** [[Магия Тени]]
*** [[Могущество шторма]]
---
!!!Расы
* реворк [[Драконорождённых|Драконорождённый]]:
** удалена особенность Зубы и когти
** изменена особенность Драконье наследие:
*** виды драконов теперь разделены на три группы - [[металлические|Металлические драконы]], [[самоцветные|Самоцветные драконы]] и [[цветные|Цветные драконы]]
*** каждая группа даёт одну характеристику из двух на выбор и дополнительную особенность
*** выбранный вид дракона определяет только вид урона Оружия дыхания и Сопротивление дракона
** изменена особенность Оружие дыхания:
*** используется вместо одной из атак частью действия [[Атака]], вместо действия
*** форма дыхания (конус или линия) определяется игроком при использовании дыхания, а не Драконьим наследием
*** спасбросок от дыхания всегда Ловкость, а не определяется Драконьим наследием
*** урон уменьшен с ''2к6+ТЕЛ'' (3к6 на 5-ом, 4к6 на 8-ом, 5к6 на 11-ом и 6к6 на 17-ом) до ''1к10'' (2к10 на 5-ом, 3к10 на 11-ом и 4к10 на 17-ом)
** удалена особенность Драконья свирепость [[Закалённых драконорождённых|Закалённый драконорождённый]]
** удалена особенность Ночное зрение [[Мглистых драконорождённых|Мглистый драконорождённый]]
** удалена особенность Улучшенное сопротивление [[Странствующих драконорождённых|Странствующий драконорождённый]]
** удалена особенность Мощное телосложение [[Устрашающих драконорождённых|Устрашающий драконорождённый]]
** особенность Крылья [[Странствующих драконорождённых|Странствующий драконорождённый]] теперь улучшается на 5 и 11 уровнях (вместо 6 и 14)
** изменена особенность Драконий ужас [[Устрашающих драконорождённых|Устрашающий драконорождённый]]: "~~Вы не можете использовать эту особенность повторно, пока не завершите продолжительный отдых.~~ ''Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха.''"
---
!!!Черты
* добавлены черты из Fizban's Treasury of Dragons:
** Дар металлического дракона
** Дар самоцветного дракона
** Дар цветного дракона
* изменено Истинное наследие: "Каждый раз, когда вы берёте эту черту, урон вашего Оружия дыхания увеличивается на ~~1к6~~ ''1к10''~~, а Сл спасброска на 1~~."
---
!!!Заклинания
* добавлены заклинания из Fizban's Treasury of Dragons:
** //драконья трансформация// (7 уровень)
** //озорство Натайра// (2 уровень)
** //платиновый щит Физбана// (6 уровень)
** //походка Ашардалона// (3 уровень)
** //призыв драконьего духа// (5 уровень)
** //психическое копьё Раулотима// (4 уровень)
** //сковывающий лёд Райма// (2 уровень)
---
* в документ [[Статблоки для игроков|https://homebrewery.naturalcrit.com/share/1_ZkLK89KUOq2TpaOfTW2bH2SZ6qWI0J4AMW3BHr60459]] добавлен Дрейк-спутник Укротителя дрейков, Гончая дурного знамения Магии Тени и Призыв драконьего духа
* добавлено правило [[Сбор яда]]
---
* изменения [[Барда|Бард]]:
** добавлены [[Коллегии бардов|Коллегии бардов]]:
*** [[Коллегия Духов]] из Van Richten's Guide to Ravenloft
*** [[Коллегия Созидания]] из Tasha's Cauldron of Everything
* изменения [[Варвара|Варвар]]:
** добавлены [[Пути дикости|Пути дикости]]:
*** [[Путь Дикой магии]] и [[Путь Зверя]] из Tasha's Cauldron of Everything
**** третья опция из умения 6 уровня Душа зверя (раз в ход можно добавить проверку атлетики к дальности прыжка в фт.), изменена на "Дальность ваших прыжков увеличивается в три раза."
* изменения [[Воина|Воин]]:
** добавлено [[Описание воинов]]
** добавлены [[Архетипы воина]]:
*** [[Пси-боец]] и [[Рунный рыцарь]] из Tasha's Cauldron of Everything
*** [[Эхо-рыцарь]] из Explorer's Guide to Wildemount
* изменения [[Волшебника|Волшебник]]:
** добавлено [[Описание волшебников]]
* изменения [[Друида|Друид]]:
** добавлено [[Описание друидов]]
** добавлены [[Таблицы Дикого облика]]
* изменения [[Жреца|Жрец]]:
** добавлено [[Описание жрецов]]
** добавлены [[Божественные домены|Божественные домены]]:
*** [[Домен Мира]], [[Домен Порядка]] и [[Домен Сумерек]] из Tasha's Cauldron of Everything
* изменения [[Изобретателей|Изобретатель]]:
** переведено [[Описание изобретателей]]
* изменения [[Колдуна|Колдун]]:
** добавлено [[Описание колдунов]]
** добавлен [[Потусторонний покровитель|Потусторонние покровители]]:
*** [[Нежить]] из Van Richten's Guide to Ravenloft (на замену Бессмертному из SCAG)
*** [[Древний дракон]] (Homebrew)
* изменения [[Кровавого охотника|Кровавый охотник]]:
** переведено [[Описание кровавых охотников]]
* изменения [[Монаха|Монах]]:
** добавлено [[Описание монахов]]
* изменения [[Паладина|Паладин]]:
** добавлено [[Описание паладинов]]
* изменения [[Плута|Плут]]:
** добавлено [[Описание плутов]]
* изменения [[Следопыта|Следопыт]]:
** добавлено [[Описание следопытов]]
* измененея [[Чародея|Чародей]]:
** добавлено [[Описание чародеев]]
---
* изменения [[Рас|Расы]]:
** добавлено правило [[Происхождения]], описывающее особенности "приобретаемых" рас
** добавлено происхождение [[Дампир]] (скорость уменьшена до 6 м)
** добавлено происхождение [[Перерождённый]] (убраны отсутствие необходимости во сне и иммунитет к усыплению)
** [[Гитцераи|Гитцераи]]:
*** изменена особенность "Псионика гитцераев": "Базовой характеристикой для их использования является ''Интеллект или'' Мудрость ''(на ваш выбор). Кроме того, вы можете выбрать Мудрость в качестве базовой характеристики для использования расовой особенности Псионика гитов и черты Раскрытая псионика.''"
** [[Драконорождённые|Драконорождённый]]:
*** изменена особенность "Оружие дыхания": "~~После использования оружия дыхания вы не можете использовать его повторно, пока не завершите короткий или продолжительный отдых.~~ ''Вы можете использовать оружие дыхания количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха.''"
*** добавлены варианты "Драконьего наследия":
|^!Дракон |^!Вид урона |^!Оружие дыхания |^!Характеристика |
|^Небесный|^Излучение|^3-метровый конус (спас ТЕЛ) |^Мудрость |
|^Сапфировый |^Звук |^3-метровый конус (спас ТЕЛ) |^Интеллект |
|^Стальной |^Кислота |^Линия 6 на 1 м (спас ЛОВ) |^Интеллект |
** [[Кобольды|Кобольд]]:
*** изменена особенность "Копатель": "Вы можете действием, удерживая кирку или лопату, наделить себя скоростью копания ~~3~~ ''2'' м."
*** изменена особенность "Центр внимания": ''Бонусным'' действием вы можете отвлечь находящихся поблизости противников. <...> ~~Вы можете использовать эту особенность повторно, только после завершения короткого или продолжительного отдыха.~~ ''Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха.''"
** [[Людоящеры-аспиды|Людоящер-аспид]]:
*** изменена особенность "Аспид": "Вы владеете инструментами отравителя. Кроме того, частью продолжительного отдыха вы можете нацедить~~ 1к4 + ваш мод. Телосложения доз (100 г) яда~~ из собственных желез ''количество доз (100 г) яда, равное половине вашего бонуса мастерства''. Вы можете действием покрыть одной такой дозой одно колющее или рубящее рукопашное оружие, либо три боеприпаса. Существо, по которому попадает атака отравленным оружием или боеприпасом~~, должно преуспеть в спасбросоке Телосложения (Сл = 8 + ваш мод. Телосложения + ваш бонус мастерства), иначе оно ~~получает 1к4 урона ядом. ''Урон от яда увеличивается до 1к6, когда вы достигаете 6 уровня, и до 1к8, когда вы достигаете 14 уровня.'' Нанесённый яд эффективен 1 минуту, после чего высыхает. ~~Созданные этой особенностью дозы яда теряют свои свойства и становятся бесполезными спустя 1 неделю после создания.~~"
*** изменена особенность "Ядовитая пасть": "Если вы совершаете атаку укусом, вы наносите колющий урон, ~~вместо дробящего урона, обычного для безоружного удара, а существо, по которому попала эта атака, должно совершить спасбросок Телосложения (Сл = 8 + ваш мод. Телосложения + ваш бонус мастерства), получая 2к4 урона ядом при провале, или половину этого урона при успехе. Урон от яда увеличивается на 1к4, когда вы достигаете 6 уровня (3к4), 11 уровня (4к4) и 16 уровня (5к4).~~ ''получает дополнительно 1к4 урона ядом. Урон от яда увеличивается до 1к6, когда вы достигаете 6 уровня, и до 1к8, когда вы достигаете 14 уровня.''"
---
* изменения Боевых стилей:
** Метание: "Вы получаете бонус +2 к броскам урона метательных атак оружием. ''Вы можете извлечь другое оружие частью этих атак.''"
* изменения Пороков:
** Зависимый от веществ: "Полученное таким образом истощение можно снять только употребив необходимое количество вещества, либо магическим образом (например //высшим восстановлением//)."
* изменения Черт:
** Кобольд-изобретатель: "Вы можете установить одну ловушку за ~~5~~ ''1'' минуту, а не частью короткого отдыха. <...> ''Используя изобретение таким образом, вы можете решить не применять его эффекты.'' Вы можете ''попытаться'' использовать только одно изобретение в ход. <...> ''Эти изобретения выглядят как месиво из хлама или отбросов, поэтому прочие не желают их покупать. Другие существа не могут использовать ваши изобретения.''"
*** Корзина сороконожек заменена Карманным песком: "Вы бросаете песок в существо в пределах 1 м от вас. Цель должны преуспеть в спасброске Ловкости, иначе она будет ослеплена до конца вашего следующего хода."
*** изменён Летучий огонь: "Цель должна преуспеть в спасброске Ловкости, иначе она получит ''1к6 урона огнём и ещё'' 1к6 урона огнём в начале каждого своего хода. Существо может окончить этот урон, потратив действие на тушение пламени~~, и совершив проверку Ловкости~~."
*** изменено Осиное гнездо в сумке: "Рой насекомых (ос) появляется из сумки~~ и совершает бросок инициативы. В конце каждого хода роя существует шанс 50 процентов, что рой разбежится.~~. ''Рой совершает свой ход сразу после вашего и атакует ближайшее существо, пока хиты существа не опустятся до 0, после чего рой разлетается.''"
*** изменён Скорпион на палочке: "При попадании цель получает 1 колющего урона и должна пройти спасбросок Телосложения, получая ~~3к6~~ ''2к6'' урона ядом при провале или половину этого урона при успехе. При провале цель также отравлена ~~до конца вашего следующего хода~~ ''на 1 минуту. Отравленная цель может повторять спасбросок Телосложения в конце каждого своего хода, оканчивая это состояние при успехе.''"
*** изменён Скунс в клетке: "Вы выпускаете скунса ~~в 1 м от себя~~ ''в незанятое пространство 1 на 1 м в пределах 4 м от вас'' <...> При провале цель начинает рвать и она ~~недееспособна на~~ ''не может совершать действия'' 1 минуту. Цель может повторять спасбросок ''при получении урона, либо'' в конце каждого своего хода""
** Регенерация рептилии: "~~Каждый час вы восстанавливаете количество хитов равное половине вашего бонуса мастерства, пока у вас есть как минимум 1 хит, либо вы стабилизированы при 0 хитов.~~ ''Когда вы бросаете Кость Хитов для восстановления хитов, вы добавляете к полученному значению ваш бонус мастерства.'' Бонусным действием вы можете кратковременно ускорить свою регенерацию. Вы восстанавливаете количество хитов равное ~~3к4 + ваш уровень~~ ''2к6 + половина вашего уровня''. <...> Вы можете отращивать потерянные конечности за ~~количество недель равное уровню ранения~~ ''1к4 недель'' <...>"
* изменение правил [[Падения|Падение]]: "В конце падения вы получаете 1к6 дробящего урона за каждые 2 м падения до максимума в ~~20к6~~ ''100к6''."
* удалено упоминание состояния "истерзанный" из правил [[хитов|Хиты]]
* изменения правил [[Оружия|Оружие]]:
** Лёгкое оружие
*** "Атаки, наносимые по схваченным целям, совершаются с преимуществом."
** Одноручное оружие
*** "Атаки, наносимые неосновной рукой ~~или по схваченным целям~~, совершаются с помехой."
** Двуручное оружие
*** "~~Атаки, наносимые по схваченным целям, совершаются с помехой.~~"
*** "Требует как минимум одну свободную руку для переноса, если не является "стрелковым" (не имеет возможности ношения в ножнах или быть другим образом закреплено на персонаже)."
* изменения правил [[Действий|Действия]]:
** [[Захват|Захват]]
*** "Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше."
*** добавлена опция "Удушение"
** [[Толкание существа|Толкание существа]]
*** "Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше."
** добавлено действие [[Рокировка|Рокировка]]
* изменения [[Классов|Классы]]:
** следующие классовые ресурсы теперь можно восстановить количество раз равное вашему бонусу мастерства (а не модификатору основной характеристики):
*** вдохновение [[Барда|Бард]] (с 5 уровня)
*** дикий облик [[Друида|Друид]]
*** божественный канал [[Жреца|Жрец]]
*** ячейки заклинаний [[Колдуна|Колдун]]
*** проклятие крови [[Кровавого охотника|Кровавый охотник]]
*** очки ци [[Монаха|Монах]]
*** божественный канал [[Паладина|Паладин]]
** [[Друид|Друид]]
*** добавлено владение болас и бумерангом
*** добавлено умение Дикий спутник из UA - Class Feature Variants
*** добавлено умение из UA - Class Feature Variants, позволяющее заменять один заговор после продолжительного отдыха
** [[Жрец|Жрец]]
*** добавлено умение Божественный канал: Поглощение божественной энергии из UA - Class Feature Variants
*** добавлено умение из UA - Class Feature Variants, позволяющее заменять один заговор после продолжительного отдыха
*** умение божественного домена 8 уровня (Божественный удар или Могущественное колдовство) заменено новым умением 8 уровня жреца Благословенные удары из UA - Class Feature Variants
** [[Изобретатель|Изобретатель]]
*** изменены владения инструментами и навыками в соответствии с Eberron - Rising from the Last War
** [[Монах|Монах]]
*** добавлено дополнение к умению Ци "Если вы совершаете действие, тратящее очки ци, вы можете совершить одну безоружную атаку бонусным действием." из UA - Class Feature Variants
*** добавлены умения ци Зоркий глаз и Ускоренное исцеление из UA - Class Feature Variants
** [[Паладин|Паладин]]
*** добавлено умение Божественный канал: Поглощение божественной энергии из UA - Class Feature Variants
** [[Следопыт|Следопыт]]
*** изменены требования к мультиклассированию на "''Сила или'' Ловкость 13, и Мудрость 13"
* изменения [[баклера|Доспехи и щиты]]:
** + 1 ~~+ мод. ЛОВ / 2~~ КД.
** Атаки, совершаемые баклером, не лишают вас его бонуса к КД.
* изменения правил [[надевания и снятия доспехов|Доспехи и щиты]]:
|!Вид|!Надевание|!Снятие|
|Лёгкий щит| свободное действие |<|
|Средний щит| бонусное действие |<|
|Тяжёлый щит| действие |<|
* изменения Боевых стилей:
** добавлен стиль "Благословенный боец". "Вы изучаете два заговора на ваш выбор из списка заклинаний жреца. Они считаются для вас заклинаниями паладина, а Харизма - базовая характеристика для их использования. Когда вы получаете новый уровень в этом классе, вы можете заменить один из них на другой заговор из списка жреца."
** добавлен стиль "Бой вслепую". "Отсутствие возможности видеть цель не накладывает помеху на ваши атаки по ней, если она не скрыта от вас."
** добавлен стиль "Единство с природой". "Вы изучаете два заговора на ваш выбор из списка заклинаний друида. Они считаются для вас заклинаниями следопыта, а Мудрость - базовая характеристика для их использования. Когда вы получаете новый уровень в этом классе, вы можете заменить один из них на другой заговор из списка друида."
** добавлен стиль "Перехват". "Когда видимое вами существо попадает атакой по цели, которая находится в пределах 1 м от вас, вы можете реакцией уменшить количество урона, получаемого целью, на 1к10 + ваш бонус мастерства. Вы должны держать щит или рукопашное оружие, чтобы использовать эту реакцию."
** добавлен стиль "Рукопашный бой. "Вы можете использовать к6 вместо обычной кости урона ваших безоружных ударов, либо к8, если обе ваши руки свободны. Когда вы успешно захватываете цель, вы можете нанести ей 1к4 дробящего урона. Пока вы удерживаете цель в захвате, вы можете наносить ей этот урон всякий раз, когда попадаете по ней рукопашной атакой."
** добавлен стиль "Техника превосходства". "Вы изучаете один приём на свой выбор из списка архетипа воина Мастер боевых искусств. Если приём требует, чтобы цель совершила спасбросок для сопротивления эффекту приёма, Сл спасброска равна 8 + ваш бонус мастерства + модификатор Силы или Ловкости (на ваш выбор). Вы получаете одну кость превосходства: к6. Эта кость подпитывает ваши приёмы. Кость превосходства тратится, когда вы её используете, и восстанавливается после окончания короткого или продолжительного отдыха."
** удален стиль "Тоннельная крыса"
* изменения [[черт|Черты]]:
** добавлена черта "Базовая боевая подготовка"
** добавлена черта "Продвинутая боевая подготовка"
** добавлена черта "Элитная боевая подготовка"
** полностью изменена черта "Дикий атакующий"
** "Артистичный" и "Мастер маскировки" объединены в черту "Актёр"
** "Отличная память" и "Языковед" объединены в черту "Академик"
** "Второй шанс":
*** изменено свойство "Когда существо, которое вы видите, попадает по вам броском атаки, вы можете использовать реакцию, чтобы заставить врага перебросить этот бросок. ''Если существо промахивается в результате нового броска, вы можете совершить по нему провоцированную атаку частью той же реакции.''"
** "Воинский адепт":
*** изменено свойство "Если у вас уже есть кости превосходства, вы получаете ещё одну; в противном случае вы получаете ''две'' кости превосходства: к6."
** "Живучий":
*** удалено свойство "Увеличьте значение Телосложения на 1, при максимуме 20."
*** изменено свойство "Когда вы бросаете Кость Хитов для восстановления хитов, ~~минимум восстанавливаемых вами хитов равен удвоенному модификатору Телосложения (минимум 2)~~ ''вы добавляете к ней удвоенный модификатор Телосложения, вместо обычного.''"
** "Исследователь подземелий":
*** добавлено свойство "Увеличьте значение Интеллекта или Мудрости на 1, при максимуме 20."
** "Исчезновение":
*** изменено свойство "Сразу же после получения урона ''от враждебного существа'' вы можете использовать реакцию, чтобы стать невидимым до конца своего следующего хода,~~ либо пока не совершите атаку, не нанесете урон или не заставите кого-нибудь совершать спасбросок~~. Использовав эту способность, вы не сможете использовать её вновь, пока не совершите короткий или продолжительный отдых."
** "Крепыш-коротыш":
*** изменено свойство "Вы считаетесь на один размер больше при совершении проверок Силы (Атлетика) для совершение особой атаки Захват, ''а также для определения вашей грузоподъемности и веса, который вы можете толкать, тянуть или отрывать от земли.''"
** "Мастер большого оружия":
*** изменено свойство "''Один раз в ход'', перед совершением атаки двуручным рукопашным оружием, которым вы владеете, вы можете принять штраф −5 к броску атаки. Если такая атака попадает, вы добавляете +10 к урону от этой атаки."
** "Мастер владения топорами":
*** изменено свойство "~~Всякий раз, когда вы атакуете с преимуществом в ближнем бою, вы наносите дополнительную кость урона оружием, если каждое значение из двух к20 попало в цель.~~ ''Один раз в ход, вы можете нанести дополнительную кость урона оружием цели, по которой вы попали рукопашной атакой топором, совершённой с преимуществом, если наименьшее значение одного из бросков этой атаки тоже попало по ней.''"
** "Мастер щитов":
*** изменено свойство "Вы можете снимать и надевать ''тяжёлый щит бонусным действием, средний щит свободным действием, а лёгкий щит ''частью того же действия, которым вы вынимаете или убираете оружие."
*** изменено свойство "~~Если вы в свой ход совершаете действие Атака, вы можете бонусным действием попытаться оттолкнуть щитом существо, находящееся в пределах 1 м от вас~~. ''Вы можете совершать особоую атаку Толкание, используя щит, бонусным действием.''"
** "Меткий стрелок":
*** изменено свойство "''Один раз в ход'', перед совершением атаки стрелковым оружием, которым вы владеете, вы можете принять штраф −5 к броску атаки. Если такая атака попадает, вы добавляете +10 к урону от этой атаки."
** "Налётчик":
*** добавлено свойство "Увеличьте значение вашей Силы или Ловкости на 1 при максимуме 20."
** "Оборонительный дуэлянт":
*** добавлено свойство "Увеличьте значение вашей Ловкости на 1 при максимуме 20."
** "Одарённый":
*** добавлено свойство "Выберите один навык или инструмент, которым вы владеете. Ваш бонус мастерства удваивается для всех проверок характеристик, используя этот навык или инструмент."
** "Страж":
*** изменено свойство "Если вы попадаете ~~по существу ~~провоцированной атакой п''о существу, которое размером не превышает ваш, больше чем на одну категорию,'' скорость этого существа падает до 0 до конца текущего хода."
** "Убийца магов":
*** изменено свойство "Вы совершаете с преимуществом спасброски от заклинаний, наложенных существами, находящимися в пределах ~~1 м от вас~~ ''вашей досягаемости''.
** "Эквилибрист":
*** изменено свойство "Вы игнорируете первые ~~6~~ ''4'' м падения, когда определяете урон от падения."
!!!Классы
[[Волшебник]]:
* [[Хронургия]]:
** Сжатие магии: "Когда вы сотворяете заклинание ''со временем сотворения «1 действие» или «1 бонусное действие»'', используя ячейку 4 уровня или ниже, вы можете сжать магию заклинания в особую бусину... "
[[Паладин]]:
* добавлена [[Клятва Здравомыслия]]
[[Псион]]:
* добавлены Псионические дисциплины (7/9): [[Поглощение]]
* добавлены Псионический архетипы (7/7): [[Поглощающий разум]]
* добавлены Псионические таланты для дисциплины [[Поглощение]]
---
!!!Заклинания
Добавлены заклинания из Kibbles Compendium Of Craft And Creation, которые прилагаются к [[Псиону|Псион]] и новым подклассам:
* //аннулирование эффекта// (2 уровень)
* //пожирающий мрак// (5 уровень)
* изменения [[Рас|Расы]]:
** добавлена раса [[Кованый]] (с некоторыми нерфами: -навык, -инструмент, -язык; без перевода описания)
** добавлена раса [[Перевёртыш]] (без перевода описания)
** добавлена раса [[Шифтер]] (без перевода описания)
** добавлена подраса [[Людей|Человек]] - [[Калаштар]] (без перевода описания)
** добавлена подраса [[Эльфов|Эльф]] - [[Бледный эльф]]
<<<
//Расы и подрасы, за которые голосовали в ноябре. Драконьи метки слишком уж специфичны для сэттинга, и их трудно рескинить во что-то нейтральное, поэтому пока решил оставить их в стороне.//
<<<
** изменено "Мощное телосложение" [[голиафов|Голиаф]], [[устрашающих драконорождённых|Устрашающий драконорождённый]], [[людоящеров-чернобрюхов|Людоящер-чернобрюх]], [[медвежатников|Медвежатник]], [[орков|Орк]] и [[фирболгов|Фирболг]]: "Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, ''а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом.''"
<<<
//Давно витала мысль дать крупным расам больше преимуществ Большого размера, при этом не создавая Больших рас. Рассматривал также возможность использования Большого оружия, но такая сильная особенность потребует серьёзного нерфа других интересных фишек этих рас, чтобы они не выглядели автопиком при создании боевых классов.//
<<<
** [[людоящеры-чернобрюхи|Людоящер-чернобрюх]]:
*** удалена особенность "Агрессивный"
*** изменена "Мёртвая хватка": "~~Если вы в свой ход попадаете по существу атакой укусом, вы можете бонусным действием попытаться схватить цель своей пастью.~~ ''Вы можете совершать особую атаку [[Захват|Захват]], используя свою пасть вместо свободной руки.'' Пока вы удерживаете цель в захвате таким образом, вы совершаете броски атаки укусом по ней с преимуществом, но не можете использовать укус против других целей."
*** "Ночное зрение" заменено "Сумеречным зрением"
** [[горные орки|Горный орк]]:
*** изменена особенность "~~Мускулистый~~ ''Прирождённый атлет''": "Вы владеете навыком Атлетика. ~~Если вы совершаете проверку Силы (Атлетика) для совершения, поддержания или высвобождения из Захвата, вы добавляете к проверке удовенный бонус мастерства вместо обычного.~~"
<<<
//Усиление "Мощного телосложения" потребовало ряда ослаблений других особенностей, чтобы вернуть эти подрасы на прежний уровень.//
<<<
** [[серые орки|Серый орк]]:
*** изменена особенность "Увеличение характеристик": "Значения вашего Телосложения ~~и~~ ''или'' Мудрости ''на ваш выбор'' увеличиваются на 1."
<<<
//Лишний стат был опечаткой при добавлении подрасы в справочник.//
<<<
* изменено правило [[Очки героя]]:
** //''Героическое вдохновение.''// "Вы можете принять решение об использовании очка героя после ~~совершения~~ ''объявления результата'' броска к20, ~~но прежде, чем Мастер объявит результат броска~~. "
* изменения [[Барда|Бард]]:
** Вдохновение барда: "Существо может принять решение о броске кости Вдохновения барда уже после ''объявления результата'' броска к20, ~~но должно сделать это прежде, чем Мастер объявит результат броска~~."
** Боевое вдохновении [[Коллегии Доблести|Коллегия Доблести]]: "Оно может сделать это после ''объявления результата'' броска атаки, ~~но до того, как узнает, попала ли она по нему.~~"
** Острое словцо [[Коллегии Знаний|Коллегия Знаний]]: "Вы можете принять решение об использовании этой способности после ''объявления результата'' броска существа, ~~но до того момента, когда Мастер объявит результат броска или проверки~~."
** Непревзойдённый навык [[Коллегии Знаний|Коллегия Знаний]]: "Вы можете принять решение об использовании этой способности после ''объявления результата'' броска проверки, ~~но до того, как Мастер объявит результат этой проверки~~."
* изменения [[Волшебника|Волшебник]]:
** Инстинктивное очарование [[Школы Очарования|Школа Очарования]]: "~~Вы обязаны решить, будете ли использовать это умение, до того как будет известно, попала атака или промахнулась.~~"
* изменения [[Жреца|Жрец]]:
** Божественный канал: Направленный удар [[Домена Войны|Домен Войны]]: "~~Вы можете решить, применять ли это умение, после того как увидите результат броска, но до того как Мастер скажет, попала атака или промахнулась.~~ ''Вы можете принять решение об использовании этой способности после объявления результата броска атаки.''"
** Божественный канал: Благословение бога войны [[Домена Войны|Домен Войны]]: "~~Вы можете решить, применять ли это умение, после того как увидели результат броска, но до того как Мастер скажет, попала атака или промахнулась.~~ ''Вы можете принять решение об использовании этой способности после объявления результата броска атаки.''"
<<<
//Решил избавиться от антифаного правила, которое работало и против Мастера, и против Игрока, заставляя первого делать паузы перед объявлением результата, а второго выкрикивать вперёд Мастера и регулярно тратить ресурсы впустую. Я легко мог упустить аналогичные формулировки где-то ещё. Сообщите мне, если найдёте что-то похожее.//
<<<
* изменения [[Чародея|Чародей]]:
** умение Фокусировка заклинания (Использование заклинаний) заменено умением Внутренний фокус: "Врождённый характер вашей магии позволяет вам сотворять ваши заклинания чародея без необходимости в материальных компонентах, если для них не указана стоимость."
<<<
//Небольшой баф, который напрашивался из описания класса.//
<<<
* важные изменения в правиле [["Дополнительная атака"|Дополнительная атака]] в случае [[Мультиклассирования|Мультиклассирование]]
* правило "Наблюдая за работой заклинателя" удалено и теперь является частью нового правила [["Сокрытие сотворения заклинания"|Сокрытие сотворения заклинания]]
* увеличен лимит [[Пороков|Шаг 6. Выберите Пороки (опционально)]] с 2 до 5, добавлен лимит на очки навыков с Пороков - 24
* изменения [[Барда|Бард]]:
** изменено умение 5 уровня - Источник вдохновения
* изменения [[Жреца|Жрец]]:
** восстановление божественного канала отвязано от отдыхов
** перезарядка после успешного божественного вмешательства увеличена до 30 дней
* изменения [[Колдуна|Колдун]]:
** добавлен альтернативный вариант, позволяющий создать колдуна на Интеллекте
** добавлено умение Мистический ритуал, изменяющее метод восстановления потраченных ячеек Магии договора
** добавлено умение из UA - Class Feature Variants, позволяющее заменять одно заклинание после продолжительного отдыха
** создан [[Актуальный список таинственных воззваний|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1448348621]] колдуна:
*** внесены множественные мелкие изменения в перевод и формулировки воззваний из PHB и XGTE
*** реворкнуты все воззвания, позволяющие накладывать заклинания
*** удалено воззвание Жаждущий клинок
*** добавлено 11 воззваний из UA - Class Feature Variants
*** добавлено 32 новых воззвания
** изменен [[Договор клинка|Договор клинка]]:
*** изменены ограничения на вид призванного оружия
*** возможность использовать Харизму для бросков атак и урона, а также дополнительная атака на 5 уровне встроены в договор
** добавлен предмет договора из UA - Class Feature Variants - [[Талисман|Договор талисмана]]
** добавлена возможность заменять таинственные арканумы при получении уровня
** усилено умение 20 уровня
** ослаблено умение 1 уровня [[Ведьмовского клинка|Ведьмовской клинок]]
** усилено умение 1 уровня [[Великого Древнего|Великий Древний]]
* изменения [[Монаха|Монах]]:
** восстановление ци отвязано от отдыхов
* изменения [[Паладина|Паладин]]:
** восстановление божественного канала отвязано от отдыхов
* добавлено правило [[Активация магического предмета]] из Руководства Мастера
* в умение Использование заклинаний [[Барда|Бард]], [[Волшебника|Волшебник]], [[Друида|Друид]], [[Жреца|Жрец]] и [[Колдуна|Колдун]] добавлено уточнение о том, что дополнительный заговор на 1 уровне не учитывается в общее количество известных вам заговоров.
---
!!! Упущенные изменения из Эрраты:
* изменены формулировки заговоров //вспышка мечей//, //громовой клинок//, //клинок зелёного пламени// и //лассо молнии// в соответствии с последней Эрратой и Ташой (изменения незначительные, старые версии сохранены в базе для сравнения)
* изменения расовой особенности [[Голиафов|Голиаф]] Рождённый в горах: "''У вас есть сопротивление к урону холодом.'' Вы привычны к большой высоте, включая высоту больше 5 км. ~~Вы также естественным образом приспособлены к холодному климату.~~"
* изменения основной деятельности [[Исследование]]: "После одной недели персонаж совершает проверку интеллекта с бонусом +1 за каждые ~~100~~ ''50'' см, потраченные сверх изначальных ~~100~~ ''50'' см, до максимума в +6."
* добавлено пояснение к варианту Метамагии [[Двойное заклинание]]: "Сотворяемое заклинание не может иметь возможности быть нацеленным на более чем одно существо на текущем уровне заклинания. Например, //волшебная стрела// и //палящий луч// не подходят для этого варианта Метамагии, а //луч холода// и //цветной шарик// - подходят."
* добавлено пояснение к умению [[Колдуна|Колдун]] Таинственные воззвания: "Если у воззвания есть требования, вы должны соответствовать им, чтобы изучить его. Вы можете изучить воззвание в то же время, когда вы начали соответствовать этим требованиям. Требование к уровню подразумевает ваш уровень в этом классе."
* добавлено пояснение к умению [[Волшебника|Волшебник]] Книга заклинаний: "Если вы находите заклинание волшебника 1 или более высокого уровня, вы можете добавить его в свою книгу заклинаний, если ''его уровень позволяет вам подготовить его'', и у вас имеется свободное время для его расшифровки и копирования."
---
* добавлены подклассы из Player's Handbook:
** [[Воин]]:
*** [[Мистический рыцарь]]:
**** добавлена возможность использовать арканную фокусировку
** [[Волшебник]]:
*** [[Школа Вызова]]
** [[Плут]]
*** [[Арканный трюкач]]:
**** добавлена возможность использовать арканную фокусировку
** [[Следопыт]]:
*** [[Повелитель зверей]]
* добавлены подклассы из Explorer's Guide to Wildemount:
** [[Волшебник]]:
*** [[Гравитургия]]
*** [[Хронургия]]
* добавлены подклассы из Sword Coast Adventurer’s Guide:
** [[Воин]]:
*** [[Баннерет]]
** [[Паладин]]:
*** [[Клятва Короны]]
* добавлены подклассы из Xanathar's Guide to Everything:
** [[Воин]]:
*** [[Арканный стрелок]]:
**** умения подкласса теперь можно использовать с любым стрелковым оружием, а не только с короткими и длинными луками
** [[Монах]]:
*** [[Практика Солнечной души]]
* добавлено правило [["Перемещение"|Перемещение]]
* изменено правило [["Окружение"|Окружение]] (с преимущества на +2 к атаке)
* переоформлено правило [["Действия"|Действия]]:
** добавлено действие [["Ложный выпад"|Ложный выпад *]]
** добавлено действие [["Метка"|Метка]]
** добавлено действие [["Наскок"|Наскок]]
** изменены действия [["Кувырок"|Кувырок *]] и [["Пробегание"|Пробегание *]]
** добавлена особая атака [["Захват"|Захват]]
** добавлена особая атака [["Потеснить"|Потеснить]]
** изменена формулировка особой атаки [["Обезоруживание"|Обезоруживание]]
* добавлено правило [["Реакции"|Реакции]]:
** добавлена реакция [["Поднять щит"|Поднять щит]]
** добавлена реакция [["Отступление"|Отступление]]
* добавлено правило [["Мгновенная смерть"|Хиты, урон и смерть]]
* добавлено правило [["Состояния"|Состояния]]:
** изменены состояния [[бессознательный|Бессознательный]], [[ослеплённый|Ослеплённый]], [[парализованный|Парализованный]], [[схваченный|Схваченный]], [[умирающий|Умирающий]]
** состояние [[истерзанный |Хиты, урон и смерть]]лишено каких-либо механических эффектов (осталась только визуальная составляющая)
** добавлены состояния [[захваченный врасплох|Захваченный врасплох]] и [[скованный|Скованный]]
* изменения [[Барда|Бард]]:
** добавлено [[Описание бардов|Описание бардов]]
** добавлены [[Классовые умения бардов|Классовые умения бардов]]
*** добавлена новая опция Вдохновения барда из UA - Class Feature Variants: "Если существо сотворяет заклинание, оно может бросить эту кость и один раз добавить результат к броску урона или исцеления заклинанием."
*** добавлено умение Заклинательная гибкость из UA - Class Feature Variants, позволяющее заменять одно заклинание после продолжительного отдыха
** добавлены [[Коллегии бардов|Коллегии бардов]]:
*** [[Коллегия Доблести|Коллегия Доблести]] и [[Коллегия Знаний|Коллегия Знаний]] из Player's Handbook
*** [[Коллегия Мечей|Коллегия Мечей]], [[Коллегия Очарования|Коллегия Очарования]] и [[Коллегия Шёпотов|Коллегия Шёпотов]] из Xanathar's Guide to Everything
*** [[Коллегия Красноречия|Коллегия Красноречия]] из Mythic Odysseys of Theros
*** в выбор боевых стилей Барда [[Коллегии мечей|Коллегия Мечей]] добавлены [[Бой вслепую|Бой вслепую]] и [[В полторы руки|В полторы руки]]
*** Мобильное цветение Барда [[Коллегии мечей|Коллегия Мечей]] отталкивает на расстояние до 2 м (вместо 5 фт. + результат броска кости Вдохновения барда)
* хотфикс умения Благословенные удары [[Жреца|Жрец]]
** Когда существо получает урон от ~~одной из ваших атак оружием или заклинанием~~ ''одного из ваших заклинаний или атаки оружием'', вы можете нанести ему дополнительно 1к8 урона излучением.
Если вы нашли что-то ценное во время ваших приключений (драгоценные камни или произведения искусства) вы можете продать это в начале вашего продолжительного отдыха.
Некоторые ценности могут быть слишком экзотическими для рядового торговца (магические предметы, археологические находки, проклятые реликвии) и вы будете вынуждены потратить неделю на поиск подходящего покупателя.
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAEmklEQVRIiXVWW2xURRj+5nBou7V7trSybQnQwsOW0AICFoIlIKQgbVH7gCUYjUaboEJCjMZLTIxNDAkPJGqREI08oA9SNFIqWGOiiZeigkqL4NpqpEClWYrt7vaye+bmw5k5ly1MMjvzn/8+/20JTvyEOy25tTgfwKYTt1jLJym+7gdbVEYIIkmJZH0eGdphmWcfKTVPAvgGVix7Jznkdkrk1mIzzeVTu65k3zg9nK3ANAekBKQBQAIQHnHIQMv8gsRHi0IH7ppFDsGK2TOVdP6oGAkgJeS2kur9w9nO1wanl2OaKa0OzqGDumtd6l5IsL863P/qgtBOWLF4UMnxXtcw2VRaF4tP9Az+PV0SEAYBCKLkyaBCCJ8RwLrqorHemuJGWDH3iQxwAUgB2VS6pD6e/mpwYLIEjMPbDGAC4Azg1DkFBzh37kw4NNzZZy+NzWm8+N+XSA0s8ZQwDtk8d/aBa1PHe+PpiMPMg8JcIVqwgpkPZgxgFGAMPf2jkYP/pDqRGpitPGEYyfJ9r/w+tjxgrZ/RFUzxTFUhLmwuUwJthaeuAge28eL5G8tGMmwfABCZ/LOg5fLYUNfF8SikBIh0nluKnBgAKM1DtqESeaYBcuxyEK9pJFffgNaV5YnjqyoqDQDbu/4aj7oe0ByrqONFx4o5kNsWIc80HGHMBrit6G21sw4fZQC10RlPRCHlg+ZnI5PNGM/kWCQ8WBAcWlOGPbVRDI1P4/qEjfr5EceAXE901kmVmbfS6LqebDJ6RidXg2srbO+dqdqcYiCZweEL/6Lq5CX0jU4oT3weaFo/n8J/nUjdaw5O0YWgtldkOh5unUi8c2HYtZAI4Sm5HX3AI4mhycwCM5+LSIBBuwvhue0GVcAQ3LlTOvOJIL2EUTymEBETgqXAqAWR0zICxDLn9CnRtAFFHh3hPGVW5xvXeiirmUEYUCrdJyHaE2bfIYV1wjjw4gLzurF5btE5N9g6mFQXmA1QHVgnvb2YqBS3aQDvBd7BbyiL/Gw+tLDkDMJ5T+LWBNT7+AKqPREqqyWIDvLtYpITdNxdhObFZWcMENLdVjsv4bYG22cN9aWz8jSQXbpoNZ6rAlW43SurbsIg3bPaJ6Ps9I61ONh3ZSsmM4AQABdOcxRc3T1YzpKYTk/h1B9X1XemTuHRSg6EQzjVur49HK391gCjKA+H3u5oWNYPrgvQ9hWm2tyJU3ffFTz9aa+vGfJAA9Ud+vD2uovzIkVvAYABZoO8cJTuXbV45+P3L016/Ui3cx1E1ZNcwdTDc+rBnKFty8rks2uXtMKKUUeJYiT7jsSPNdU17NxYk4DwtXrXUi1Iw9xRKpg33DjDYw33JN5/uH6LfwQb/vlBnus4/3HLfXUdj276FUX5njdUbT3AqG9wUTVBrRDefeKB3z7csXENrNg5+BbBrj1qhug/BxLyvefN4bF025vf9b9+5Gy8AjfHZxYcVCFGi7F33dIbL29Y0T6/xPoAVowhZxG07vYx6x9HoDz6UgGA7V9cHmr+/urI6hvpqUqTEIsJkaoIFw6tryz/pXFp1WkAn8OKZXKF6/U/H3+1Ct6/t3gAAAAASUVORK5CYII=
!!!Экипировка
* [[Оружие]]:
** Духовая трубка: заменено Особое свойство на "Если вы, будучи скрытым, промахиваетесь атакой этим оружием, эта атака не выдаёт вас."
!!!Игровой процесс
* доработаны правила, связанные со скрытностью:
** обновлено состояние [[Невидимый]]
** добавлено состояние [[Скрытый]]
** обновлено [[Скрытное перемещение]]
** обновлено действие [[Поиск]]
** добавлены действия [[Диверсия]] и [[Сокрытие предмета*]]
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFU0lEQVRIiXWVa2xURRTHf3e7Xcqju22xxRLaKtGlAvKqFQGxYqVBQCU+wBchISRKRDFGo8ZoJDEaTPgkiNEQiRoV0KDyEN+CaEURBFqpgJaFkjZLy9Ktbemdlx/m3r27qJNM5s7cM+d//ucxx2HLPv5vmIaiQcCsLV1ywYdpNW230FXDIdZt6J4RcRJ3RcONdw8Pfwx8SzQ+8H96nP8CMQ1F4R5llt57cuCFHWfccvqk9yNbSoMxMCSPBaMGJd+9fMjqoXnOWqJx998gm3/K0m4wc0rGvHRmYPOzJ/onBMqztBtyz7S3DnF4aUzh4WcqBi8iGm/JBfmgMWOVmVtaG2/p3XX8z/4SMLnKtfHkspk4VsYAjt1PGzMs9eO4oluIxjMuCqEVaIOZW1o9o6Xny+PH0iUoAVKCVN4qQXl75Z9pe6Yk6EC2sTlVPLvp3Oekj1UHIFJh5pXmrz7dt+nHlp4Yyr+sgtUHUSo4z4BnGSIFSMFXhztja1rTm0kfy7cgStIxoFY+3ZSaEFgcWPn25BjvTI55e6sEJaE4xDs1xfxWX872aaXcVjE4ABeSJ/a3X91xQa4EcEz3HwV3NKcSW5tSZUFAbTweuiLG+toyDnX2M2nXqcw5hWHMgisB6OoXDB+cD8CKxjbWHT1n46Vh4ZQRyU1TyqtCwPytrefLAroS8jTf15WzvtbiOsaAcj33CA7NGIkrFVd/cYJL3mui5vPjdPW5rJpYBnLAY+uyuSVZhjG3hrZ29M4j1RcAKJdDN47i+pHDOHy2l5Pd/ZaBFCBdKI4woXQoX5/qpqk1BUJw4K9zbDp2luFDIiwaHQPh2tnVwydt3XNDuzp7axDC+ltYnzd19fLoDwkmbj1KekBZF3lMHy2JANCa7ssEGil4P5ECoK6kICsRXL5Jpq8JH+8TlTYNvVhguP/bPzMF5/i1ImwhVw+1/n8/cc4y07ZC87Qt3JDWnqyNX2vvhYpwnlYxhOsVmQkCr7P3gJCAsUoARynL3FiZPGVBHK0tO69II1rHwhGl00gRzQHJnhgcg7Uag6MVAGElA2UYwkp57FXOuaNUOnTlIOe0HwtE1vRi4PjMpAAhaWw/D8C9FUVegK18SGcx8fW5gtEF4bbQTaXDfrGCrqfIDQAztP2LLhvbOgGoihZkUhohWDrmUgA+PtHhAdiivGFE7OfQbZUlO4lGAgAlMwqzfZ6xuj1Fc1sXDWMreLNhHERCvHJjnNvHV9Lc1snOI6fIZGtxAfNGj9gZwnG2LRs/MplNMbMKieNnmJQZdvds/xnXFSybcRXm2Tt5sn4SkUg+49/b7RWtrZMHJ1edJeRsy1vVWyZ33DWVNb+dbKDvAmgFStsAakUs3+FIe4q9J5PWbVqS7PqbF5sSVCrFwUSSjw6eoP7d76Az7d3VUFjApwtnriosG7/H4aHnMKsfyF974K/9j2zaOwHtZ5UO0jeTbWRqyS4Xf/v/4bXF9UeWT62uIRoXIZSL8/hbYsWU0YuW1F3VjfTo5jzf/jPvvcBCBq9xTr+xsktnT+5ePrV6IdG48PqJfa+cla+3bJxbe/OiunFJ24RkoMRXkNNbfLCs/qIVi+snJTfcPn12dgsOZVvkPLx2/wcLpte+et+sAwwbFCjzu6LwLVd2ar+JKYgOZt2ShoNv3113LdH4L2QNh/setv7UgT/NG4+Fz6R6lr2858jz6/YdLSd5Ptf//jAayopYcd3Y9qfqJq4aVRLdQDQuuWg4LHwwN7j+twNmw5MFwPzPfk/M23uqo6Y93V+VFyKqtE6XFw5NzKwc8euccZftALYTjV+4WLk//gHZqa7B3crxUgAAAABJRU5ErkJggg==
* прописаны владения и стартовое снаряжение всем [[классам|Классы]]
* изменения правил [[оружия|Оружие]]:
** Одноручное: "Атаки, наносимые неосновной рукой ''или по схваченным целям'', совершаются с помехой."
** Двуручное: "Атаки, наносимые по схваченным целям, совершаются с помехой."
** Стрелковое: "Владение стрелковым оружием позволяет вам в начале своего хода, если ваша скорость не равна нулю, снизить её до нуля и получить ~~преимущество на первую в этот ход дальнобойную атаку этим оружием.~~ ''бонус +2 к броскам дальнобойных атак этим оружием до конца вашего хода.''"
** Механическое: "~~Вы можете перезарядить такое оружие, потратив на это бонусное действие.~~"
* изменения таблицы [[оружия|Оружие]]:
** множественные изменения цен
** добавлены гномий пиломет, катана, тонфа, шестопер, ятаган
** удалено огнестрельное оружие, кувалда
** полэкс перенесён в топоры
** люцернский молот перенесён в дробящее
** сюрикен перенесён в воинское
** абордажный топор: ''6 м''
** дварфский самострел: 3к4+1 Д/К -> ''1к8+3 Д/К''
** дварфский топор-молот: 4 м -> ''6 м''
** двойной арбалет: 2к12 К -> ''2к6+5 К''
** землелом: 1к12 Д -> ''2к6 Д''
** крис: ''6 м''
** кукри: ''6 м''
** легкий арбалет: 3к6 К -> ''2к4+3 К''
** легкий многозарядный арбалет: 2к8 К -> ''2к4+3 К'', изменено особое свойство на "Вы игнорируете ограничение на количество атак в свойстве "механическое"."
** люцернский молот: 4.5 кг -> ''3.5 кг'', ~~длинное~~, ''особое'' "В качестве бонусного действия в свой ход, вы можете увеличить дальность атаки люцернским молотом на 1 м до окончания этого хода."
** мечелом: ''6 м''
** палаш: 1к8 К/Р -> ''2к4 К/Р''
** походный топорик: ''6 м''
** пулевой арбалет: 3к4 К -> ''1к8+3 К'', крит. 20 -> ''19-20'', ~~летальное~~
** рапира: 1.0 кг -> ''0.7 кг''
** ручной арбалет: 1к12 К -> ''1к6+2 К''
** сюрикен: 1 К -> ''1к4 К'', ~~особое~~
** тяжелый арбалет: 3к6 К -> ''1к12+3 К''
** тяжелый многозарядный арбалет: 3к6 К -> ''1к12+3 К'', изменено особое свойство на "Вы игнорируете ограничение на количество атак в свойстве "механическое"."
** хунга-мунга: крит. 20 -> ''19-20''
** эсток: 1к6 (2к4) К -> ''1к6 (1к8) К''
* изменения [[черт|Черты]]:
** "Мастер владения арбалетами":
*** удалено свойство "Вы игнорируете ограничение на количество атак в свойстве "механическое"."
*** удалено свойство "Вы можете перезарядить арбалет свободным действием."
*** добавлено свойство "Вы можете добавлять 1/2 своего модификатора Ловкости к броскам урона при стрельбе из арбалета."
!!!Классы
[[Монах]]:
* Боевые искусства:
** Увеличена Кость Боевых искусств на один шаг на всех уровнях (1к4 -> 1к6, 1к6 -> 1к8 и т.д.).
** Если в свой ход вы совершаете действием [[Атака]] безоружную атаку или атаку монашеским оружием, вы можете частью этого действия совершить одну дополнительную безоружную атаку'' или атаку монашеским контактным оружием''.
* Ци:
** переработана [[Поступь ветра]]
** переработан [[Шквал ударов]]
* переработано Отражение снарядов (переименовано в Текучее движение)
* Ошеломляющий удар:
** ограничен до одного раза в ход
** добавлено "''Когда вы попадаете по существу двумя рукопашными атаками в один ход, оно не может использовать реакции до конца вашего следующего хода''."
* добавлено умение 6 уровня Боевая медитация
* переработано Спокойствие разума
* [[Практика Кенсея]]:
** получает владение всем оружием из таблицы кенсея, вместо двух на выбор
** Заострённый клинок можно использовать на магическое оружие
* [[Практика Открытой ладони]]:
** Целостность тела восстанавливает хиты до максимума
** Спокойствие:
*** При завершении ''короткого или'' продолжительного отдыха вы получаете эффект заклинания //убежище// ...
* [[Практика Пьяного мастера]]:
** переработаны Дополнительные владения
** Шатающаяся походка:
*** добавлено в Перенаправить атаку "''В качестве альтернативы вы можете потратить еще 1 очко ци, чтобы эта атака попала в атакующего''."
** Удача пьяницы:
*** добавлено "''Кроме того, вы можете пытаться нанести Ошеломляющий удар атакой, попавшей в другое существо посредством вашего умения Перенаправить атаку''."
** переработано Опьянённое бешенство
* [[Практика Солнечной души]]:
** добавлено умение 3 уровня Сияние души
** добавлено умение 6 уровня Солнечная вспышка
* [[Практика Тени]]:
** добавлено умение 3 уровня Глаза ночи
[[Псион]]:
* добавлены Псионические дисциплины (9/9): [[Нуллификация]], [[Предвидение]]
* добавлены Псионические таланты для дисциплин [[Нуллификация]], [[Предвидение]]
---
!!!Игровой процесс
* [[Сражение]]:
** добавлена особая атака [[Прицеливание]]
** добавлена особая атака [[Провокация]]
** добавлена особая атака [[Угроза]]
---
!!!Заклинания
Добавлены заклинания из Kibbles Compendium Of Craft And Creation, которые прилагаются к [[Псиону|Псион]] и новым подклассам:
* //понимание будущего// (1 уровень)
* //взгляд в будущее// (2 уровень)
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAE6UlEQVRIiXVWW2xURRj+zulZtkvbs6WlrTXQgspSLdRgLRcrNtxli0KMhUBCSAhRwAsx2kSiMfCC4YEnwUQTiDHESCEqoRfUByJVEKkYWlKWIluQS0uBlu7Ctnvm5sPMOWe2hEn+c2bOzHzf/89/mWPg8Bk8roml+UEACw7fo6uOJNi83wgvLwTCwwLDteOMa2/a1umGQusnACdgR9KPwzEeIREGxLKwlWRi49qr6R0tN9OlGGGAAAABCEOtEwA4MN7CqknBgYNTQ7tzsoy9sCPOoyRNf7ro8rmsYPqum+mmT/4dqUKKSyAh/DU6CXe/CSDXxK5IXuf2yaE1sCOxTJLv/1AbOUS0qObZiw+Px+KpAp9XacwNzRrhKeXNQQACmFeRO3SqMn857Ih3RCaYADiDiBZV1MaSv8YuPygAowBl8N6Eyz6nACcAc+e0dUpOXxiasKxr8Gckeio0Egqxojiw+3rq0KmLybC+AZT64IzJMWEAdyS4R0JUnwKM4JfOu+E9vYkmJHoCioShP822fXxhqMoH52oDA0yG9tqJeGtqyCcnvvbN8ybiYHUhQIlPxhx81NE3s3+UbgMAU7wxKXvzlWQjEo62SInJ0LuoFC8/MR4zQqYEoq7WBC21JagvtzEzP6j2OlIIARIpbOu+04hET7YJYMXR+FCxt5lJgOkl43C3vgxT7KCMEM4UCAVyDJxfXo7olLAfaYRI0ZRoig0UQ4jXzB/7H9ZjcESBKy0mWIgtLENhKIDW3iFFoo6QOkivnIaqohy0xe/5oa0fF3UA4gCDSRy9MRw1j99NVYO5WlBP2uKDMA51YUfsjk+iNO3oS2J2SzeibZfknOCShBAJ7uEQnLideNGKp5wyEOLHvhBA3yiit+4DQsDKycoEgkDtD51eXnj5RBWGm7icAwCupkYnW+AsDOrIhTqRGmcxmukTF0QDNASXFujJqiTIedgax3gClNgSlCst/Iy2GNN8QjRNtawXyic6CReAIUAZS1jTgsZ1UFLp1yGXSI4t1xKhfAKljNCOCwIg1N/vknHgmWzrhrmwKPcsCPVjnFJpOpNjY6wlxNHyxSUV8rtDJBmhsk8JXikJ/2W+XlbQityAHx1unKu4N7lLwhQIkW+HepYZ7nF5opTNz0b9UyWtJgzj2KaZTw5IdqWB44d0gGlHxKgW6mMs8fJDzbE0tswqvwPTOJa180ERbWmYiz3ne5diJK0qLQc4AxhHDwQmM4bmy3241H9fknEqHcspykIBtMdvoT1+W5vjQF4IR1fP35lXPOOkgc2fQuxeH9h77krHe4faq+S9oe4QLZRh6BElMpzr3zFexODL9Yu7tsypqIYdISYog/HhAfLuC0+v2VBXOZwRAHqxJHrZYMqH7jVA1Do5v3HJrOEtcypWw44QADBBZfU13v8q9k20ZvHausoBcI1AL5z6ZcWYJCBEln7KAMawftGsgf0ra5foV7Dpl3cCY+veju9WvVTzxboF55Ab9K1wSYlf2zzhEhzhbOzbsPSfbxvqZsOOnIXWDKx7J/NHgQuIrz+wbg4lN31+svOzfWdipRi4ryXfGJ8U52Pr3Of6ttc9v3NSgb0fdoRiTDPQ8LZPkPFXAogDjdkAVrR1X6v//b/+6r5EqjzLNGzGRaI0b/y1+WUlf79aOaUFQDPsyOhYcLf9D6P9pkMrxXDBAAAAAElFTkSuQmCC
* [[Таблицам критических попаданий|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1952211726]] придан более логичный вид:
** убрано разделение ранений на лёгкие и тяжёлые
** уменьшен шанс более серьёзных ранений
** к каждому виду урона теперь приурочены шесть различных ранений, по одному на каждую сложность от I до VI
** сложность излечения ранения лучше соответствует его серьёзности
** удалены ранения, ослепляющие сразу, а также лишающие конечностей
** успешные операции теперь следуют логике, по которой они понижают необходимый уровень магического лечения на 1, а срок без лечения вдвое
** удалены ранения без эффекта, с эффектом, требующим излишней математики, а также ранения, следовавшие упразднённым правилам Стресса
* изменения [[Предысторий|Шаг 2. Выберите Предысторию]]:
** добавлены [[Азартный игрок]], [[Антрополог]], [[Археолог]], [[Атлет]], [[Дальний путешественник]], [[Дознаватель]], [[Караванщик]], [[Кочевник]], [[Портовый рабочий]], [[Потомок знаменитого приключенца]], [[Преследуемый потусторонним]], [[Провалившийся торговец]] и [[Шахтёр]]
** добавлена разновидность [[Преступника|Преступник]]: Контрабандист и Заключённый
** добавлены разновидности [[Солдата|Солдат]]: Городской стражник, Наёмник и Рыцарь ордена
** изменено умение "Странник" [[Чужеземца|Чужеземец]]: "Кроме того, вы ~~каждый день можете находить еду и пресную воду для себя и пяти других товарищей, при условии, что вокруг вас можно найти ягоды, дичь, воду и так далее. ~~ ''находите вдвое больше пищи и воды при сборе еды в дикой местности.''"
* изменения Экипировки:
** добавлен Набор охотника на чудовищ (50см; 16.8 кг): маленький сундук, ломик, молоток, 3 деревянных кола, священный символ, фляга святой воды, кандалы, стальное зеркало, фляга масла, трутница и 3 факела
** вариант выбора Набора охотника на чудовищ добавлен в базовую экипировку [[Кровавого охотника|Кровавый охотник]], [[Паладина|Паладин]] и [[Следопыта|Следопыт]]
* изменения [[Волшебника|Волшебник]]:
** Знамение [[Школы Прорицания|Школа Прорицания]]: "~~Вы должны сделать выбор о том, что так поступаете, до броска, и~~ вы можете заменить значение броска подобным путём только один раз за ход."
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFXUlEQVRIiXWVfUxVZRzHP+dyeFO4FxFRmO/WBUURQ2K+TMuUEq3Yelupq5ktnDbWil5WWc2WM9cfzazW1D/MSq2ttCx7m4tKS81AURGUxJdAUOBeBOE+zzlPfzzn3nPAOrtn59lzf7/v9/f+M/jsD/7vUSVpicDtn12VZZ+HrRk/C3vMUAiEFKFZCUbT/X7z4ANDzS+B/fiDff+HY/wXiSpJM7sstfzhc32v7b3Ul8V1CxSgDPTBdgQVDIqjbGRi6/Zxg9YPjjPexR+M3Eiy6/cotP7dlZ7z5qXIrpcauvO5bjn3Pg2sDA2M0iq2q8dggzdzUo+9OCr5IfzBuv4kO36LWaVKhxVNPHVtX13j9fQoTsxy23CtV8o9xwzUZDNyUzoO5KUtxB+MhciHrcCyUaXDcmfVdf1Q19CdjiXBskBK57XBcs6WBFuCJfTZe29JDtZ2DFlQ2/4d4fpcl0RaqMWZ8esv9Ow8UBcKYFmusveVlgsoPSTSSyTAEvx47Erg7b/DuwjXxzskgpY+q+KF2o58bbFwLbckHxUE+Kgg4Ny7pOXjUqm+I4vq+VlUz89mY34axNlaRgiePdI8paVXVgD41H2jksrPhisJ93ks1YDl4wazdEKAKYEE11Ip2D59KO8XZTI1IxlDKaZmJLM6L4O9RZkgI1o23EPFybZKwvVJJrB495nOTKR0qybe4JfZ2czOTtHVoRRYEV1dqSZLbk4nIi0SvzgN4T5I8FFz502UjhsCVeegV4BS7Kprzdw5bcTdvi9auhcR6tUgUoKMUHP7SGZnp3CsrZtzoeuaXAiQfeSnxAHw0/kQtHeDiMC1Xvb8fRWAtbnpjjcC2rvYfTFUau670l2IjLilqRS1V7vZXN/GxhOt1JRN1N5Jbd2xxisY713pV7YoxbysVABOdfaAkE5fwf7L4elmQ48YjRBukynFkv1nY01mRHtBSgfUvqE3GJHCzNFDiAjJJ2dbtSdOHzX29I4yTcsOICKuoh3taNdKQIel351+k0cE6LyvAIAnvjsBXT2eqECCbQfMeFuGkcIfA+gXBtvjiaBfpytFZeFo3rgth4R4k+e+r2VbzXmPvpY1LCts3pzou4CUeXp0MEDIM6f6kdhUFo3lrQV5RIRk4acH2NfQ4noZ1bVhfJJ50Zw3LOXwOzKS53UxRhSbT051OffPFY9nfUk+kYhg8rYqGpra3VzFMGxQijnDA4fMe0anf0Nq4mO0d8VC5A1JjMwSOl8ZKaydlwfAq99Xk5sQR/CmDADiUOxp64LWkNbLSGXR+OHfmBjGVysmZ7Vu/qk9M+oiyo5FyYh6EtGebC4cS0JCPADrFhcx8NladZzHvzwESvHktDFt+IyvTOPlHb3Nz9+7YfPBhg2ErnmSrl3+uPqMJpYCFDReDbO16vgAaHfkf336Hy0bGMSa4pwN+IO9BuWvoNYvjX/36NkjT+38LR/bmxvLxbgh5m5fuXl0/jcU7y2bf3xlcW4h/qDwISMYz2wRq2+Z8NCyuRNDerwIPWYsZ1h6x3pstAvPvonuFv1dvmBaaGVx7oP4gwLAF90VRsUHddtKi+Y/PCevFTuq7F1c3t0i9FKzLGfPWCD0d8kdBa1b7p21wLuCfd7RbqzaeOSTsplFGx+57SgpiS6YcEiEd3k599EtGkhi06Mlf21/YO6t+IOHvRkzeGSVjqPtJk99+LR5qaNrxbqq42s2/XEqi8udbnJjM84RHx5gdfGk5ufnTn19ZLp/C/6gHFhxBg8+OSCRUSBQWyuTgMXfnmxa9Ov5lsLmcM+YOJ/hl7YKZ6cmN80eM+LPhZPG7gW+xh/svaGenedfc6tsi3Q2KY4AAAAASUVORK5CYII=
* добавлено правило [[Испытания навыков]]
* правило "Путешествия на дальние расстояния" заменено испытанием навыков "[[Путешествие]]"
* правило "[[Плавание]]" дополнено информацией из Руководства Мастера
* правило "Показатели выживания" заменено правилом "[[Голод и жажда]]"
* упоминания Показателей выживания удалены из правил "[[Отдыха|Отдых]]" и "[[Грузоподъёмности и нагрузки|Грузоподъёмность и нагрузка]]"
* удалено дополнение "Еда и вода" из правила "[[Грузоподъёмность и нагрузка]]" (неучитываемые рационы и бурдюк)
* изменения правил "[[Ночлега и лагеря|Ночлег и лагерь]]":
** удалено правило "Полезные заклинания"
** упрощено правило "Разбивка лагеря" - единственная проверка необходима только при поиске природного укрытия
** упрощено правило "Караул" - удалена проверка подготовки лагеря, удалён запрет на лагерную деятельность, удалено правило ложных тревог
** упрощено правило "Лагерная деятельность" - персонажи с трансом могут выполнять 2 деятельности, у большинства видов деятельности удалена необходимость в проверке, изменено приготовление пищи и напитков, вдохновение заменено очками героя
** упрощено правило "Сон" - удалена проверка сна, удалено правило короткого сна, изменён сон в доспехах, добавлено правило "Без сна"
* изменения снаряжения:
** ёмкость бурдюка 3 л -> ''4 л''
* изменения Черт:
** удалены черты:
*** "Борец" - не актуальна с текущими правилами [[захвата|Захват]]
*** "Одарённый" - почти полностью повторяет расовую черту людей "Вундеркинд" и при этом лучше неё
** "Вундеркинд":
*** Вы получаете владение ~~одним навыком на выбор, владение одним набором инструментов на выбор и обучаетесь бегло говорить на одном языке~~ ''любой комбинацией из трёх навыков, инструментов или языко''в на ваш выбор.
*** Выберите один навык ''или инструмент'', которым вы владеете. Ваш бонус мастерства удваивается для всех проверок характеристик, используя этот навык ''или инструмент''.
* изменения [[Пороков|Шаг 6. Выберите Пороки (опционально)]]:
** "Ленивый"
*** ~~Вы совершаете проверки Лагеря с помехой.~~
*** Вы не можете заниматься лагерной деятельностью, кроме ''"игр" или'' "отдыха в одиночестве", и основной деятельностью продолжительного отдыха, кроме ''"азартных игр", "кутежа" или'' "рекреации".
** "Мстительный"
*** ''Пока в пределах вашей видимости находится существо, атаковавшее вас последним,'' вы совершаете броски атаки по всем, кроме ~~существа, атаковавшего вас последним~~ ''него'', с помехой.
** "Обжора"
*** ~~Вы получаете голод в 2 раза быстрее обычного.~~ ''Вам требуется в 2 раза больше еды, чем обычному персонажу того же размера.''
** "Страдающий бессоницей"
*** Вы ~~совершаете проверки Сна с помехой~~ ''не можете спать'', если у вас нет хотя бы одной степени истощения.
* ко всем умениям, включающим в себя условие "Вы можете принять решение об использовании этой способности после объявления результата броска." добавлено уточнение "''но до вступления его эффекта в силу.''"
<<<
//На случай неверной трактовки, по которой решение можно принять спустя любой срок после броска.//
<<<
---
!!!Классы
[[Колдун]]:
* изменено Таинственное воззвание Доспех теней: Вы ~~постоянно окружены~~ ''можете действием окружить себя'' покровом из теней'' или окончить эффект этого воззвания на себе''. ~~Если вы~~ ''Пока вы окружены покровом и'' не носите доспеха, ваш КД равен 13 + ваш модификатор Ловкости, и вы совершает проверки Ловкости (Скрытность) с преимуществом.
[[Кровавый охотник]]:
* подклассу [[Орден Нечестивых душ]] добавлено упущенное умение Мистический ритуал, которое позволяет ему восстанавливать ячейки аналогично [[Колдуну|Колдун]]
Добавлены подклассы из Player's Handbook:
* [[Воин]]:
** [[Мастер боевых искусств]]:
*** изменено умение Боевое превосходство: "~~Каждый раз, при изучении новых приёмов, вы можете также заменить один из известных вам приёмов на другой.~~ ''Каждый раз, когда вы получаете уровень в этом классе, можете заменить один из уже изученных приёмов на новый.''"
** [[Чемпион]]:
*** изменено умение Выдащийся атлет: "Кроме того, ~~если вы совершаете прыжок в длину с разбега, дальность прыжка увеличивается на количество футов, равное модификатору Силы.~~ ''дальность ваших прыжков с разбега увеличивается на 1 м.''"
*** умению Дополнительный боевой стиль добавлено уточнение:" Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль. Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный воину."
* [[Волшебник]]:
** [[Школа Воплощения]]
** [[Школа Иллюзии]]
** [[Школа Некромантии]]
** [[Школа Ограждения]]
** [[Школа Очарования]]
** [[Школа Преобразования]]
** [[Школа Прорицания]]
* [[Друид]]:
** [[Круг Луны]]:
*** уточнена формулировка умения Тысяча обличий: "~~Вы можете неограниченно накладывать заклинание //смена обличья//.~~ ''Заклинание //смена обличья// всегда считается подготовленным для вас, оно считается для вас заклинанием друида, не учитывается в количестве подготовленных заклинаний, и вы можете сотворять его без увеличения уровня, не тратя ячейку заклинаний.''"
*** изменено умение Природный удар: "Ваши атаки в ~~облике зверя~~ ''Диком облике'' считаются магическими ..."
<<<
//По старой формулировке выходило так, что оно работает с заклинанием //превращение//, но не работает с умением Стихийный дикий облик.//
<<<
* [[Жрец]]
** [[Домен Бури]]
** [[Домен Жизни]]
** [[Домен Знания]]
** [[Домен Обмана]]
* [[Колдун]]:
** [[Архифея]]
** [[Великий Древний]]:
*** добавлено уточнение к умению Пробуждённый разум: "Существо, преуспевшее в спасброске, получает иммунитет к эффекту этого умения на 24 часа."
** [[Исчадие]]
* [[Монах]]:
** [[Практика Открытой ладони]]
** [[Практика Тени]]:
*** умение Теневые искусства дополнено рядом уточнений
** [[Практика Четырёх стихий]]:
*** изменено умение Последователь стихий: "~~Каждый раз, когда вы изучаете новую дициплину, вы можете также заменить одну из ранее изученных дициплин другой, на свой выбор.~~ ''Каждый раз, когда вы получаете уровень в этом классе, можете заменить одну из уже изученных дисциплин на новую.''"
* [[Паладин]]:
** [[Клятва Древних]]:
*** формулировка умения Древний чемпион переписана в соответствии с аналогичными умениями новых подклассов. Теперь оно используется бонусным действием, а не действием, и может быть использовано повторно за ячейку 5 уровня.
** [[Клятва Мести]]:
*** формулировка умения Мстящий ангел переписана в соответствии с аналогичными умениями новых подклассов. Теперь оно используется бонусным действием, а не действием, и может быть использовано повторно за ячейку 5 уровня.
** [[Клятва Преданности]]:
*** формулировка умения Чистота духа переписана таким образом, чтобы теперь оно предоставляло аналогичный пассивный эффект, вместо постоянного воздействия заклинания
*** формулировка умения Святой нимб переписана в соответствии с аналогичными умениями новых подклассов. Теперь оно используется бонусным действием, а не действием, и может быть использовано повторно за ячейку 5 уровня.
* [[Плут]]:
** [[Вор]]:
*** упрощена формулировка умения Форточник
** [[Убийца]]
* [[Чародей]]:
** [[Дикая магия]]:
*** переработаны умения Всплеск дикой магии и Течения хаоса
** [[Драконья кровь]]:
*** в умение Дракон-предок добавлены самоцветные варианты
Добавлены подклассы из Sword Coast Adventurer’s Guide:
* [[Жрец]]:
** [[Домен Магии]]
* [[Монах]]:
** [[Практика Познания смерти]]:
*** изменено умение Прикосновение смерти: "Когда вы опускаете хиты ''враждебного'' существа до 0 ..."
*** добавлено уточнение к умению Час жатвы: "Существо, преуспевшее в спасброске, получает иммунитет к эффекту этого умения на 24 часа."
---
!!!Черты
* черта ''Крепыш-коротыш'' заменена новой чертой ''Мощный'': "//Требование: раса без особенности Мощное телосложение.// Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом."
* черта ''Мускулистый'' заменена измененной чертой ''Атлетичный'': "Увеличьте значение Силы ~~или Ловкости~~ на 1, при максимуме 20. ''Вы получаете владение навыком Атлетика. Если вы уже владеете этим навыком, то бонус мастерства удваивается при проверке этого навыка.''..."
---
!!!Заклинания
* заклинанию //маскировка// добавлена строка: "Вы можете досрочно окончить это заклинание действием. "
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFaklEQVRIiXVWa0xURxT+7mWBReDuCrJKi1LRLqgFQ5FaFR9ViyLaEhsxtVqbxqY+2hrT0miaNtWkppr4S6upVWO0TSo28f2O0Si18YUKYsliEKogBQHZZRf2zqs/ZnbvrtVJJrP3zpnvu+fMd85ZDQev4kVDFDvjAbx1sJOW/eFlE/40eWaSDkcvR09RrNb8nsP214JU22EAF2C4gy/C0Z5HIoqdNh8TH7/fFPz+REswHQEGQABCAzQBCPUbAAZoKMuwt/86PGFTYoy2DYbbfD6J4AA0QAiI2SnZG1vMym8aAnnoowqMKwJugQsh33OLbGN2cs26oQkLYbjro0kOXFEHAFEyqNBd33u6oTGQAiFJwcP+KTsRQRJ6FGrlKMpO7r48xlkCwx0OkQ7GAcYhSgblTKr3nWvw+FNAGUApwBjAKcAIwCjAGaS92mNUTqpsKENVXffAWbVdZ+D15FgkhEHMdcVuehg4cOVvn0Me4hKEMgXGngELgT+PiOJszRPHlgfeSng9sZKEU7QF2eq1tV15UQcpBSjBvnwH9uc7IoDVdOrYXzAQt2ek4/iENLybYbf2KMFX11tz2/rpagDQxfwM+8r73gr4VEhCoWEUy7MSsSTLQK4jLnwYlGDliCSI4kwsHumEJgRKMw0cnpyBVSOTARoEmAn4+rD6XkcFvB67DmDuoQdPXVFfGcNweeoQ7Ch0SXUIEeXFhtxUmJRB+60GY494oFXWAQAqRqWqD6EAMVFZ3+6CEPNsh9r8pejqs9QCjjvTRiAvbQBqOvww4nSpHqJyzYhFfVcfzj/2Ab1BKf/OfnQGgsh0JgCEWGrr8uHIo545ttNP/AVgRCWYJLrb6ccuTwe21nXgTpkSCSXyYGcQRUfvRUl6+4RMpA6IR22bV4ZbQJIL4MK/3nG2hgAZBmIqEqn5Dy42AlwCaCEPKVXJZ+XMmrHp+HFSFuJibejy9yPv1F3pSSifuEBjoH+oHsOZw1KOvFgQE6BqhjwkRE5qhu10zuB54odJKFIS7Tg9cXjEncg1jnOHbmPcC2L+DyCsppA34T0FQExsufYAuXurEL/tPO62dmNWdjo+ynFF2JrQGPPq2fH6Q0ueNPqLCVHhEtFeOmKBOC1sA18A+2uaAQATXUnynSlxsuy2R/r0tMTr0thil2AKNBwuCfj1uAyI5TNwZnautGHS9lXDLuXOeThUoARTBjuu6e8MSzmJpLiIu6AWQegShapXhGDzZQ+6fAEUj87AvBFpgEnwSe7LmJ87DABw7P5jK9TOBJRmDT5pg6YdW5b7Uvuu83Uy85SqQh6Ew2WaYfWtPXUTO8sn4+iH0yIrOvZcqsXRO81ShUJgRX5mB3TtWMz6Xhc9sWA8ttxuKoY/qCotkyvncMRrqG3tRlVTu/SIU1S3dOHWo3b0+fpgmhRn65qw4Vw1Nl+sAwSTMzkBR8qL1ie7XrukYfm3EJsWx26rbrzx+YGqPPBQkqlGEvYMlv5V74juJRErBLYvmVm7YnxOAQw30UFNaF/uIZ+9nrVw6dRRPWCmVc5JZGknEWU9stzTqKoNRrBsZn7PivE55TDcRJZ6tal98XP93jmFMxdOGdMedSgKTD1z1bSIag1UrZxiyfT89l/KJr0d2YL1cHnnFNqqrTd+L5tYuHXRtGokxUV3QMoAogBJROcM2Rh2/LR01q19C6a+AcN9PVIQGhatiu7dXEDsXGNr6fYt++FSzXc7rtano/2plS8aIv6tcMDlxMo3Rz9eN3Xs+owUYzcMN8UzQ0P5p9ZFhu5NEYrdFXYAc0/day6t+qetoNXblxmrw6BceNOTE5qLMofcLBn9ygkAx2G4+58FD43/APEnsRcAM+UZAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFKUlEQVRIiXVWe2wURRz+9rot12tvrxzQUh4tDzkKpQUspcESG6AUacE0xEJ4BWMQAVFClPggGvkHwx/EGEGjiDFCTAETLFgETcDwapAK0vI4y6stYOsBfVy5tnfz8o+Z3ds7YJPJ7OzMfN9vvt9jVsPB83jWI8rSBgCYdfARrfwpyGacjfBsjwZPt0B3cZLW8oqh11UN0n8GcBKGL/wsHO1pJKIsTe9h4rWlzeFPau+HM9HLbJPmC5eD5ARUjnAG9o1O3p6SoO2E4Ys8nUQI2QCIl7zjt90PH9hyozcffUKCCRHdIUwiNcc1+T1Fwzafu+GDkclLYPj8sSTVddYmUT6ocML10DH/7V5vDDAAcAbAoQijRkkDo0ecOT6183Ru2nwYPksiBxgDOIUoH5RT7O/53X/jsReUA4wDjAGUAZTKMaUAo6pn8j2mRXDmaufAeY0dxxFsyomSUAqxID1x+92+/ef8PR4wCnATjNlAbY0TgEVsBqhG5Pi3hoeeHXeCBxBsSpQknKE9zDa+f6Uj37KQErWRYO8UA3unehQYkT1hAOXWun0FXvxdOlwZRABK8G59W157P90IAA6xaIRz7a3gZvT0SxATiBKsHZ2CFWM9yPMkKXCbXAps/Vg3lo8biMmDk9X3iMTo7sOmaw82I9jkdABYUHOzK10enUkgneN0SSa+KkyX0SGEpbkEUb3Lgc+mZUSDg4QVuVxT7Q+kQ4iF+qH2UAW6+qMRIwQuzxuD/CEuNDwIwUhyyDkaluGqcYDLCGue6wMAtHT1IjvNJQmEyiEBoCOCmnvd5Y5jD0MFoGHJriy48iiEt8+2YvKh6wiGmSQnytlEyrRr+jBkp7mw6uRNuQaIykWI1Z8IBKfpN3pJFihRuSAtXP7HbetUmpkPppVCAENTsX7KcJxr7UD11X/xYV6mWhOx5ZFceyfUP1LXGfPEAFiyITbpCJFjZyIeVUxAR6gfxUcaAEKgCW4jAewVJJlzj57AeRCUGuYpYkgUqSYgI4YD1XPGwZvixOyDF4Ce3hhAEBpnqABlLKiPH6DdPUZIbvykWTI087s6yZL8kQCAE1WFiH/EloXYXfcP1hxvlBhc4Dmnfk+fPST1wuckkmvXMSqT3UpZXHfXNVl1yvTXorwseN0ufHvWj5pb/wERYvnlxQzPn/rLWd6jMJJeRcfjp/jlSSnW1F6K9ZcQmJE1GF63C68fro+Ve3AqKsZkHHVA046snjQsAEKBSERaTIjVNCGkY6lZDeIao1FDqNpPZbivmzrqARzakYStj9NpbVURdly+U4a+MMBV9eUM4ByeRA2NbZ040xyQc5yrAirkGkYxMMmB5kAXDl9rVfMMcDtRs3jmVnf6pFMa1n4EsX1F4s6Lt+rf2n86H1xTx+WI9VNcSAubLDE+BKAJfLmytHFdUU4BDB9xgEWgvbOHbHh+7JJVJbnd0cw3CyG1KrI1piRuzn7PUKwundq9rihnMQwfAQCHqau28Wv/9+WFpUtLcgPgdgITkKkqra4Dru4dSmRQUApwhpVzpgR2VxbPtV/BDqvyUgJt/c76HytfKPxi2ayLSB2gtFeAhFiXEojZmLohGWAkY9eqsks/VJVMh+G7YM8fDcvejGrKpb7im036/c6e1Z+eavx41/nrmQh0Rn8gtLh8ykjDhqKJbe+VTN46wmvsgeGj8UmqYfEbsc4ELGeK7zY7ASz49VpLxZnW9oK2YF+27oBBOA8Oc7taZmYP/Wv+xFG1AH6B4et/ogSo539uW5ZJumYt4AAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFWElEQVRIiXWVeWwVVRjFf/OYrrbzSoGWEqClxdfahiIiVISwicWy2dQAAaxEQyIoSIgQQcToH6IETIzWJSxqcMECCTuCxEBAKJsIlJZawFJZii209D26zdyZ6x8z780ry82b3Dd37nfOveee734KW07wqCbzE6KAMVvuiMKtfnPYUd1KjfPgvWfRPCJCqX3Jq5ZN7aZuBw6i+ToehaM8jETmJ6gBU74242rHB3tudKTQajofAEWClCAVwILYLhT2jqr/sV/sqse6KCVoPv0hJMftYKT9eyExc+WNjs3LL7Xl0mbZgFg2qCKduZZLYrlkKzPjzy/rEzMdzVfVmaT0mAMEsqD7EF9Vy75L/7QkIhV73ApuAXcxyE4Ls3t7zrDMuKZjOQkFaL6QRB5MAaaFLOieNbwqcOBS9b1EhAlCgGmC5fSmcP7f/xjuXCEoq2jqOr68cT/+6iyXxLCQk5IiVl1rKz12MeDFFCDMUFAnQPGw3nSIjBDhb+cbvJ/W+Dfjr44AULFMbnWYC5eW38nFDJ6BI4OUbBySiCKh+NRtRzIJEQqfZyeEWwXFUXRBdRP4BYtP1Q2YlRK7sKfGGlUW9Y4uqmhaQkAP09gGm9tfozjdy7nbbfZKHfkzkmNYkN3tAVcCrLvZzPkmHQI6iyoblmyKri5RgUnbau4mYQrHmkCUwpHhvRjRK852h5S2FFIBaVLs1QDIOXCZylp/aDeheCRYkl+q6pM2Deo5Wd12q2Uije2uTFicG51Bbo9Yzje0oEV67HEjuBPJ0K7RAFTeDNg7DOaPRZjlgUadHdebJ6j7brcOxuwInQFILtxpYX11A19UNHCu0DGJECAtALK7RqMbJgv7aUzrl0h8pMqOmtusOHmt846kxcH//E+rl1r1vhhGJ5JZh66E8kNx/G+fiS1DatdYAD4bmYFuCCIjVAYkx1Ps60Had8dDOYNlcbW1vY/axTK9CBECeEDbYIBh2DIkxNDY0k6gQ5C26TS06oxJ78bW8TmkJsaxeGAKa07XhjCiLMvrUU3Tj6HbICL80UOrV6R03xv8dCs5RNraIxBoBWFw8O861p6pAaAoo0cnDMs0/Z7MKM81hHCBDcMlNHRHLukGGrpLKNy5h683AhAfqdpjugGGID1ave4Z2yPulA2u45KFEUlHMof8kxHpyOVT2F80yB4zdTAEr2b1BKDqVhMY7qJHJntPeqb0TdxLXKRNEFylobtEUtquMu33pWdrAcjP7sPkjO6gC5blpfLc4ykA/HCh1iEQkBDDxPTkvSqKsmvOgF7163+vSLIPPzyxwtylO4R1Tby7+wQrJ+Wx85XRnbJ9+Y4ydp6rIXhzzBuU1oBH2aUqy0vb65ZOWb2+rHo1d1tCCRck+unsZZtYOO6SCh8fqqCi3s+L/XuGsn1X9Q22lzt5AqDF8F6ebzWar11h7grkqpcjSs5cOb2g9GguVtC2luP1h9kaN6sfqCk2yVfF48rn5WUNRvMZHoSO8va3xvynMqbPHvVEM6bu1ggjvF6EX/nBsfDeDJWIOeMGNc/Ly5qG5jMAPEFHKW99U/X9hCHjZozMqQ/VB+EE319DgoXMsFxwYYAlKB77ZP26wuHPh5dgT6i6WSbKmyWnfy58dsgXM8ecIS76wYJlOAXNMN0dmA6hFsOXs/P/2jh11FA036lwQyjMfCOsdttnINcuUm80BeZ8dLj8/a9PXEyh/q6bLwph9xyQ5GX+M9l174wa+GHvRG0Dmk9wX1OY9robEF60kMgNS6KBSb9W1k78499bg+v8baldPGimJf0p8bG1I1KT/yzITtsD7Ebztd8PHmz/AyXSdKhmUWQkAAAAAElFTkSuQmCC
!!!Экипировка
* [[Оружие]]:
** Кнут: ~~Экзотическое~~ -> ''Воинское''
** добавлен ''Бич дроу'': экзотический одноручный цеп, 1к8 Р, Внезапное, Длинное, Обезоруживающее, Подсекающее, 30 см, 1.5 кг
** удалена ''Рука-крюк''
** мелкие изменения ценников
* [[Снаряжение]]:
** переработаны ''особые боеприпасы''
** теплокамень, а также солнечный и лунный жезлы перенесены с алхимию с добавлением рецептов и увеличением стоимости до 20 см
** добавлены заводной таймер, карманные часы, коловорот
** мелкие изменения ценников
---
!!!Ремесло
* добавлены подразделы [[Ремесла|Ремесло]]: [[Вырезание палочек]], [[Инженерное дело]], [[Кожевенное дело]], [[Начертание свитков]], [[Резьба по дереву]], [[Ремонтное дело]], [[Рунное дело]]
* добавлен раздел [[Второстепенные ремёсла]]
* добавлен пункт в правило [[Сокрытие сотворения заклинания|Сокрытие сотворения заклинания]] - "''Сокрытие сотворения заклинания требует концентрацию.''", дабы избежать бездумного спама этой опции.
* изменения [[Предысторий|Шаг 2. Выберите Предысторию]]:
** добавлена потеряная при переносе из Книги Игрока предыстория [[Чужеземец|Чужеземец]]
** [[Народный герой|Народный герой]]
*** Владение навыками: ~~Выживание~~ ''Выносливость'', Уход за животными
** [[Чужеземец|Чужеземец]]
*** Владение навыками: ~~Атлетика~~ ''Выносливость'', Выживание
* [[Описание бардов]] дополнено текстом из Xanathar's Guide to Everything
* изменения [[Варвара|Варвар]]:
** добавлено [[Описание варваров|Описание варваров]]
** добавлены [[Классовые умения варваров|Классовые умения варваров]]
** добавлены [[Пути дикости|Пути дикости]]:
*** [[Путь Берсерка|Путь Берсерка]] и [[Путь Тотемного воина|Путь Тотемного воина]] из Player's Handbook
**** добавлены Тотемные духи Лося и Тигра из Sword Coast Adventurer's Guide
**** изменён [[Дух Тигра|Тигр]] "~~Пока вы находитесь в ярости, вы можете добавить 3 м к дальности вашего прыжка в длину и 1 м к прыжку в высоту.~~ ''Пока вы пребываете в ярости, дальность ваших прыжков удваивается, а вы получаете скорость карабканья, равную вашей скорости ходьбы, и игнорируете первые 4 м падения, когда определяете урон от падения.''"
**** изменён [[Аспект Волка|Аспект Волка]] "~~Вы можете идти по следу существа, путешествуя в быстром темпе, или передвигаться скрытно, путешествуя в нормальном темпе.~~ ''Вы совершаете проверки Мудрости (Выживание) с целью движения по следу или охоты на дичь с преимуществом.''"
**** изменён [[Аспект Орла|Аспект Орла]] "~~Вы без затруднений можете видеть на расстоянии до одного километра и способны различить мельчайшие детали, рассматривая что-то на расстоянии до 30 метров. Кроме того, тусклое освещение более не накладывает помеху на проверки Мудрости (Внимательность).~~ ''Вы получаете [[сумеречное зрение|Зрение и свет]] радиусом 1 километр, а ваши глаза способны различать мелкие детали на этом расстоянии.''"
**** изменения [[Гармония Волка|Гармония Волка]] "Пребывая в ярости, вы можете в свой ход бонусным действием [[сбить с ног|Сбитый с ног / Лежащий ничком]] существо ~~Большого или менее размера~~, ''размер которого не превышает ваш больше чем на одну категорию'', когда попадаете по нему рукопашной атакой оружием."
*** [[Путь Буревестника|Путь Буревестника]], [[Путь Предка-хранителя|Путь Предка-хранителя]] и [[Путь Фанатика|Путь Фанатика]] из Xanathar's Guide to Everything
*** [[Путь Бушующего в бою|Путь Бушующего в бою]] из Sword Coast Adventurer's Guide
**** реворкнуто умение 3 уровня "Доспех Бушующего в бою"
* [[Очки героя]]: "Вы получаете одно Очко героя в начале каждой игровой сессии."
* [[Грузоподъёмность и нагрузка]]: "Для Средних существ грузоподъёмность = Сила x~~8~~ ''10''. Для существ других размерных категорий грузоподъёмность увеличивается/уменьшается в 2 раза за каждую размерную категорию больше/меньше Средней."
* [[Окружение]]: "Существо не получает преимуществ от окружения, если само окружено."
* состояние [[Схваченный]]: "Состояние оканчивается, если ваш размер начинает превышать размер схватившего больше чем на одну категорию."
* особая атака [[Захват]]: "//''Изменение размера.''// Если ваш размер уменьшается, или размер схваченного существа увеличивается, вы должны преуспеть в проверке Силы (Атлетика), противопоставленной проверке Силы (Атлетика) или Ловкости (Акробатика) цели (цель сама выбирает, какую характеристику использовать), иначе цель высвободится из захвата."
* [[Удушье]]: "Каждый раз, когда задерживающее дыхание существо получает урон, оно должно совершить спасбросок Телосложения со Сл равной 10 или половине полученного урона (в зависимости от того, что выше). Если существо получает урон из нескольких источников, оно совершает отдельные спасброски для каждого источника урона. При провале, оставшееся количество минут, на которое существо может задержать дыхание, уменьшается на 1 минуту."
---
!!!Классы
[[Бард]]:
* [[Коллегия Созидания]]
** умение Оживляющее представление: "Действием вы можете выбрать целью немагический предмет размером не больше Большого, ''который никто не несёт и не носит'', видимый вами в пределах 6 м от вас, и оживить его."
[[Изобретатель]]:
* [[Бронник]]:
** умение Идеальная броня, опция Страж: "При провале существо притягивается к вам на расстояние до ~~6~~ ''5'' м в незанятое пространство."
* Примочки:
** Повторный выстрел: "Если ~~носитель ничего не заряжает в оружие~~ ''оружию не хватает боеприпасов'', оно производит собственные боеприпасы, автоматически создавая один магический боеприпас, ~~во время совершения дальнобойной атаки~~ ''когда носитель совершает им дальнобойную атаку''. "
[[Чародей]]:
* изменена Базовая экипировка: ~~(а) мешочек с компонентами или (б) арканная фокусировка~~ ''простое оружие не дороже 25 см''
---
!!!Расы
* удалены все упоминания мировоззрения из расовых особенностей
* переписано описание [[Дроу|Тёмный эльф (дроу)]] с соответствующего только Побережью Мечей на более нейтральное
---
!!!Заклинания
* добавлено уточнение заклинанию //поиск фамильяра//: "Когда хиты фамильяра опускаются до 0, или когда он исчезает в карманном измерении, он оставляет за собой в своем пространстве всё, что нёс или носил."
* заклинание //двойник//:
** "Это заклинание выращивает инертную копию живого ~~Маленького или Среднего~~ существа, которое станет гарантией бессмертия. Этот клон формируется в запечатанном сосуде, ''используемом при сотворении заклинания,'' и вырастает до полного размера за 120 дней..."
** материальный компонент: "... сосуд, стоящий как минимум 2000 см с запираемой крышкой и достаточно большой, чтобы вместить ''клонируемое ''существо~~ Среднего размера~~, например, огромная урна, гроб, яма в земле или кристаллический контейнер, заполненный солёной водой
* заклинание //великолепный особняк Морденкайнена//: "Когда заклинание заканчивается, все существа ''и предметы'', находящиеся в межпространстве, изгоняются в свободное пространство, ближайшее к входу."
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFkklEQVRIiXWWeWwUVRzHPzPdHrR0t93SYhVaLpcaBAWsXNGKlrMoRLEEFU0MCSAIJmrUGI0kBuQPEhMQFUESvLiMoICoUTw4FY9SpEuBHtJC2Zauu7Utnfdmnn/M7MwW9GU3M/Pm977f9zve9zcaO4/zf0NNzUkHJu+8IufsipsTfhBWcR4EYorYpDStca7fd/ThPN9u4CD+UM//4WjXkSgNNS3g6zDVk/Mbel7b19xTSJeZeOnagAVKQWYKcwakRz4cnLkmK0Vbjz9k/AfJMWetsn/Tg8NXNffsePls9yi6pQOqenG49gCWCeiQpbEqlH3ypYF95uEPhXuTbDvsOTGjX2ko3Hng7PmuoAtuKdAVWJpjZHlELrlySScM7xs9MiJnBv6QGyIdS4GpUDP6lUwKd3xztvafINIEaYJpgmWBtMCUYBr2nJTOswQpwJLu/NE/o7nTqtu/Il5b4pFIiZqVn7rmQtf2IzUdAaS0Q2AmAyWuVu950wNHCpf06+q2wNr6+A7itakOiUlLj7nixVPtozAdAunsWkq2jg7wweiA7ZlMIsxJYe/4fvxRXsjeCfnMHpBhE0kJ0uC5ExdHtlyVKwA0FTuTMed0tHHPqfYCLEBzYqwUi4cFeLu0gKq2bm4/8JcTdwv69aGnvIg0XwoNsavcmJVKmi+F/fVRKg5eAExQisrRhZHtYwqLdWDWnnN/F9g5kCAEpFj8VFbI26UFdnUo5XqGMGm7+ybSfCnM/b6BwbtqSP/kFCcjncwcnAtZmo0hJDvCkQKUut/3WUtnBX93O3WvgVJUTRvCqPxMTrZ24k/TbQ+EsLOYn0leZhqHm2J8eqbVXmfAbYfqeWtILuP7+jjW5theMdjTFJvpO9DWORbT8EpSKU5d6WRTbSvrTrdSNdspEikAxfJgLgDrwhHIS2fD0FxqO3p4M9zK0qaoU+LKwYKDl+N3+Oq6RBFCOp7Y7x89WOc+a4mzICWgKMnyAbA8lMe2oqB7xtZMGMSWqiYW/3DOOaQ2WF3X1YG6z7QCiRja1SFAGt6z4x1SgDDQLVtiJhYFefdEPdqmQzz37WkAFt0xiPKiAAjDzqEQpFlWQMeScaThANtALpETIk0pb9458Y3tHSz+pgZaY6w9XsfuP5sBqByY42zI3rAyzbg+PF2/4Na3SyDcnWsJyXAWRrttsf26tgVMz3ZLTbMnO0K49sMyfE36vfl9f0kA2kTeLq4LlxRsPHcZgJEFftvOsO0fKrbzUxeNe54Ig7v7B37WHygK7ic7zZMGKZKMkkgMe1F93WXaO7oYP6Q/L5YWg5RU3JzPgyOLAPiyoc3ZpIScDCqG9N+vo2lfLLz1xojtiWF7lOSNphSaspzQ2J6WffQjhiFYPasUtXo+ex+fTDA7k5f3HKXq/EUXZ9GYQa3o2hcpKzsL5L6541j7R8NUunps1TVNRyRNAqka1ZfaOVQfAdMCJYlc6eD142GyhUG4uY3vzlxgxb6f2f57vb1eWZCdweeVd63MLrj1R40lr6DeeCx1/W/nTzy97fAouzdYTp3T62B599f3kV7zKDYsKK9eMq5kLP6Q0BES7dnNYtmYofMW3HNLzC3lRK9wlVd4cn5tGxAJG1upF04ZE1syrqQSf0jYUu8In7binfDWmaXl88tGRLBkb1k3k8iS/yLR3KR7XXDf7ZH3Zk+cktyCda8hSbSn1p/4eM7E0nWPTP6NvumeN8ndMNExk7ujaUIgg7eemPr71ofL7sQf+oWkofHIUi+WTh7Uxmd8zdGOhat+qn51w7GaQiLRXh8bXh6A/jksG3fLpRfKbls5IOjfjD8kuWZoVC66ZqH3oaDefz4DmPXl6caKQ3+1jL0Y7y5O1fFLS8ULs/s03lV0w6/TRwzaB+zFH7p6LXhi/Au3WqEm1DA2YQAAAABJRU5ErkJggg==
* добавлен навык Телосложение (Выносливость), который отвечает за задержку дыхания, дальние забеги, сопротивление природным условиям, крепость желудка, болевой порог и т.п. Является классовым навыком для Варваров, Воинов, Монахов, Паладинов и Следопытов.
* добавлено испытание навыков "[[Погоня]]"
* добавлено правило "[[Очки героя|Очки героя]]" на замену правилу "Вдохновение"
* добавлено правило [[Хиты, урон и смерть|Хиты, урон и смерть]]
** добавлены состояния ''истерзанный'' и ''умирающий''
** дополнено состояние ''окровавленный''
** добавлено правило "Спасброски от смерти"
** добавлено правило "Стабилизация существа" на замену правилу "Оказание первой помощи"
* добавлено правило "[[Немагическое лечение|Немагическое лечение]]"
* добавлено правило "[[Падение на существо|Падение]]"
* изменено правило "[[Определение значений характеристик|Определите значения характеристик]]" - модицифирован случайный метод определения значений
* изменено правило "[[Очки навыков|Получите и распределите очки навыков]]" - получение навыков после 1 уровня больше не связано с умением "Увеличение характеристик", вместо этого вы получаете по 1 дополнительному очку навыков при достижении 5, 10 и 15 уровней персонажа
* изменено правило "[[Доспехи и щиты|Доспехи и щиты]]" - реворк таблицы доспехов, владение щитами привязано к владению доспехами
* изменено правило "[[Оружие|Оружие]]" - разделение оружия по принципу действия, дополнительные бонусы от владения, реворк свойств и списков оружия, созданы [[Актуальные таблицы оружия|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1786877311]]
* изменены [[Таблицы критических попаданий|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=499929205]] - полный реворк
* создан [[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=772074949]]:
** добавлены черты "Мастер владения арбалетами", "Мастер владения древковым оружием", "Мастер владения дробящим оружием", "Мастер владения клинковым оружием", "Мастер владения контактным оружием", "Мастер владения луками", "Мастер владения метательным оружием", "Мастер владения топорами" и "Мастер владения цепами"
** изменены черты "Использование двух оружий" и "Мастер тяжёлых доспехов"
* созданы [[Актуальные таблицы снаряжения|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=677870806]]
** множественные изменения веса и цен
** добавлен //саквояж хирурга//
** добавлены описания предметам базовой алхимии
** удалены элементы одежды и аксессуары
** изменены дальности света предметам освещения
** дополнено описание набора травника
* [[Ребаланс увеличения характеристик и черт за уровни|Ребаланс увеличения характеристик и черт за уровни]]
* удалено правило "Бонусы на 1 уровне"
!!!Классы
[[Воин]]:
* [[Мастер боевых искусств]]:
** Боевое превосходство: "Каждый раз, когда вы получаете уровень ~~в этом классе~~, вы можете заменить один из уже изученных приёмов на новый."
---
!!!Черты
* добавлены:
** Борец
** Исследователь магии
** Каллиграф
** Картограф
** Кожевник
** Кузнец
** Мастер владения стрелковым оружием
** Мастер волшебных палочек
** Ремесленник
** Фальсификатор
** Ювелир
* удалены:
** Базовая боевая подготовка
** Бойкий на язык
** Драчун
** Жатва
** Извечный враг
** Имя им - легион
** Использование двух оружий
** Мастер большого оружия
** Мастер владения арбалетами
** Мастер владения луками
** Мастер имитации
** Меткий стрелок
** Неисчерпаемая ярость
** Непогрешимое око
** Обновлённое дыхание
** Охотник на исчадий
** Тортл-защитник
* переработаны:
** Академик
** Историк
** Мастер владения древковым оружием
** Мастер владения дробящим оружием
** Мастер владения клинковым оружием
** Мастер владения контактным оружием
** Мастер владения метательным оружием
** Мастер владения топорами
** Мастер владения цепами
** Медик
** Налётчик
** Скрытный
** Хищная птица
** Шеф
* объединены:
** Акробат = Акробат + Альпинист + Эквилибрист
** Внимательный = Внимательный + Восприимчивый
** Второй шанс = Второй шанс + Бездонная удача
** Орочье буйство = Орочье буйство + Агрессия орков
* усилены:
** Адепт метамагии
** Алхимик
** Арканист
** Атлет
** Бдительный
** Боевая подготовка тритонов
** Боевой заклинатель
** Взломщик
** Воинский адепт
** Вундеркинд
** Выживший
** Дар металлического дракона
** Дварфийская стойкость
** Дикий атакующий
** Дипломат
** Древесный прыгун
** Дрессировщик
** Друг животных
** Единый со стихиями
** Заточенные когти
** Знаток сцены
** Истинное наследие
** Исчезновение
** Крепкий орешек
** Лекарь
** Мастер примитивного ремесла
** Мастер средних доспехов
** Мастер щитов
** Меткий заклинатель
** Мистический адепт
** Натуралист
** Начинающий боец
** Начинающий изобретатель
** Небесное касание
** Низкорослое проворство
** Оборонительный дуэлянт
** Отравитель
** Очень важная персона
** Пламя Флегетоса
** Посвящённый в магию
** Сладкоречивый (переименнованный Красноречивый)
** Стихийный адепт
** Убийца магов
** Угрожающий
** Элитная боевая подготовка
** Эмпат
* ослаблены:
** Оплот
** Продвинутая боевая подготовка
** Раскрытая псионика
** Создатель чудес
---
!!!Боевые стили
* [[Метание]]: "Эффективная дальность, используемого вами метательного оружия, увеличивается в полтора раза."
* [[Рукопашный бой]]: "Вы можете использовать 1к6 вместо обычной кости урона ваших безоружных атак ''и контактного оружия''~~, либо к8, если обе ваши руки свободны.~~"
* [[Стрелок ближнего боя]]: "Ваши атаки стрелковым оружием по целям в пределах 6 м от вас игнорируют укрытие на половину ~~и укрытие на три четверти~~, ''а укрытие на три четверти для них считается укрытием на половину''."
* [[Техника превосходства]]: "Эта кость добавляется к любым Костям Превосходства, которые у вас есть из другого источника, и изменяется согласно умению Боевое превосходство, если оно у вас есть. Каждый раз, когда вы получаете уровень, вы можете заменить изученный приём на новый."
---
!!!Экипировка
* [[Оружие]]:
** переписаны [[Свойства|Свойства]] оружия
** переписаны Особенности оружия [[по принципу действия|По принципу действия]]
** особенности оружия [[по тяжести и хвату|По тяжести и хвату]]:
*** Лёгкое: "~~Рукопашные атаки по схваченным целям совершаются с преимуществом.~~"
*** Одноручное: "~~Атаки, наносимые неосновной рукой, совершаются с помехой.~~"
** добавлен Метательный нож: простое лёгкое метательное, 1к4 К, 19-20, 8 м, Скрытное
** Боевой нож, Выкидной нож, Кинжал, Складной нож: дальность - ~~8~~ ''6'' м
** Верёвочная обмотка: ~~Экзотическое~~ -> ''Воинское''
** Гномий пиломёт: "Атаки пилометом, совершаемые без помехи, игнорируют укрытие на половину ~~и укрытие на три четверти~~, ''а укрытие на три четверти для них считается укрытием на половину''."
* [[Снаряжение]]:
** Сеть: "~~Вы можете действием метнуть сеть на 6 м. Совершите дальнобойную атаку по целевому существу или предмету, считая сеть импровизированным оружием.~~ ''Вы можете использовать сеть в качестве простого метательного оружия с дальностью 1 м.''"
---
!!!Игровой процесс
* [[Сражение]]:
** удалено действие Ложный выпад
** удалено действие Наскок
** удалено действие Метка
** удалена особая атака Потеснить
** удалена реакция Отступление
** [[Захват]]:
*** добавлено уточнение //''Атака по схватившему существу''//
** [[Кувырок *]] и [[Пробегание *]]:
*** "~~При провале, вы также можете один раз переместиться сквозь пространство цели, считая его труднопроходимой местностью, но это перемещение провоцирует атаку от цели.~~"
** добавлено правило [[Сражение верхом]]
* [[Состояния]]:
** [[Бессознательный]]:
*** Вы автоматически проваливаете ''проверки и ''спасброски Силы и Ловкости.
*** Любая атака, попавшая по вам, считается критическим попаданием~~, если нападающий находится в пределах 1 м от вас~~.
** [[Окаменевший]]:
*** Вы автоматически проваливаете ''проверки и ''спасброски Силы и Ловкости.
** [[Ошеломлённый]]:
*** Вы автоматически проваливаете ''проверки и ''спасброски Силы и Ловкости.
** [[Парализованный]]:
*** Вы автоматически проваливаете ''проверки и ''спасброски Силы и Ловкости.
*** Любая атака, попавшая по вам, считается критическим попаданием~~, если нападающий находится в пределах 1 м от вас~~.
** [[Сбитый с ног / Лежащий ничком]]:
*** Броски ''рукопашных атак'' по вам совершаются с преимуществом~~, если нападающий находится в пределах 1 м от вас. В противном случае они совершаются с помехой~~.
*** ''Броски дальнобойных атаки по вам совершаются с помехой, если только атакующий не находится на 5 м выше вашего уровня.''
---
!!!Сражение двумя оружиями
<<<
Как теперь работает сражение двумя оружиями в общих чертах:
* Без стиля: при Атаке с легким оружием в каждой руке одна дополнительная атака второй рукой частью Атаки; модификатор характеристики к урону дополнительной атаки не добавляется.
* Со стилем: +1 к КД, можно использовать одноручное оружие.
* Черты и возможности добавить модификатор к урону дополнительной атаки больше нет.
<<<
* Если вы совершаете действие Атака и атакуете ''лёгким'' оружием, удерживаемым в одной руке, вы можете ~~бонусным действием атаковать оружием~~ ''частью этого действия совершить одну дополнительную атаку лёгким оружием'', удерживаемым в другой руке. Вы не добавляете модификатор характеристики к урону от бонусной атаки, если он положительный. ~~Атака одноручным оружием, удерживаемым в неосновной руке, совершается с помехой.~~ ''Вы не можете совершить более одной дополнительной атаки частью действия Атака, в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).''
* переработан боевой стиль [[Сражение двумя оружиями]]: "Вы получаете бонус +1 к КД, когда держите в каждой руке по рукопашному оружию. Вы можете сражаться двумя оружиями, используя одноручное оружие."
* Боевые искусства [[Монаха|Монах]]: "Если в свой ход вы совершаете действием Атака безоружную атаку, или атаку монашеским оружием, вы можете ''частью этого действия'' совершить одну дополнительную безоружную атаку~~ бонусным действием~~. ''Вы не можете совершить более одной дополнительной атаки частью действия Атака, в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).''"
* [[Шквал ударов]] [[Монаха|Монах]]: "Сразу же после того, как вы в свой ход совершили действие Атака, вы можете потратить 1 очко ци, чтобы совершить бонусным действием ~~две безоружные атаки~~ ''одну безоружную атаку''."
* Гибридная форма [[Ордена Оборотней|Орден Оборотней]]: "Кроме того, когда вы совершаете действием Атака безоружную атаку, вы можете ''частью этого действия'' дополнительно совершить ещё одну безоружную атаку ~~ бонусным действием~~. ''Вы не можете совершить более одной дополнительной атаки частью действия Атака, в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).''"
* Доспех Бушующего в бою [[Пути Бушующего в бою|Путь Бушующего в бою]]: "Пребывая в ярости, если вы в свой ход совершаете действие Атака, вы можете ''частью этого действия'' совершить одну дополнительную безоружную атаку~~ бонусным действием~~. ''Вы не можете совершить более одной дополнительной атаки частью действия Атака, в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).''"
* изменения [[рас|Расы]]:
** [[табакси|Табакси]]:
*** "Кошачьи когти". Используя свои когти, вы можете карабкаться со скоростью ~~4 м~~ ''равной вашей скорости ходьбы''.
* [[черты|Черты]] разбиты по категориям для простоты навигации
* изменения [[черт|Черты]]:
** добавлена черта "Боевая тренировка тритонов"
** добавлена черта "Взгляд с глубин"
** добавлена черта "Выносливость горы"
** добавлена черта "Древесный прыгун"
** добавлена черта "Единый со стихиями"
** добавлена черта "Жатва"
** добавлена черта "Заточенные когти"
** добавлена черта "Имя им - легион"
** добавлена черта "Истинное наследие"
** добавлена черта "Кобольд-изобретатель"
** добавлена черта "Мастер имитации"
** добавлена черта "Мастер примитивного ремесла"
** добавлена черта "Небесное касание"
** добавлена черта "Непогрешимое око"
** добавлена черта "Раскрытая псионика"
** добавлена черта "Обновлённое дыхание"
** добавлена черта "Охотник на исчадий"
** добавлена черта "Очень важная персона"
** добавлена черта "Разрывное дыхание"
** добавлена черта "Раскрытая псионика"
** добавлена черта "Регенерация рептилии"
** добавлена черта "Тортл-защитник"
** добавлена черта "Урд"
** добавлена черта "Хищная птица"
** добавлена черта "Чешуйчатая стая"
** удалена черта "Драконий страх"
** удалена черта "Драконья шкура"
** удалена черта "Крылья дракона"
** удалена черта "Человеческая решимость"
** "Альпинист":
*** Вы игнорируете первые ~~6~~ ''4'' м падения, когда определяете урон от падения.
** "Кошачья грация":
*** Вы игнорируете первые ~~4~~ ''6'' м падения, когда определяете урон от падения. ''Вы приземляетесь на ноги, даже когда получаете урон от падения.''
** "Лекарь":
*** удалено требование владения навыком Медицина
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFHElEQVRIiXVVa2xURRT+Znvb7pbu3dJCS3kVGlzKq4gFmwoIKFQoRBuhEMSGSEgEglSDJBKDkT8YEvmhFhMxJISoETBBxGLRxAdvLKC0hBZKaQs0bXYppbvdtrvz8sfMvXu3yE1OZubOme985zFnCI5dxtM+WZqRCmDRsW5W/kOIl/xFRV4Gga9PoHduCmlfZRoXK7KMHwH8AdMffRoOedKIhCwdboS53LC2LfpxTUc0F/3c3oMkAER87UlC+Vh34JuJnr3Dkkg1TH/sSSNHL+nD+tjSzMl7OqJHP2weKMQA0z8tYG1EamUhAZcAOAHSXdjj99bvHOdZA9PflGjkyHllQBLIsqw5/qZIbXNLf6ZlFNBeCKKJSG3MYpU4lkxO77kwLWMZTL8dIhe4BLiALMsqmNsU/q35VjgTnAGcAYwBTKiRM0DEYO9xrkXr6fnFGz3DlzU8Oo3Q7YK4EcYgV2Qn773ff+RCU9gHwQEuHGAscc2cQhU4o1oYwClqGwK+fa2howjdTgYAA4yjK8qrPrjRUwjG4q7r0ByenQUiJSrrulVevAY+y/eB2KFTI9HTz7siaO4I4/0rnTPW5aZVjTLxqSFXjnWX3+zZgVAsHmup4r5pkg+V+SauPxwAOAWkxGRPCrZNyRxaQPEkC46tbY8BGkPVzeCOI+7b1UT23lpFfmo9hj6qwQWQnISz80djXm46AKA+2I+ZNXc1ae5ItCbkTUX0dZWC1G/rgUGm9rypkGsLVxvHuyLL8XjQUTEC10vzUDgyDfXBCMwUl9pjTk+tKKmyvr7QjxQjCbNPNQJ9A3ES3TGceNBb5qp9GCkCiwKUKiBGcaM7gm3n2zHzeCNCUa4OWIm1Es5iAKV4d8oIFGano/ZOEFfvBB1FoOT3QGi20Rqh48Fo/A5IiXV/tujrIEGse2DpOMMkgV1FYwAAy842ax3pwBJojQyOM1xS+IYaSQRyGpEJhrbPGoPMYW6cvtUFBMNPEICU8AjhM5I4D4FR0z5sK8ZjTiRUOCVUYWiQlRNHAADeutSiSQgHCXWecR4ynkkl98HoNAhne5C6Bw4Nl8O7tBSUTByJe90hdLYHHcYd4RLAJLfxwPXSyPQ6UCuhMTuh9tw6SGMJyd8wQd2Vy+0PgRgFYiwuVK9ZDC/m+P52vTo+8xS8yQ5wGh+d7Kk+TJVeSY4XAPBrS1e82lhMXVprneHB8vycUy4QcnLj9NEBG9hiQikQoyBWhdkkFMMZOT4AQF2wF+DRxNLWBDfPygvCRU4m7e7LZjUVxdj3b1sp+gcBIQDBAC4BIeBLJmjofIRzbQHYzVNw5HgMtAUe48D5RvufEqHE9ODE6nm7vdnTzxBs2gW5983k6mt3r7zz/bnCoXWuEqiLwSqMhHcF8aqy9onEl5WLGzYXFxTB9FMXGAPZfpBufS5/zfqFU3qVq1HtttXOnW2e/k/L59p7tbdxyazezcUFq2H6KQC4VDw5SNVXTYfK5ixeu2BqIP4QaQALjOv3g9P43NKj6tGqfPnZwNevzV3ifIJdCkQlimypvvJd+Qtzvli36BrSU21mNluqQanDuEXEdGP/+lf+OVyx4HmY/jpH9wfBG1sSLg8gIQ+8Z3T0hDd+cqbho/2XG3MR6HHkAbYeIIGcDGwpntq5c8HM3WMzzYMw/QxDPoKKtx1JdfQvAsiDO9wAVvxys335uXtdRZ2hgTzDBZMJEcr1prXPHz/q6tJpE2oA/AzTPzgU3Pr+A9g5jZcrT7h+AAAAAElFTkSuQmCC
* добавлены списки доступных подклассов всем [[Классам|Классы]] (пока без описаний)
* поправлено правило Мультиклассирования [[Использование заклинаний]]: "Количество имеющихся ячеек заклинаний вы определяете, суммируя уровни барда, волшебника, друида, жреца и чародея, половины уровней (округляя в меньшую сторону) ~~изобретателя~~, паладина и следопыта, ''половину уровней (округляя в большую сторону) изобретателя'' и треть уровней воина или плута (округляя в меньшую сторону), если у вас есть умения Мистический рыцарь и Мистический ловкач соответственно."
* изменены требования к мультиклассированию [[Паладина|Паладин]] на "Сила ''или Ловкость 13'', и Харизма 13"
* удалено правило Дополнительные заговоры. Дополнительные заговоры теперь прописаны в умении Использование заклинаний заклинателей.
!!!Изменения из Tasha's Cauldron of Everything:
*изменение правила [[Падения на существо|Падение]]: "~~Если вы приземляетесь на существо, оно должно совершить спасбросок Ловкости Сл 15. Существо получает половину дробящего урона, который вы получили от падения, при провале или четверть этого урона при успехе.~~ Когда одно существо падает в пространство, занимаемое другим существом, и ни одно из них не меньше Маленького, второе существо должно преуспеть в спасброске Ловкости Сл 15, иначе попадёт под удар падающего существа. В результате такого столкновения урон от падения разделяется поровну между обоими существами, а существо, попавшее под удар, сбивается с ног, если оно не превышает размерами падающее существо как минимум на две категории."
* изменения черт:
** добавлены черты:
*** "Адепт метамагии"
*** "Затронутый Страной Фей"
*** "Затронутый Царством Теней"
*** "Мистический адепт"
*** "Начинающий боец"
*** "Начинающий изобретатель"
*** "Отравитель"
*** "Телекинетик"
*** "Телепат"
*** "Шеф"
*** "Эксперт в навыке"
** удалены черты:
*** "Гурман"
* изменения Боевых стилей:
** добавлен стиль [[Метание|Метание]] в списки [[Воина|Воин]], [[Кровавого охотника|Кровавый охотник]] и [[Следопыта|Следопыт]]: "Вы получаете бонус +2 к броскам урона метательных атак оружием."
** изменён стиль [[Бой вслепую|Бой вслепую]]: "~~Отсутствие возможности видеть цель не накладывает помеху на ваши атаки по ней, если она не скрыта от вас.~~ Вы получаете [[слепое зрение|Зрение и свет]] радиусом 2 м. В пределах этого радиуса вы можете видеть всё, что не находится за [[полным укрытием|Укрытие]], даже если вы [[ослеплены|Ослеплённый]] или находитесь в полной темноте. Кроме того, вы способны видеть [[невидимых|Невидимый]] существ в пределах этого радиуса, если они не скрыты от вас."
* изменения [[Барда|Бард]]:
** Вдохновение барда: "Если существо сотворяет заклинание, оно может один раз бросить эту кость и добавить результат к ~~броску урона или исцеления заклинанием~~ ''урону или исцелению, полученному одной из целей этого заклинания''."
* изменения [[Варвара|Варвар]]:
** добавлено умение 3 уровня "Первобытное знание": "Вы получаете владение одним навыком из списка доступных варвару на 1 уровне. На 10 уровне вы получаете владение ещё одним таким навыком."
** добавлено умение 7 уровня "Инстинктивный наскок": "Частью того же бонусного действия, которым вы впадаете в ярость, вы можете переместиться на расстояние не превышающее половину вашей скорости."
* изменения [[Воина|Воин]]:
** добавлены [[Классовые умения воинов]]
* изменения [[Волшебника|Волшебник]]:
** добавлены [[Классовые умения волшебников]]
** добавлено умение 3 уровня "Формулы заговоров": "Каждый раз, когда вы завершаете продолжительный отдых, вы можете свериться с формулами в своей книге заклинаний, выбрать один из известных вам заговоров волшебника и заменить его другим заговором из списка заклинаний волшебника."
* изменения [[Друида|Друид]]:
** добавлены [[Классовые умения друидов]]
* изменения [[Жреца|Жрец]]:
** добавлены [[Классовые умения жрецов]]
** заклинания //Солнечный луч// и //Солнечный ожог// добавлены в список заклинаний жреца
** опция "Божественный канал: Поглощение божественной энергии" перенесена в отдельное умение 2 уровня "Поглощение божественной энергии" с изменениями из Tasha's Cauldron of Everything
** изменено умение "Благословенные удары": "Когда существо получает урон от одного из ваших ~~заклинаний~~ ''заговоров'' или атаки оружием..."
* изменения [[Изобретателя|Изобретатель]]:
** добавлено [[Описание изобретателей]] (без перевода)
** добавлены [[Классовые умения изобретателей]] (без перевода)
** заклинания //Вспышка мечей//, //Громовой клинок//, //Клинок зелёного пламени// и //Лассо молнии //добавлены в список заклинаний
** создан [[Актуальный список примочек изобретателя|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1587747735]] (ARTIFICER INFUSIONS) (без перевода)
* изменения [[Колдуна|Колдун]]:
** добавлены [[Классовые умения колдунов]]
** изменение ''[[Договора талисмана|Договор талисмана]]'': "Когда носитель талисмана ~~совершает~~ ''проваливает'' проверку характеристик ~~в которую не включен его бонус мастерства~~, он может бросить к4 и добавить выпавшее число к результату. ''Это умение может быть использовано количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.''"
** изменения [[Таинственных воззваний|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1448348621]]:
*** добавлено воззвание "Бессмертное рабство"
*** удалено воззвание "Ярость мастера цепи"
*** "Удалённый переписчик": "... может содержать количество имён равное вашему ~~модификатору Харизмы (минимум 1)~~ ''бонусу мастерства''."
*** "Дар хранителей": "... может содержать количество имён равное вашему ~~модификатору Харизмы (минимум 1)~~ ''бонусу мастерства''."
*** "Вклад мастера цепи":
**** ~~Фамильяру не нужно дышать.~~
**** ''Вы можете бонусным действием приказать своему фамильяру совершить действие Атака.''
**** ''Когда фамильяр получает урон, вы можете реакцией дать ему сопротивление к этому урону.''
* изменения [[Кровавого охотника|Кровавый охотник]]:
** добавлено [[Описание кровавых охотников]] (без перевода)
** добавлены [[Классовые умения кровавых охотников]] (без перевода)
* изменения [[Монаха|Монах]]:
** добавлены [[Классовые умения монахов]]
** дополнение к умению Ци перенесено в отдельное умение 3 уровня "Заряженный ци удар": "Если вы совершаете действие, тратящее очки ци, вы можете совершить одну безоружную атаку ''или атаку монашеским оружием'' бонусным действием."
** умение ци "Ускоренное исцеление" пренесено в отдельное умение 4 уровня: "Вы можете действием потратить 2 очка ци и совершить бросок вашей кости боевых искусств. Вы восстанавливаете хиты в количестве равном выпавшему значению ''+ ваш бонус мастерства''."
* изменения [[Паладина|Паладин]]:
** добавлены [[Классовые умения паладинов]]
** опция "Божественный канал: Поглощение божественной энергии" перенесена в отдельное умение 3 уровня "Поглощение божественной энергии" с изменениями из Tasha's Cauldron of Everything
* изменения [[Плута|Плут]]:
** добавлены [[Классовые умения плутов]]
** добавлено умение 3 уровня "Надёжный удар": "Вы можете бонусным действием дать себе преимущество на ваш следующий бросок атаки в этом ходу. Вы можете совершать это бонусное действие, только если вы не перемещались в этом ходу. После совершения этого бонусного действия ваша скорость становится равна 0 до конца этого хода."
* изменения [[Следопыта|Следопыт]]:
** добавлены [[Классовые умения следопытов]]
** реворк классовых умений 1, 3 и 10 уровней
** умение 3 уровня [[Повелителя зверей|Повелитель зверей]] "Спутник следопыта" заменено новым умением "Первородный спутник"
* изменения [[Чародея|Чародей]]:
** добавлены [[Классовые умения чародеев]]
** заклинания //Длань Бигби//, //Магическое оружие// и //Отилюков ледяной шар// добавлены в список заклинаний чародея
** добавлено умение 1 уровня Заклинания источника всем подклассам: "Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея."
** добавлены варианты метамагии: [[Преобразованное заклинание]] и [[Преследующее заклинание]]
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFZ0lEQVRIiXWWe2wURRzHP7u9Po/u9QEcraWVKkfFtEWwFERFsaKURxojEF/RGBKgKsRo4wuJxgRCiMZE8AnGiCYIJiqo4LNGBUSxAi2kVLBAISWHLe2VK+3O7I5/7N7ttsgmk9/s7Mzv+3vN97ca2/dzpUfNzkkHbt/eJes+jVnT95h2SUgj1KtU74w0/dS9RmDfwvzA50AjRmTwSnq0/wNRs3MCfZZ69L6Tgy99ddYsoF/6PiYmNigNsjTqitKjH43LWhdM0TZgRMzLQbb95h52Tqu78yasOTu47YXjlyqSylVCs/LmSgM7gWpDVgprJmQffm5s5mKMSOtQkK17kodUbX5VpDW+++8Tl/JQNqB5ptuuMuXzRrkviqScXjbiwt7rc+ZgRJIh0rEtsC1UbX7ZjNa+7/5uu5iHJcCyQUqQliMty1mzLLCkb7jv0pH7Wrpz72ru/oZYW5kHIm3U3HDquo7+T/a29oX8B5JDDpND1gSOUcKdS75t/jf0antsG7G2VAfEsjg3aK18tvlChWeZB7JlUogtN4Rcr7wxvyidg3cUcLCmkIM1V1FfGvTApcnTBzrLzw3IlQC6uqcoY9mJWAMXTRAJi5zNy8YFefAag/JQmmeplIwPp7NjRiGVIzPRlKJyZCYbqwt47NpskKazL9bPyqPnG4i1ZejAvC+O94xOuIqQELD4ZeYY3qoa7VSHUq4BTnheL8121ncco3LHMbQthzClRcN1+Q6AkCAE21qjo1FqfuCzc/G59FzyqkUpDt1VSsWoLA6fj2Ok6U7lSDNZQbXjcjGlBZ29zpqAY139lIezIRjA0aegy+SLM721+u5/41OwTNdNEyyTlq44K/acpvKzo8QGLQdcJsIo2NvRQ1oghVcqx4AUTC0aQXk4m+74IHT1gXBDL01+jMZuDJyIi2KE8N0FeOCnf0A5d0JLXD4pk57O2HWUkwsrWTWtmFXTigHojg+Qv6PZAfDdn/b4wFg91bZDiRhiCUcmLBEiqRhhJpP69uRCSnKDALR09mIKSV4wg63Xj3E9dr0WJmm2HQrotowhTcOjCzXEEs8T4azlZrL0xqvpvjhA/uZfoN+EzFSaF1WxuGIsu9ujfHD4TJKClGXF9PHpKR3OZXK9SVgipC/Zbk6EoKE4F4B3m/6Bvn63XOO8tv84ALXFeT4dgmszAmf0WaOCfyRDI/3D9PKAnfw+Mk0HID81ZYiycHoKADlpKfj13RoO/a4vKM77mhFpQwGED0i5BGgJME2eOXQagIenlDKxwABTMH/8KBpucaiqsb3Ty0kok7ml4a8DaNrOJeWF0U0/HBkNyqXvBNsqLyemm5POLp7/8nfWzJvKkaWz/YzO983trG08kszp0skl59G1nQFt1ScDnc8sWL9pX9t6evo9ADfxHzcdd+aWcIEt1ja28G17lPrKkgTns7PtLJ+3dHiFEwqyunrCeozIgMayF1HrHkzd0HTiwBNb91Qkw6OsYb1iePXhkz7D3Gbz5kM1zcury6ZgRISOZaI9tVk8PvmaxQ/ddl2vw2Hm5RQvE7T+f/Tv7ykWS2om9y6vLluEEREO1Qtno7bindYPa6tqFs+cGL2slyQVWgzpKYl+Irwe9MCsSdH36m6609+CdX/j0eo3HNhad1PVG/ff1kQw3bs7tq+RSZep/V7YFhgZbHxk9l8fLZw5FSPyh78gNO6vd/8FFOiOVO8+GTh7oW/J2p8Pr964v7WAaI8Ta1v5jrq5CedQXz2x87mZlS8X5RmbMSKSYY/GoqXDkuglVr3fkAHM23X01NxfT5+b0hnrLwnomiFsFSvMzjp1c0n4zzkTr/4K+BIjMjBceeL5DyORjOkgHGYEAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFh0lEQVRIiXWWa2xURRiGn7Pd0i3QXdpKaWtpgcBSqYBcauUmIJdSQSVRaxSJxhAVvIAREojB2JgQ+UFiImKsYggQg2iiKMjFIFGRiyCgFdpQkBZLWltK2V277Z6ZOeOPc/bs4TbJ5szMN/Nd33m/NfjyOHcaeu6ADGDml51y4VdRNeknYZXkQiiiiUzpYzQ/EfQffTLX/w1wiGA4cSc9xi1GtIGuDPljSr/wdFPinT1XEgXEVVLongHL/vY1WFiU0b59aN/1/dKMjQTD5m2MHHPvojV6Xs7IdVcSO99qjI+hR7n7Xhv211lY2jbYL4114aw/1wzOfIpguOFGIzuO2ofQ6KqB5eGG7n2NF+M5rjJLg88Cy+M92pZp7cxT1ieNzOo6UjagimDYTZEPS4HS6KqBpVMaYj80no/mIC2QEpQES4G07LlyvkmZkiCVfcaZHz3blV1Zd20/0fOlKSNSohcMTF//T/yLI/XRENICy6PEq9RVrjxyYe/L1PxA3dXQhkvRnUTPpztGFG0JtXz1X11jUMo2IB1FUrF1XIht40IpRVKAErw8tC9nZhVwZnYh2yfkQHZaSi5NVp5sHd3WK5cD+PTjRYGXL0ZXEev1eCpA2ooWDwsyOtTHVY5SbJ+Yy0flgxh7VyahdINFI7LR84YyKj8DpGnricZ541zHKqLnAz5gwa4L1/OQTgqEgDSLX6YX8FF5no0OrR3DJmTCohE5mFIx7sBFhn5Vj7HzLJ1xk9MzS6CfD4QJQrCjoT0PrR/xfd3WPZ/rPZ5QJX/MKGJqYX/+7OimKdJjI0jY0dUU9wfg4OUIZy512oY7/+NAcxd9/Gm8OySUirozxq6WyMO+fVe7J6BMkAk31L86u3n912bGflNPNKFsiDo1uSvdAOD3jpitTNjO/dYeAyA33XD2bacO/Rud6G+Mi2KETOFdaxYduug+QiP5BqQJaBojPQA8VpLN2mOX3LdSPSQbgKmFTiSWfa8p3jvYl6FUCCHsPEqR+iXXjuGkd++fa8UUktH5QfZVlbI4nMu+qlFMKslN1U846RKCDMsK+X2WiiLNoEsfLoU4rxmNobEvAsRMCnacYPe04VSG86kM5wNQe/wCL1YM52hzxw3OSaWi/hEZvn+QoizFQx6qcNOlUxfRXLt8lcnbOyC3L5XZ/djfco25d2fzYsVw0JbjkAZLMzzgb/E9NLD/CaQDXWlDL1m0lEek1qEAdc9PYf3UYdDWxf6zLRDpZuWYIgC+vdCWKryQPDgo9Jvv0eKc78lKd5DlGPIaS6bQdPZauygMBlgxeSRkZ4IUrK4YwpyyYo5faGV33WXHSQkDAswfNuh7P4bx3ZJ7C9s/PXg2Lxmiy7J40KWEy8qr956mtnoKesUCl85NU/DAtkOgTJehl44v6cBnfJdW050n9zxRwYYzTXOJ94Jl2WxrKVAWoXSDutZODl/qsPe15FRLJzVH6pGRGE3tXdT+eo6FW36ERMK+rxVkBdhVPa0mK+/enw2WrkW/92z6xlN/n3xtx+ExdnEtF+deENwegTh9xsEMFgCbFs+uW1pROoFgWPgQJsabm8Wr44c99dyMeyJ2PZLUngTAzVTvbQMChPKcUSyZMz6ytKK0mmBY2FTvCIzlHzdsebh89tPTy9qxvD3C05xcund+wm4HrlxJFs+6r/2TxybP8bZgn0tmUmAs23jy84WTyz94ZuYp+ve5qWEJz1rdGlUowIfPzT299cnp9xMMn8AzDJ55JfW6LSfVtSv8V7piS9b9Uvf2pmP1BbRfv00dHAQOCrGsYlTrmulja4pygpsJhiU3DYPql24o2A3/XD5bFQAW7D3XPP/w5bYJrdGekjQfQWXpaEFWZvO04vzf55UN2QPsJhjuvVl5cvwP+C2cdnfo6/gAAAAASUVORK5CYII=
Ваш образ жизни определяет уровень комфорта, в котором вы проводите эту неделю, и тип окружающих вас людей - если вы хотите пообщаться с дворянами и другими представителями аристократии, вам следует поддерживать более дорогой образ жизни.
Таблица ниже показывает стоимость образа жизни в серебряных монетах в неделю.
Ваш образ жизни оказывает большое влияние на ваше физическое здоровье. По окончанию продолжительного отдыха обновите свое количество максимальных хитов и Костей Хитов в соответствии с вашим образом жизни.
|!Образ жизни | !Стоимость в неделю (см) | !Максимум хитов | !Кости хитов |
|Никудышный | 0 | 50% | 0% |
|Нищенский | 0.5 | 50% | 25% |
|Бедный | 1.5 | 75% | 50% |
|Скромный | 8 | 100% | 75% |
|Комфортный | 15 | 100% | 100% |
|Богатый | 30 | 110% | 100% |
|Дворянский | 70+ | 120% | 100% |
''Аренда или собственность''
Приведенная выше стоимость образа жизни предполагает, что вы снимаете свое жилье - комнаты в постоялых дворах и тавернах, хоть и удобны для путешественников, обходятся недешево. Но иногда персонаж владеет собственностью, которая предлагает определенный образ жизни - //бедная //крестьянская хижина, //скромный //дом или //дворянское //поместье - и была приобретена, построена, полученная в наследство или в виде награды.
Если вы владеете собственностью, в которой вы проводите продолжительный отдых, стоимость соответствующего образа жизни снижается вдвое, но вам все еще необходимо оплачивать полную стоимость любого другого образа жизни.
Чтобы сохранять недвижимость вне отдыха, вы должны выплачивать половину стоимости образа жизни в конце каждой недели. Если вы сдаете ее в аренду другим жильцам, она вместо этого приносит равноценную прибыль.
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFDUlEQVRIiXWVe2wUVRTGf9NOu21pZ0srpYVCecRtKVJeVp6hotIGqNiEAFFCQggJAWuIRCMGY5QYCEESCULQACYGIwWNkgoWH6iIIA8V2QC1xdQWSMvS5/a9c2euf8zszuxSJtncu3fmnO+73/nuuQonLvGoR5ame4CFJ9pExRdBY84vupmXruDtMeman6A0LveqF1dkql8DP6H5Bh+VRxkKRJamq92GXPfif4PvnLoXyqFfgJSAAkiQCmBaaynxVOR6AkfHp+waFq98iOYLDQHyO0isQMVElmXk77g3eHxbfX+RldxOGGGADWgCcWDa85R4duSnXX9zTPIqNF9tNEjVBStIKsglmcW+2t6a+n/7MyzG0vrKtLNLaaPgvIsZ5+endvw6OX0xmi8iURyGAEMil2QWlNR2f19f15OBoYMwwDCs0RRgCDDDa/b/8BieC53zNzqGl/nbzxCsK3BAhIksH5Gw605f1blb3V4rwLCDDSxAey706HVXcouIReA7f6t3T0PwOMG6BAAVYdAyaGze6u8owjBsNSRIVx1U2FuYTsmI5Ig0Bxu6OVjX6cjolk3Ca1ebp6zOSdmcrfG+Irv+Saq42dF40t+Z5WguXQWWNJTnMU7zAPB3az9TH7PAXr7UzIHaVsccZqSAICUrp2cHqmbk5MUB5Sdvd2ZZMuhghEC3JTBCbJqYxjjNw/UHfSif32BadR3Kl7WEhMH2KZm2XCHQ7VghQA+B0DleG8hCyufVr1p6l9LZb/tecW3bAKAwJQ6AQ3Vt0DtovW/XudLSw7xcLwxPhPs9MQqY1tge4uTdriVqTWvvTIQA3PWQkXnlhSYqLzQ6wbYUk4YnWfO+AUsBOVRtJGcDwSfV+j59LCIUU0DpnA2kfeCcOr1XnEvGMA/+liA8CEYljdoN0NA7MEb1GKYXEXKxD283mlE4wZZpo9k2ZzwhXVB0ym+fH2eHsW5LNE2vimkE0XVtSDYRx1jrB59+nA3FFkDOscsQ6MLpAKbjSBeYYhhBNd+j3KkRYrJVeKJYWAytgJqK6ZQVjKKprZt51ddov9s+ZA2jJZdMSFLvqs+MSL2yV4QmR+sZveUzy2dSWjCKprYgeUfOQd9gdKMMc4klKiULRnovq8vGZpwm1bOWju6H2UhJmS+b0kmjCYV0tv98k6U5GooNrkhJ9Z026BmIcZYNmJnG0gkjT6soSvX6KTmBQz+2Z8W6CCR7Flh9LjExgUPLZxP7LPvkB6pv9tggZlT8xul5D4hTqlVlW9VA89Zluw9drNtNV59TQPvjz67dZmJDi1NgJIp0QKrvtxNxZ8RhgJbCW7Pyd6P5BlSETnZa8t59i55Y80rVb0WY7kKa7DzrB5QYljF2DT9hyRTJgfJi/yhv6gcAcQiBsuWwXjlj4qo1JZO6EKFI37JGV4sX4TtEd+6RyH3irK1bNKNr46yClWg+3QYJgSFQNn9U++mS4udWlUwOWElcicN3intuCLuRGs47obP62WmBwy/MXeS+guOcBDrKpn1Xj1XMLd63euGfDPM4LHXD+gkDhOm6HQ3nG28y+9eW/XV0RclTaL4rbnMovLTJ0tjVq+THr6r3OrrX7zznf3v/pVs5BDofPnBhr45Mp3J2YfMbC6a+m5uhHUbziVgHKqzYAIq7bzlJ5JHXk4Dyb282Lj3f1DKzOdifFx+naIZpBnPSkhvn52X/sbhw3CngGzTfwEP+tp//AW4GaurDf5PFAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFy0lEQVRIiX2WfXBU1RnGf3dzsxvycbPulkBmTDYis0mhAREpIk7jB4YSqI0zhQytzNhWx/pRnU7bqU5bp/xRZpC244zoWEGnA8iY2E6JFUFb26qV0AI6AiFLCJANgaQhm83ukg2759x7+se5+xHUnpkz5+w9532ec973ec+7Bm/8my9qqtXvA+58Iybb/5i0V7wvnFAQqhOKxEqvEf2WZfasD5r7gH9ghTNfhGN8Holq9ZspW31v42DmV/svZmqZtkEpUAYYSs9Bj+UltF9fNrbnhllbK0qM7Vjh7GdJug4Xw6NWBxq3XMx0/XxgehFpB7BBeTSg4WgipfcC4CjAgfIStjRWHX+6blYHVjgyk+T1j7QhoNqCy77cN3Uwci4dyJ8013JgynC/q5lk7nxFY2X80EL/Gqxw3kUebAWOg2oLNq2MpP4aOZMMYEuQEmxbj1KCLcF23LG424V1KejpjV93z8mJd0j2NxVIpEStm1269cJ056FIohrbAekUGV875ua2OxcghTvaIAV/+3S8+rfnk10k+0sBTByb0Yz95FMnY4uQjqau9PCXhX7qyk0AUsKh4/Qkl0amCy4Metk9z6LZ72N4SrBjKEn3YEq71DH4ydGR5u/Ulj851+I3hkqcLms/FY92n4jXoBRUmWRW1+E1PWSlw6W0oMHy6QAePA/j01DhRd03H4BYWhAsLwXg8Z5hXugbd2PssGHJ3LHOm2tDHmBd97nJmpxL9oQtvKaH185M4Nsb4YZ9Z7nvgwsA7G+6DoTg09tryUqb5ncH+NLeXha/M0AsnWXz4hrXdRmQgq7IWA1KfcPz59GptcTTbuAyNPv1qe8/PuYGPcu+MxPE0lnaGvwQ8LFodgXvDSU4eX4CZJbj52N09l8mWO6lY54fhNA9lqJ7ONHmOTg+tRQhQGZBShZ392PsOAYTV8DO6s0VBsFyL7F0licC+hCDiTQI6doJdg/FAWgJ+PRt3P73seQt5pm0qEcKrfO8/nPad0DBgVsaAOiK/JemCi2G3UMTGggFysG0pZar42hyFDiK6NTVOo9p29XaLTkZyrybkJIDrfP5+vzZRONTPPr+gAYBTFvLFaFvkiMxHEfbCgF2Fp/jVJsljp1EZK1Chrs3KSvlUNsCVoSCRCeu0LD3iAZUmsRnuwdROvO9tu2S2JrAxZG2nfQ0+jwXyBnkTlAKgx03sSIUpGfwMg27eyCVBik4fEn7fkOdX5O68SxxSVBOIUGFYH6ZOey5a3blkcJmAaWK6MZlhAJVvNt3kdv29EAynQ/wHy6MAxCyyrRbXSV9t2kOAG8OjOpvWf39a3Oq/2PeWx94m0rvA8SvgFK8fEeY+mAVQ7Ekv/tkkDXzghjKQbliOBAZpXc4RuuCOna0pnjon308e+uNfPMr9fQOj/PWiSigk5FgJWvnzXnbUInTZQ990Bfd+V5vDSjU5vX8v2Y89RrNoSBHv383Xm/pzLVn/wSjk+Ti+/CaJZdfal1abxq/6Lw68rN7t+3s6d/GZJqdH53SBvlXXs188mWGEwOX8D33Jq/cGgbgXCzJr4+dhdR0wcaq4JnljduwwlcNfvBL1Nb7S7d/fPboDzs/XIRj5BUDDvm6MaOGOHppRk4VrRuKFzetOvHI8qalWGHhQUqMH78qHr/5xo5NLQsTeZXZWf3UiGtzSBTVj6LRKdSYB1ctSTyyvGkDVlgAeHKPmfHE7yO72pat6mhZOIZjFwDtawDzc6GBpbtX6Pmmu28a29G+8p7iEuzJb7IlxmPbj77eftuy5799x8dU+tzCJFyAApA+gA3CLVyOBKucFx5o/WTX+pavYoWPzBAEGx9j5p8ChXr5R+bFeOrBLR8ef+bFw5FaxiaLgl9U2xUwp5pHly8Yebpl8ebrA9YrWGH5GUWy/uEiQ9fY/a1e/WkZsO7Aqejafw2NLh1JpkOmx7Cko5K1VbOit4fmHluzoGE/8BZW+OrnKB6A/wFTjXsOjK4VIQAAAABJRU5ErkJggg==
!!!Классы
* Расширен доступ к владению экзотическим оружием для [[Воина|Воин]], [[Изобретателя|Изобретатель]], [[Кровавого охотника|Кровавый охотник]] и [[Следопыта|Следопыт]]. Теперь вместо владения конкретным экзотическим оружием, они получают владение целыми видами экзотического оружия.
[[Мультиклассирование]]:
* Получаемые владения от [[мультиклассирования|Мультиклассирование]]:
** [[Воин]]: "Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие, ''один вид экзотического оружия''"
** [[Кровавый охотник]]: "Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие, ~~один навык из списка классовых навыков~~, ''один вид экзотического оружия'', инструменты алхимика"
** [[Следопыт]]: "Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие, один навык из списка классовых навыков, ''один вид экзотического оружия''"
Эррата [[Кровавого охотника|Кровавый охотник]] от 14.02:
* При усилении Проклятия крови и использовании Алого обряда вы не теряете хиты, а получаете урон некротической энергией. Этот урон не может быть уменьшен никаким образом.
* Алый обряд не прекращает действовать, если вы отпускаете оружие.
* На одном оружии может быть активирован только один Алый обряд одновременно.
* Другие существа не могут получить преимущества вашего Алого обряда.
* Клеймо порицания ограничено одним планом существования.
* Клеймо привязи больше не ограничено конкретными способами телепортации или перемещения на другой план.
* Проклятия крови:
** Проклятие крови: Связывание действует на существ Большого или меньшего размера.
** Усиление Проклятия крови: Беспокойство не ограничено количеством использований.
** Проклятие крови: Одурь работает на любые особенности, требующие концентрацию, а не только на заклинания.
** Проклятие крови: Душегуб дополнительно дает сопротивление ко всем видам урона.
* [[Орден Оборотней]]:
** Вы автоматически проваливаете спасбросок против Кровожадности гибридной формы, если концентрируетесь на заклинании.
* [[Орден Мутантов]]:
** Высшая мутация используется бонусным действием вместо реакции.
* [[Орден Нечестивых душ]]
** В потусторонние покровители добавлены Владыка глубин и Гений. Добавлены соответствующие опции в умения подкласса 3, 7 и 15 уровней.
** Усилены Ритуальные фокусировки Великого Древнего и Исчадия.
** Заменена Ритуальная фокусировка Нежити.
** Взломанный арканум нежити заменён на //разговор с мёртвыми//.
---
!!!Игровой процесс
[[Падение]]:
* Когда вы падаете с большой высоты, то вы немедленно падаете на ~~150~~ ''100'' м в этот ход.
* Вы не получаете урон от падения, если упали с высоты, не превышающей вашу дистанцию прыжка в высоту с разбега.
* удалено правило "Стресс"
* удалено правило "Психозы"
* удалено правило "Лагерная деятельность"
* удалены упоминания Стресса и Психозов из правил [[Отдыха|Отдых]]
* изменения [[основной деятельности|3. Выберите основную деятельность]] на [[Продолжительном отдыхе|Продолжительный отдых]]:
** [[Бойцовский турнир|Бойцовский турнир]]: "Персонаж совершает три проверки: Сила (Атлетика), Ловкость (Акробатика) и ~~особую проверку Телосложения с бонусом, равным результату броска наибольшей Кости Хитов персонажа (Кость при этом не тратится)~~ ''Телосложение (Выносливость)''."
* изменено правило [[Очки героя]]:
** изменён способ получения очков героя: "Вы можете Заявить о неудаче, чтобы получить Очко героя. Для этого вы должны озвучить своё намерение Мастеру и дать помеху на свой бросок атаки, спасбросок или проверку характеристик (у броска не должно быть помех от других источников), основанные на ваших особенностях личности (чертах характера, идеалах, привязанностях, слабостях и т.п.), либо принять решение, создающее для вас нежелательное препятствие."
** удалены опции //''"В этот раз наверняка."''// и //''"Я с тобой ещё не закончил!"''//
** изменена опция //''"Даже не почувствовал!"''//: "''Пока вы дееспособны'', вы можете ''в свой ход'' потратить одну Кость Хитов'', чтобы восстановить хиты. Совершите бросок кости, добавьте модификатор Телосложения и восстановите хиты в количестве, равном полученному значению (минимум 1).''"
* изменения [[Рас|Расы]]:
** изменены "Призрачные видения" [[Призрачных полуросликов|Призрачный полурослик]]: "~~Вы можете видеть призраков и монстров из других миров. Ваше зрение в радиусе 10 м от вас распространяется на Эфирный План, Страну Фей и Царство Теней. Вы можете легко различать эти планы, так как объекты и существа, находящиеся на них, выглядят для вас прозрачными. Кроме того вы можете взаимодействовать с объектом или существом с плана, который вы можете видеть, в течении одной минуты. Эта особенность не позволяет вам перемещаться или перемещать что-либо между планами, и вы не можете использовать её снова, пока не завершите продолжительный отдых.~~ ''Вы можете действием открыть своё сознание для видений из других миров. В течение 10 минут ваше зрение простирается на один из планов по вашему выбору: Эфирный План, Страну Фей или Царство Теней. Объекты и существа, находящиеся на них, выглядят для вас полупрозрачными. Вы не можете использовать эту особенность повторно, пока не завершите короткий или продолжительный отдых.''"
* изменения [[Колдуна|Колдун]]:
** изменения [[Таинственных воззваний|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1448348621]]:
*** "Мистический взор": "~~Вы можете ощущать присутствие магии в пределах линии обзора и не дальше, чем в 6 м от вас. Если вы почувствовали за счёт этого заклинания присутствие магии, вы можете действием увидеть слабую ауру вокруг видимого существа или предмета, несущего на себе магию, а также узнать школу этой магии, если она есть.~~ ''Вы можете действием открыть своё сознание для обнаружения присутствия магии в пределах линии обзора и не дальше, чем в 40 м от вас. В течение 1 минуты вы можете видеть слабую ауру вокруг существа или предмета, несущего на себе магию, кроме того вам известна школа этой магии, если она есть. Использовав это воззвание, вы не сможете использовать его снова, пока не завершите короткий или продолжительный отдых.''"
*** "Обратный взор": Требование: ~~5 уровень~~; "Вас не могут застать врасплох, пока вы в сознании. Кроме того, ~~если существо в пределах 6 м от вас смотрит на вас, вы осознаёте его местоположение~~ ''вы можете действием открыть своё сознание для обнаружения наблюдающих за вами существ. До конца своего следующего хода вы знаете местоположение всех смотрящих на вас существ в пределах 12 м от вас, а также их отношение к вам: союзное, нейтральное или враждебное. Использовав это воззвание, вы не сможете использовать его снова, пока не завершите короткий или продолжительный отдых.''"
*** "Призрачный взор": "Вы можете действием получить возможность видеть сквозь твердые объекты в радиусе 6 м. В этом диапазоне у вас есть ночное зрение, если у вас его ещё нет. Это особое зрение длится 1 минуту ~~или до тех пор, пока ваша концентрация не закончится (как если бы вы концентрировались на заклинании)~~. За это время вы воспринимаете объекты как призрачные, прозрачные изображения. Использовав это воззвание, вы не сможете использовать его снова, пока не завершите короткий или продолжительный отдых."
* изменения ''Черт'':
** удалена черта "Чистый разумом" (двойная концентрация)
* изменены [[инструменты повара|Инструменты повара]], чтобы соответствовать черте Шеф из Таши: "Как часть короткого отдыха вы можете приготовить вкусное блюдо, которое поможет вашим компаньонам восстановить силы. ~~Вы и до пяти существ на ваш выбор восстанавливают по 1 дополнительному хиту за каждую потраченную во время короткого отдыха Кость Хитов, при условии, что у вас есть доступ к вашим инструментам повара и достаточно еды.~~ ''Этой еды хватает на количество существ равное 4 + ваш бонус мастерства. После завершения короткого отдыха, любое существо, съевшее особое блюдо и потратившее Кость Хитов на восстановление хитов, единожды восстаналивает дополнительно 1к4 хитов.''
* изменения ''Заклинаний'':
** //Рассеивание добра и зла//: добавлена опция "''Помилование''. Вы действием касаетесь существа, мировоззрение которого было изменено. Существо должно преуспеть в спасброске Харизмы, иначе оно вернёт своё изначальное мировоззрение."
* добавлено правило [[Пути престижа]]:
** добавлены [[Пути престижа]] (без перевода): [[Арканный путник]], [[Астральный магистр]], [[Инквизитор]], [[Криомант]], [[Маг крови]], [[Мастер драконьего духа]], [[Мастер кинжала]], [[Мастер шпионажа]], [[Рыцарь Чаши]]
---
!!!Игровой процесс
[[Продолжительный отдых]]:
* расширена основная деятельность [[Обучение]]
* добавлено правило "[[Еда и вода"|Грузоподъемность и нагрузка]]
* изменения [[оружия|Оружие]]:
** [[Бонус владения клинковым оружием|По принципу действия]] изменён с "Владение клинковым оружием позволяет реакцией принять парирующую стойку, которая дает бонус +1 КД от рукопашных атак до начала вашего следующего хода или пока вы не потеряете это оружие." на "Владение клинковым оружием позволяет бонусным действием совершить одну рукопашную атаку этим оружием, если вы в этом ходу совершили действие Уклонение."
** [[Бонус владения стрелковым оружием|По принципу действия]] изменён с "Владение стрелковым оружием позволяет получить преимущество на первую в ход атаку этим оружием, если вы не перемещались с начала своего прошлого хода." на "Владение стрелковым оружием позволяет вам в начале своего хода снизить свою скорость до нуля и получить преимущество на первую в этот ход дальнобойную атаку этим оружием."
** исправлено отсутствие дальности у бумеранга (8 м) и дварфского самострела (25 м).
** необходимый разбег для использования особого свойства кавалерийского копья и эстока увеличен с 2 до 4 м.
* изменения [[черт|Черты]]:
** "Использование двух оружий":
*** добавлено свойство "Вы можете совершить дополнительную атаку оружием неосновной рукой частью действия Атака, а не бонусным действием, если вы совершаете действие Атака и атакуете оружием, удерживаемым в основной руке"
*** добавлено требование Ловкость 13 или выше
** "Мастер владения древковым оружием":
*** удалено свойство "После того как вы попадаете провоцированной атакой, по цели входящей в пределы вашей зоны досягаемости, вы можете передвинуться на 1 м не провоцируя от нее атаку."
*** добавлено свойство "Вы игнорируете помеху от свойства "длинное" при совершении особой атаки Толкание древковым оружием."
*** добавлено свойство "В свой ход вы можете бонусным действием подготовиться к атаке противника, уперев тупой конец оружия в землю. Если существо перемещается как минимум 3 м по прямой к вам, вы можете совершить провоцированную атаку по нему, когда оно войдёт в пределы вышей досягаемости. При попадании эта атака наносит дополнительную кость урона вашего оружия, а цель должна в спасброске Силы со Сложностью 8 + бонус Мастерства + модификатор Силы или будет сбита с ног. Если цель больше вас, она совершает спасбросок с преимуществом. Если цель больше вас на две категории, она автоматически преуспевает в спасброске."
** "Мастер владения контактным оружием":
*** удалено свойство "Вы можете бонусным действием совершить одну атаку контактным оружием, по захваченной вами цели."
*** добавлено свойство "Когда успешно берёте цель в захват или высвобождаетесь из захвата, вы можете бонусным действием совершить одну атаку по ней контактным оружием."
*** добавлено свойство "Когда схваченное вами существо проваливает попытку высвобождения из захвата, вы можете реакцией совершить одну атаку по ней контактным оружием."
** "Мастер владения луками":
*** удалено свойство "Нахождение в 1 м от враждебного существа не накладывает помеху к вашим броскам дальнобойной атаки луками."
*** добавлено свойство "Сильный ветер не накладывает помеху на ваши дальнобойные атаки луком."
** "Мастер владения метательным оружием":
*** добавлено свойство "Эффективная дальность, используемого вами метательного оружия, увеличивается в полтора раза."
*** изменено свойство "Вы можете совершить дальнобойную провоцированную атаку, если враждебное существо, которое вы видите, перемещается в пределах ~~вашей досягаемости~~ ''эффективной дальности вашего оружия.''"
** "Мастер владения цепами":
*** добавлено свойство "Вы не получаете помеху, если цель держит предмет как минимум двумя руками, при совершении особой атаки Обезоруживание цепом."
* расовым особенностям и чертам, предоставляющим возможность сотворять заклинания, добавлено следующее уточнение: "Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше."
** расы и подрасы, которых коснулось изменение: [[Воплощающий мудрость ааракокра]], [[Гит]], [[Глубинный гном]], [[Дуэргар]], [[Дженази]], [[Кенку савана]], [[Тифлинг]], [[Тритон]], [[Фирболг]], [[Чистокровный юань-ти]], [[Бледный эльф]], [[Тёмный эльф (дроу)]]
** черты, которых коснулось изменение: Затронутый Страной Фей, Затронутый Царством Теней, Начинающий изобретатель, Посвящённый в магию, Арканист, Выживший, Натуралист, Теолог, Высшая магия дроу, Друг животных, Магия лесных эльфов, Магия свирфнеблинов, Магия тритонов, Раскрытая псионика, Телепортация фей
---
Изменения [[Классов|Классы]]:
* [[Колдун]]:
** [[Древний дракон]]:
*** Стихийный аспект: "Кроме того, вы можете действием ''магическим образом'' выпустить призрачные драконьи крылья..."
*** Дыхание древнего: "Действием вы можете ''магическим образом'' выдохнуть стихийную энергию..."
* [[Следопыт]]:
** подклассу [[Охотник]] добавлено умение 3 уровня Магия охотника
** подклассу [[Повелитель зверей]] добавлено умение 3 уровня Магия повелителя зверей
---
!!!Подклассы
* добавлены подклассы из Player's Handbook:
** [[Следопыт]]:
*** [[Охотник]]
* добавлены подклассы из Xanathar's Guide to Everything:
** [[Воин]]:
*** [[Кавалерист]]
*** [[Самурай]]
** [[Волшебник]]:
*** [[Военная магия]]
** [[Друид]]:
*** [[Круг Пастыря]]
*** [[Круг Снов]]
** [[Жрец]]
*** [[Домен Кузни]]
*** [[Домен Упокоения]]
** [[Колдун]]
*** [[Ведьмовской клинок]]
*** [[Небожитель]]
!!!Классы
[[Волшебник]]:
* [[Школа Прорицания]]:
** уточнено умение Знамение: "Один раз в ход вы можете заменить ''результат на кости'' любого броска атаки, спасброска, или проверки характеристик, совершённой вами или другим видимым вами существом, одним из этих бросков Знамения."
[[Чародей]]:
* Метамагия:
** [[Продолжительное заклинание]]: "При сотворении заклинания с длительностью 1 минута или более вы можете потратить 1 очко чародейства, чтобы удвоить его длительность, вплоть до максимального в ~~24 часа~~ ''10 дней''."
---
!!!Экипировка
* Упрощено правило [[Размер оружия|Размер]]:
** Кость урона оружия изменяется с его размером:
*** Маленькие и Средние существа используют оружие одной размерной категории, а его кость урона указана в колонке Урон таблицы Оружие одинакова для обоих случаев.
*** Кость урона Крохотного оружия уменьшается на 1к4, по сравнению с его Маленькой/Средней версией (урон не может быть меньше 1).
*** Кость урона Большого оружия увеличивается на 1к4, по сравнению с его Маленькой/Средней версией.
*** Кость урона Огромного оружия увеличивается на 2к4, по сравнению с его Маленькой/Средней версией.
* [[Доспехи и щиты]]:
** возвращён чешуйчатый средний доспех, как дешёвая, но тяжёлая альтернатива бригантине и кирасе, а также в качестве составляющей в рецептах ремесла
---
!!!Ремесло
* добавлен подраздел [[Ремесла|Ремесло]] - [[Зачаровывание]]
* [[Алхимия]]:
** добавлен //банный отвар// (обычный отвар)
* [[Ядоварение]]:
** добавлена //Бездна во флаконе// (очень редкий поглощаемый яд)
** уточнено, что яды наносятся действием
---
!!!Заклинания
* добавлены заклинания из Kibbles Compendium Of Craft And Creation:
** //силовой снаряд// (заговор)
** //ищущий снаряд// (1 уровень)
** //вложение удачи// (2 уровень)
** //танцующая волна// (2 уровень)
** //вложенная компетентность// (5 уровень)
** //пронзающий вопль// (5 уровень)
** //ударная волна// (5 уровень)
* заклинанию //покров духов// поправлен последний абзац
!!!Классы
* в Базовой экипировке [[Жреца|Жрец]], [[Изобретателя|Изобретатель]], [[Кровавого охотника|Кровавый охотник]] и [[Следопыта|Следопыт]] кольчужная рубаха заменена на чешуйчатый доспех
---
!!!Пути престижа:
* добавлены [[Пути престижа]] (без перевода): [[Вороний жнец]], [[Госпитальер]], [[Дварфский защитник]], [[Дредноут]], [[Дубовый щит]], [[Исказитель плоти]], [[Лунный преследователь]], [[Лунокровный]], [[Мастер кровавого когтя]], [[Мейстер-часовщик]], [[Одичалый повелитель зверей]], [[Повелитель стаи]], [[Последователь гнева]], [[Тёмный налётчик]], [[Фанатик рунного огня]], [[Чемпион-гладиатор]]
* в правило [[Мультиклассирование]] добавлено пояснение по Магии договора [[Кровавого охотника|Кровавый охотник]]
* умению Боевой стиль [[Воина|Воин]], [[Кровавого охотника|Кровавый охотник]], [[Паладина|Паладин]] и [[Следопыта|Следопыт]] добавлено свойство: "Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный <этому классу>."
---
* изменения [[Кровавого охотника|Кровавый охотник]]:
** переведены [[Классовые умения кровавых охотников]]
** добавлены [[Ордены кровавых охотников]]:
*** [[Орден Истребителей призраков]], [[Орден Мутантов]], [[Орден Нечестивых душ]] и [[Орден Оборотней]]
---
* добавлены подклассы из Tasha's Cauldron of Everything
** [[Монах]]:
*** [[Практика Астрального тела]]
*** [[Практика Милосердия]]
** [[Паладин]]:
*** [[Клятва Славы]]
*** [[Клятва Смотрителей]]
** [[Плут]]:
*** [[Клинок души]]
*** [[Фантом]]
** [[Следопыт]]:
*** [[Фейский скиталец]]
*** [[Хранитель роя]]
** [[Чародей]]:
*** [[Аберрантный разум]]
*** [[Механическая душа]]
!!!Ремесло
* добавлен подраздел [[Ремесла|Ремесло]] - [[Алхимия|Алхимия]]
* изменения [[Снаряжения|Снаряжение]], связанные с [[Алхимией|Алхимия]]:
** удалены солидол, спирт, фосфор и ядовитый дым
** алхимический огонь и фосфорная кислота заменены более дорогими и эффективными аналогами: больше урона и возможность использовать в качестве метательного оружия
** мухоловка дороже (85 см > ''140 см''), но полностью копирует эффект //паутины// на 1 минуту
** дымовой шашке увеличены цена, радиус и длительность
** укрепляющий порошок заменен зельем здоровья: тот же эффект, понижена цена, убрано ограничение на 1 раз в прод. отдых
** алхимическому труту, зелью кошачего глаза, зелью лазания, маслу волшебных камней и маслу света понижена цена
** зелью подпрыгивания, зелью храбрости и световому шарику повышена цена
!!!Пути престижа:
* добавлены (без перевода): [[Алый корсар]], [[Кулак тени солнца]], [[Мастер оружия]], [[Повелитель шторма]], [[Резчик знаков]], [[Снайпер]], [[Технокузнец]], [[Ярость бури]]
!!!Ремесло
* добавлен подраздел [[Ремесла|Ремесло]] - [[Ядоварение]]
* добавлен подраздел [[Ремесла|Ремесло]] - [[Кузнечное дело]]
* изменения, связанные с [[Кузнечным делом|Кузнечное дело]]:
** подгонка доспехов под крылья у НИП-ремесленников требует в 2 раза меньше времени и денег
** цепям понижен вес до 1 кг за 1 м
** множественные незначительные изменения ценников Снаряжения
** правило Особые материалы подвергнуто реворку и поглощено [[Кузнечным делом|Кузнечное дело]] (особые шкуры и древесина по возможности будут перенесены в другие виды [[Ремесла|Ремесло]])
** правило Улучшение экипировки заменено модификаторами и улучшениями [[Кузнечного дела|Кузнечное дело]]
!!!Классы
[[Друид]]:
* добавлен [[Круг Кошмаров]]
[[Плут]]:
* [[Вор]]:
** в Быстрые руки добавлено: ... ''или же совершить одну метательную атаку оружием''.
[[Псион]]:
* добавлены [[Описание псионов]], [[Классовые умения псионов]]
* добавлены Псионические таланты в БД
* добавлены Псионические дисциплины (3/9): [[Проецирование]], [[Телекинез]], [[Усовершенствование]]
* добавлены Псионический архетипы (3/7): [[Необузданный разум]], [[Трансцендентный разум]], [[Формирующий разум]]
[[Следопыт]]:
* добавлен [[Специалист]]
[[Чародей]]:
* добавлено [[Сердце эфира]]
---
!!!Расы
Изменения, связанные с новой книгой Mordenkainen Presents: Monsters of the Multiverse:
* переработано Наследие фей: "Вы совершает спасброски с целью избежания или окончания состояния [[Очарованный]] на себе с преимуществом."
* упразднен термин "природное оружие"
[[Ааракокра]]:
* Скорость: ~~5~~ ''6'' м
* Когти: урон ~~1к4~~ ''1к6'' + мод. Силы
* [[Храбрый сердцем ааракокра]] Воздушное превосходство: перезарядка изменена на БМ/ПО; дополнительный урон равен ~~уровню~~ ''бонусу мастерства''
[[Аасимар]]:
* Размер: Средний ''или Маленький''
* Исцеляющие руки: восстанавливает количество хитов равное ~~вашему уровню~~ ''Xк4, где Х - ваш бонус мастерства''
* [[Аасимар-защитник]] Сияющая душа: ~~действием~~ -> ''бонусным действием''; скорость полета равна ~~6 м~~ ''скорости ходьбы''; дополнительный урон равен ~~уровню~~ ''бонусу мастерства''
* [[Аасимар-каратель]] Испускание сияния: ~~действием~~ -> ''бонусным действием''; больше не наносит урон себе; урон равен ~~половине вашего уровня~~ ''бонусу мастерства''
* [[Павший аасимар]] Саван смерти: ~~действием~~ -> ''бонусным действием''; дополнительный урон равен ~~уровню~~ ''бонусу мастерства''
[[Гит]]:
* [[Гитцераи]] Ментальная дисциплина: обновлена формулировка
[[Гном]]:
* Скорость: ~~5~~ ''6'' м
* Гномья хитрость: Вы совершаете с преимуществом спасброски Интеллекта, Мудрости и Харизмы от заклинаний~~ и прочих магических эффектов~~.
* [[Глубинный гном]] Каменный камуфляж заменен новой версией - Камуфляжем свирфнеблинов; Маска глубин заменена новой версий - Даром свирфнеблина
[[Гоблин]]:
* добавлено Наследие фей
* Разъяренная мелкота: перезарядка изменена на БМ/ПО, дополнительный урон равен ~~уровню~~ ''бонусу мастерства''
[[Голиаф]]
* Выносливость камня: перезарядка изменена на БМ/ПО
[[Дварф]]:
* Скорость: ~~5~~ ''6'' м
* Дварфская устойчивость: обновлена формулировка
* [[Дуэргар]] Дуэргарская устойчивость заменена новой версией - Псионическая стойкость
[[Дженази]]:
* Размер: Средний ''или Маленький''
* [[Дженази воды]] Призыв волны: добавлено //сотворение или уничтожение воды// на 3 уровне
* [[Дженази воздуха]] Скорость: ~~6~~ ''7'' м; Объятия ветра: удалена часть про замедление падения; Порывистый ветер: добавлено //падение пёрышком// на 3 уровне
* [[Дженази земли]] Движение земли: удалено требование к местности для //бесследного передвижения//; Твёрдая поступь ограничена проверками характеристик и спасбросками ''Силы''
* [[Дженази огня]] Пылающее сердце: добавлены //огненные ладони// на 3 уровне
[[Кенку]]:
* добавлена Память кенку
* Языки: ... ~~вы можете говорить только используя способность Имитирование~~.
* [[Кенку покражи]] Мастер копирования: обновлена формулировка
[[Кованый]]:
* Искусственная устойчивость: обновлена формулировка сопротивления к яду
[[Людоящер]]:
* [[Людоящер-аспид]] Ядовитая пасть: урон ''1к6 + мод. Силы ядом'', больше не растет с уровнем
* [[Людоящер-острозуб]] Голодная пасть: перезарядка изменена на БМ/ПО; Зубы и когти: урон ~~1к4~~ ''1к6'' + мод. Силы, больше не растет с уровнем; Природная интуиция: в выбор добавлена Медицина, дает владение двумя навыками, вместо одного
* [[Людоящер-чернобрюх]] Зубы и когти: урон когтей ~~1к4~~ ''1к6'' + мод. Силы, урон зубов ~~1к6~~ ''1к8'' + мод. Силы, больше не растет с уровнем
[[Медвежатник]]:
* добавлено Наследие фей
* Внезапное нападение: усилено, упрощена формулировка
* Скрытность: добавлено "Кроме того, вы можете перемещаться через пространство, достаточное для существа размером на одну категорию меньше вашего, не [[протискиваясь|Протискивание в меньшее пространство]]."
[[Орк]]:
* Агрессивный заменен новой версией - Прилив адреналина
* удален Угрожающий вид
* добавлена Непоколебимая стойкость
* [[Горный орк]] Захват с разбега: удален дополнительный урон и падение при провале
* [[Серый орк]] Кровавое бешенство: перезарядка изменена на БМ/ПО
[[Перевёртыш]]:
* Инстинкты перевёртыша: в выбор добавлено Выступление
[[Перерождённый]]:
* Природа бессмертного: обновлена формулировка сопротивления к яду
[[Полурослик]]:
* Скорость: ~~5~~ ''6'' м
* Храбрость: обновлена формулировка
* [[Коренастый полурослик]] Устойчивость коренастых: обновлена формулировка
* [[Призрачный полурослик]] Призрачные видения: перезарядка изменена на БМ/ПО
[[Табакси]]:
* Размер: Средний ''или Маленький''
* Кошачьи когти: урон ~~1к4~~ ''1к6'' + мод. Силы
[[Тортл]]:
* Размер: Средний ''или Маленький''
* Когти: урон ~~1к4~~ ''1к6'' + мод. Силы
* Инстинкт выживания заменен новой версией - Природная интуиция
[[Тритон]]:
* Посланник моря действует на Зверей, Монстров и Элементалей со скоростью плавания
[[Фирболг]]:
* Незримая поступь: перезарядка изменена на БМ/ПО
[[Хобгоблин]]:
* добавлено Наследие фей
* добавлен Фейский дар
* Удача многих: перезарядка изменена на БМ/ПО, максимальный бонус ~~+5~~ ''+3''
[[Человек]]:
* Решительность: перезарядка изменена на БМ/ПО
* [[Полудварф]] Дварфская устойчивость: обновлена формулировка
* [[Полуэльф]] Наследие фей заменено новой версией
[[Шифтер]]:
* Языки: добавлен один на выбор
* Обращение: перезарядка изменена на БМ/ПО, временные хиты = ~~уровень + мод. ТЕЛ~~ ''БМ*2''
* [[Длиннозубый шифтер]] Особенность обращения: можно кусать тем же бонусным, которым обращаетесь
[[Эльф]]:
* Наследие фей заменено новой версией
* усилен Транс
* [[Морской эльф]] Морские побратимы: ограничено плавающими Зверьми
* [[Шадар-кай]] Благословение Королевы Воронов: перезарядка изменена на БМ/ПО
* [[Эладрин]] Фейский шаг: перезарядка изменена на БМ/ПО; Фейский шаг (Лето): урона равен ~~мод. Харизмы~~ ''бонусу мастерства''; добавлена особенность Сезоны
[[Юань-ти]]:
* "Чистокровный" убрано из названия
* Размер: Средний ''или Маленький''
* Адаптивное сопротивление: Когда вы становитесь целью заклинания~~ или магического эффекта~~; убрана перезарядка
* Змеиная устойчивость: обновлена формулировка
---
!!!Черты
* Заточенные когти: ~~Вы можете использовать 1к6 вместо обычной кости урона ваших когтей.~~ ''Критический диапазон ваших безоружных атак когтями увеличивается на 1.''
* Убийца магов: Вы совершаете с преимуществом спасброски от заклинаний~~ и прочих магических эффектов~~, сотворенных существами, находящимися в пределах 6 м от вас.
---
!!!Экипировка
[[Оружие]]:
* Метательный нож: ~~Скрытное~~
---
!!!Заклинания
Добавлены заклинания из Kibbles Compendium Of Craft And Creation, которые прилагаются к [[Псиону|Псион]]:
* //раскрытый потенциал// (1 уровень)
* //звёздная пыль// (2 уровень)
* //психическая осушка// (2 уровень)
* //швырок// (2 уровень)
* //вихревой взрыв// (3 уровень)
* //мутация// (3 уровень)
* //эфирное копьё// (3 уровень)
* //орбитальные камни// (4 уровень)
* //кислотный дождь// (5 уровень)
* //раздвоение// (5 уровень)
* //расщелина// (5 уровень)
* //взрыв разума// (6 уровень)
* //луч уничтожения// (6 уровень)
* добавлено правило [[Настройка на магический предмет]] из Руководства Мастера
---
* изменения [[Волшебника|Волшебник]]:
** добавлены [[Магические традиции]]:
*** [[Орден Писарей]] и [[Песнь клинка]] из Tasha's Cauldron of Everything
* изменения [[Друида|Друид]]:
** добавлены [[Круги друидов]]:
*** [[Круг Дикого огня]] и [[Круг Звёзд]] из Tasha's Cauldron of Everything
* изменения [[Изобретателя|Изобретатель]]:
** переведены [[Классовые умения изобретателей]]
** переведены [[Примочки изобретателя|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1587747735]]
** добавлены [[Специализации изобретателей]]:
*** [[Алхимик]], [[Артиллерист]], [[Боевой кузнец]] и [[Бронник]] из Tasha's Cauldron of Everything
* изменения [[Колдуна|Колдун]]:
** добавлены [[Потусторонние покровители]]:
*** [[Владыка глубин]] и [[Гений]] из Tasha's Cauldron of Everything
Во время продолжительного отдыха у вас есть возможность совершить интересующее вас полезное действие. Это будет вашей основной деятельностью на эту неделю, тем на что вы будете тратить примерно половину вашего дня, оставляя четверть на сон и четверть на мелкую деятельность - покупки, еду, общение и т.д.
У вас достаточно времени только на одну основную деятельность в неделю. Сделайте выбор из предложенных ниже вариантов или обсудите ваш вариант с Мастером.
!!!Результаты деятельности
В описании каждого вида деятельности указаны возможные результаты.
Большая часть такой деятельности занимает неделю (7 дней). В некоторых случаях требуются дни или месяцы (30 дней). Персонаж должен тратить каждый день не менее 8 часов на деятельность, чтобы рассчитывать на результат.
Дни деятельности не обязательно должны идти подряд – вы можете растянуть их на более длительный срок, чем предполагается, но этот срок не должен превышать требуемое время больше, чем в два раза.
!!!Осложнения
Ваша деятельность может с небольшой вероятностью привести к некоторым осложнениям - вы можете пораниться во время работы, оскорбить местного лорда во время кутежа, повредить бесценную книгу во время исследования.
В конце каждой недели продолжительного отдыха совершите бросок к10. При выпадении «1» что-то неудачное случается в результате вашей деятельности.
!!!Примеры деятельности во время простоя
Эти виды деятельности подходят любому персонажу, который может их себе позволить. Мастер может ограничить доступность той или иной деятельности для персонажей.
<<tabs "[tag[Основная деятельность]nsort[title]]" " " "$:/state/tab3" "tc-vertical">>
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFG0lEQVRIiXVWa2wUVRT+ZnbaboHOtktYWiyU59IHgrYUsKAVwkPaqv3BwxKJxhAUxTRG5aHRUH/U8INfgjGo/ECiUojSQBExkQQooBQkbEvLu4VCy7Z0u1t2251771x/3JmdmQKT3L333Md3zvnuueeshAP/4GkfX5qeAmDhgYe08mCEvdCo6TkeCZ4wR3h+stSxQlXOrhytHAJwAqo//jQc6UlK+NJ0ZYDxd6ra49sa7mlZiFHbqg5wGeBciCMkVGa7g/smpW4f6ZJ2QvVrjyupO2dCi99l3um197S6z2/EZiKmG2C6sUUS+0wF5rzOgREu1E5Pu7x1fOpqqP42p5JfGwEIy3jZ6OK81uixtlsxrwDlFohdTigxFJoiOBZMHxU6VZC+HKo/QZEMnQOMgpeNzp3fNvBX2/VHXlAGUAYwW88YoBOAUUBnojfnGQUYASjF6ZZQxrJA35+IXMu1lFAGXuFL2n53cP+Z1gGPODCs6QYI04VMBSAoMcAN2RgfD/R6dtyO1CFyLUkoYRTdcVa9JfBwpgAwLKTU0SrGpeDIHC8uLcrET4UZQIZLrBFqKSbW/k+a7j/bPUSrAUDi4avuyiuhjvpAyJfgm5uBIDg/Mj8T5TkqNKrjflTDRI8bGmVIOd4O9AwBnFl3xa3AWPV8ZnB/YVaODKCi/ka/L2GNyS/TAEKAVKA8R8XlnhhS9jVj0m9XsfFsJ5IVFxryvADVLOoIsSgkBHVtQR84f1X+vTtajv5BixpCxEEieM4f5cLlnii+anmQmNt1JwQAyB6ZZNyHTYFJISVA3wDqO8NlyrHeWBEYGeaq5fKV23HMuvXQopDraCyZAgBo6X0EEM22ZpzVLfnEg8hs5XpMmwBCHFxa8e9U/MvCKXijIAsAcOZOH9acuiksf5KBRmuPDY2XFcY8glfTXU1YR+xzBh1cR6A7DACYnaWitsBn3InmuIvEGUag6LpHSdJZBISo1ks2ostMJ+aYc1QdbRbrGSMQf7sEWxdMw2dNt4FB+rjnBpbEWESeluK6Kyw1PRg+JoCa7HyAwX4caukEAGzKG/t0zwnFZLfSKS8aM/K8tUid7hOC3S9PBV9fik2F2baoI8gfI5zvjQ6JaCIU0GzGMUH9S2M9/8qvTfAeRVqy0wrTYkqw/vxNAMDmkmmAxw0kS9hSnIMZz3ihaQR7WjttnlA43ozHjfLJY48qkKTD62aMC/7wd4sP3Bl+4BzoCuHghRtYUTQVvHp5In1rGsG2YxeB/kfO1M8BcFECNhRO6oEsHXbVRMfQhhXzsONS+1JEh4wMq4teZwBnONB8F119YcQH4xiIxXG8pR3FB8/gdHOHsce2X9dFS0tF/aoFNWm+GSclvPcF+PY3k3ZevNn04f7GmeKQJKzCcM/sj84ejY/XmW/XLg5smJtbBNVPZDAN0sd7yMbCKavXluaFRf3QbOnBzMxmtrWXATPFM8f8uiWF4Q1zc1dB9ROR6o08I1V/17a3rHhxVWl+0JHyGXmyAkoscEKN4kaxdtFzwe9fL1liL8GyHUT6YGfTz5Ulxd+sWXgRo1KcoJqzvljV0yhkqhu73lr2396VpXOg+s/D9kmoet8IDA7Ioue7P1LuhQbWfX0y8OWuc61ZCPbDKuTD7saXjo3z8rs2l86qyfaqP0L12//aGEpWvutMijYgvudTN4CKP650lJ++013UFYnlKLKkEp1HxqWldrw4IfPCKwUTGwAcgeofGg5ufv8DHmu2bXyvrKAAAAAASUVORK5CYII=
!!!Классы
* умению Тревожные слова [[Коллегии Красноречия|Коллегия Красноречия]] добавлена строка: "Существо не подвержено этому умению, если не может слышать вас, или обладает иммунитетом к очарованию."
* умение Призрачная походка [[Фантома|Фантом]]: "Вы также можете перемещаться сквозь других существ и предметы, как если бы они были труднопроходимой местностью. ~~но вы получите 1к10 урона силовым полем,~~ Если вы оканчивате ход внутри существа или объекта,'' вы выталкиваетесь в ближайшее незанятое пространство и получаете 1к10 урона силовым полем за каждый пройденный метр''."
* умение Возвышенный чемпион [[Клятвы Короны|Клятва Короны]] используется бонусным действием, а не действием, и может быть использовано повторно за ячейку 5 уровня.
---
!!!Расы
* добавлены [[Фэйри]]
* добавлены [[Харенгоны|Харенгон]]
* скорость полёта [[Ааракокра]] и [[Странствующих драконорождённых|Странствующий драконорождённый]] теперь равна скорости ходьбы (вместо 6 м)
---
!!!Множественные фиксы формулировок. Наиболее значимые:
* в опциях, понижающих дробящий, колющий и рубящий урон от немагического оружия, "оружие" заменено на "атаки"
* заклинание //свобода перемещения//: "Пока заклинание активно, на перемещения цели не влияет труднопроходимая местность. ''Немагические оковы, такие как кандалы или захват другого существа, а также'' заклинания и прочие магические эффекты не могут ни уменьшить её скорость, ни сделать её парализованной или опутанной. ~~Цель может также потратить 1 м перемещения, чтобы автоматически высвободиться из немагических оков, таких как кандалы или захват другого существа. ~~"
<<<
//[[Схваченный]] и [[Опутанный]] снижают скорость цели до 0, и у неё нет этого 1 м, чтобы высвободиться. Эта часть заклинания по правилам не работала. Теперь же, цель всё ещё может быть схвачена, но может окончить захват, выйдя из досягаемости хватающего.//
<<<
* заклинание //двойник//: "Это заклинание выращивает инертную копию живого ''Маленького или Среднего'' существа..."
---
!!!Подклассы
* добавлены подклассы из Player's Handbook:
** [[Друид]]:
*** [[Круг Земли]]
** [[Жрец]]:
*** [[Домен Войны]]
*** [[Домен Природы]]
*** [[Домен Света]]
* добавлены подклассы из Xanathar's Guide to Everything:
** [[Монах]]:
*** [[Практика Кенсея]]
*** [[Практика Пьяного мастера]]
** [[Паладин]]:
*** [[Клятва Искупления]]
*** [[Клятва Покорения]]
**** умение Непобедимый покоритель используется бонусным действием, а не действием, и может быть использовано повторно за ячейку 5 уровня.
** [[Плут]]:
*** [[Бретёр]]
* добавлены подклассы из Dungeon Master's Guide:
** [[Жрец]]:
*** [[Домен Смерти]]
** [[Паладин]]:
*** [[Клятвопреступник]]
**** Аура ненависти теперь работает только на союзные исчадия и нежить
**** формулировка умения Повелитель ужаса переписана в соответствии с аналогичными умениями новых подклассов. Теперь оно используется бонусным действием, а не действием, и может быть использовано повторно за ячейку 5 уровня.
**** изменено ограничение варианта Божественного канала Контроль над нежитью с ПО < уровень паладина, на ПО < половины уровня паладина. Длительность увеличена с 24 часов до 10 дней.
<<<
//Иметь питомца, который сильнее тебя самого и любого твоего сопартийца, за бож. канал - это несколько перебор. Как пример, начиная с 6 уровня можно было контролировать порождения вампиров, баньши или ревенантов.//
<<<
Во время продолжительного отдыха группа собирает три интересных слуха, пока персонажи заняты своими делами - возможные зацепки для нового приключения, детали о текущих или прошлых событиях, или даже дезинформацию.
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAE20lEQVRIiXVVfWwURRT/7bLQD657R6uFYqEl6LXSD1OwooBWTClSaiwGSkATEsUoSlITrUpEo+EjIcREAiKR2JhABApBCaK1GohAKAho5ATOFoXyIfWwtN3S9u7myz9m9nauDZvMzuzMe7/fe2/fe2Ng7ync7RFVgRQAs/d20dp9DnvsZ8LzAgb8dzh6Z44yOhbaVuuiLOsbAEdgB2N3wzGGkwiIqjFWHxMvLrkS+/DQjVgOBhkghCai1sIA0g3U5qZEdk5K3zB6hLEFdjA+nKTpZAIcAhBPZxasvxFreu/SQCkGWNIZhKEIFAl3yQQw2sT6goxzqyakLYYdDCeT7DkhhYQBUZ1V/uDF/ubw3wOZLrZ8cYAb2rdL6nrHpAEAZhX4uo8VBebBDiZCZIJRgHGI6qzCmeG+H8PtdzJBGUAZwChAKUA5wNQ3o+qMAFzNlKt9guPnu8fMDd3+AU5boUdCBURN9sgN1wb2nAj3+RNALhhlioh4pIxIUqrLeqMlFPF/fNlpgtM2MuFJZ4zVv/tHd6mnxDwwHk8GG8Fx7PFs7Jg6BmAxD1wnIxxvnfmnpDNK6wHAFM/lpr76l9OAvqhmvWY10cNEsLM0gFk5o1ESGCXPiPKSEEUYk+TOAOov3GqA05ZqAqg5cKknG0SBU6K5TgAWVyAUCyam4/kHZE4YQsgzFgNoXA6SrN8UjmRDiGesrzv756MnqjKGaWnqZo3KohQTu2fch46eQeQF0uQeoUqWJ5JOrpX+7TgOXO+tNpv/658mLY15VjAi3SY0Yd3vVZMBAeR/96fnCYl7ng71hshxOOI8bLUPkImgMa24tAITHACwZtp4lGb7sPbkFaCrzztnRKsXoXR0XYHL/dEJlsWYH5SqgoMmrMjG+fD21FyEOh2833oZSkjKEZIsP4xQYBTnfmsE5w5o3E62wvPmSmUQAFC676wMhzqT4SKa53yIvpwFY45VkGJcaya0yPt5nlDlpHuQl+mTGCtn6+0IxTkBiFXVmLurFS3tnUmGJUi4wP2p1nXrqXt9pzfReFHCE4iEVT919WL7yXYNWgK9/GgQt+8MYv+5q2i51SM9GhIBl+iJsf5fDNETXmRsPdyE7v7EjwbX4u6Scy0Eaxfj/PUuFG9t0YC5ZqRK5awMiIYFdSYM4+DykvERmYIUiKuZECBOktI4MbsGJIpXS2FKZIESghVl+bdgGgdNY/Xu6Jqy/I1IH6lym2otYoiy+m48GsKuM21abWj9jRLZbnwpWD09uBF2MGqCUozLSNu0ubL4HFhMddi4LMYkS4kqUoqX9rdi3ZGQ1pU1AkoATrC1pjw03u/7BABM0DiMNxvJyqmTFy+rKOp1+1RS49MB9DWlAKfDyJbPKetdMb2wDnaQKBIpYNRvC39ZXV65pGJKRCoSz0JCNDB3n8nhdmK190JlWWT7szPn6FewqYfBeH3Lma9qZ5RvXvrkr/ClKuuYvAGJavuUexeZ6yVnQEYaPl1W9duOhRWPwA6e1mvKwNLX5Ip5dSA+f8O60d23fN3R0AefnbqYg3+7AQNasXqyGOvHyulTbr5T8dBHuZn2F7CDFEMeA3WvaK1dJOW6aGxIBVDz/YWO+cevdk676QzmWSZsyoWTk5HWMStv3Nl5U/IPAfgWdjA6FNx9/gezBqjUEb+6wwAAAABJRU5ErkJggg==
Второстепенная деятельность - это занятие, которое занимает короткое время, от нескольких часов до одного дня.
В течение недели продолжительного отдыха у вас есть достаточно времени на выполнение двух второстепенных задач. Сделайте выбор из предложенных ниже вариантов или обсудите ваш вариант с Мастером.
* ''Встретьтесь с кем-либо''. Назначьте или отправьтесь на встречу с человеком, группой или местной организацией.
* ''Торгуйте снаряжением''. Купите или продайте обычное снаряжение местным торговцам.
* ''Расследуйте слух''. Потратьте время на изучение какого-либо слуха, чтобы подтвердить его достоверность.
* ''Обновите финансовые обязательства''. Если у вас есть какие-либо финансовые обязательства (вложения, собственность, бизнес и т.п.), потратьте время на внесение интересующих вас правок.
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFK0lEQVRIiXWVaWwVVRTHf/P62tLSvldaeLQILaC0ZasWKIQlIiIoULWJLBJCSAyGSFhiRIGYGPkgpolEFpe4EVdkMVFEENeGRRRBQCrQ0ggttAKPpSstnbmLH2bezLwCN7mZOTPn/P/nnHvOuQY7DnO3padmJAOTdlwXZV+1yLH7LJWXBeFmTfP4JKNuZij4+6ys4DdABaH8zrvhGHci0VMzgq1SPzO3tvPV3Q2dObRL5wdgKPupDUBBagJlfZOjnw9ILe+eYLxFKN+8nWT7Hw6Ath+PZRasbTC3v1xzs4gO6YBhA2rDYfL0UdolW1uQfnJ1v5Q5hPKr4km2/uZFMK1nyeAzN/dWnevIBB+BAk/WvpC1I2qHVDOhIL3xwNCMaYTy3RQFkBqkQk/rWTi+qvWnqpq2TIQAoUFKEAKkAKlsWUpbFgKEBGk5/2354KnGHo9W3viBlrOFPhKJLo0kll9s33boTGsYKUFZrpEtCw8o9l0Im0AIb0sBwuLHk9fC6863bKflbCJAECG43CmXr/rnRhFSuWG7aQBIS2DDgFAsR3aenTNZdvyaUwgxO9t2xdFLw+flpC7PDvGGoZuru5WdbqzbWdkUQSsfTsxAs7E4i6VDsroWjU32SaV9VtopADQoA5DMLs6JbhuRkxcESneea4ogLIdAeWfrkBZnJNmAX56CW8pXadKLIi4DNsb2qmhkW3H248GvL9+cQWO7U0F4HsX6QGv6pQa53m5Cm+n0iXZKt0t1+QjQGm50srO+eXpw77X2kQjheaN1HAFak5eRwsloG8sKezCnfwYAG6ujbKu+ejuwPyKtqbjSMipY027mIswuSriejs0NA1AUSWNDJA3TkiQlJjCuXwZl2WnM/bnad/B+Mpu8tv1Wv0CCUmEsAZYFwtmWBcIEYTEg0cC0BHtrrmC8WUHypn2s+LUagKeH9SGlV6pjZxKPY4IQBJUKB4NStmCZIe88dFxEWyrr2VJZH/dv3ZHzPDUwk7H9e7F+UE8WXXDS5haNZ6+lbAkUJAcuIgRYpu1FzBO/V3FR2rr7Lly1K04px870dGP6psl93YL1gYd7dT/iAgjTCdsCab8fmjMKvXo6L43o6yMTlN6bDcC/jW0esOlzynl/sHf4z8ATuZl7SEt0RoN1m/c7q/4DYOW4QRTkhCAJVo3OZdg9mZimRfmxcy5xbKy4O5zCjIG99wQxjF0Lh/eJfvjLqYjdrcSVYfmBM0zOzWTK0Fyqnp3sdrppWsz8Yj80tXl9pZVXnVqxaETeVQLGroQ1bRGxe9YY1p2oncrNTnsYagVKgZKgFJ/9XYvZ0UFttInjF65woi5KyY5DnD132RmeCrQzTLWyd3oK386esCY9Mmx/EGGRnZ6yYdOU4fOXbj1YFNfx2mvI1ysqvYnQpYLiZp7WYGjeKS2p7BNOWw8QQJgYL2y2lowYOGfBQ4Ob3XoXnV5u48b7HUa8O+pt3YVTipufG1M4m1C+ZZNIG8hY9l7Vx9NLHpk7cWjUVpa++8MiphdHpIS9XQck8yc/EP3gyfFT/FdwwAOzMBa/dXRL2biSTfMmHaN7smvoB3FvRCHBknbUUkAohbcXTD3+6ayJownlH8G3DOYudmYVELCnq37/+WBDY+vC1/ZXvvLu4TM5XGki7m5XCgznzHpnsGTMkEsrJ96/pm9m6CNC+YIuy2DWIjB8w1Hjynrzi92A0u9P1804eOHyyIbWjrwkg5BQqiUnPbVuQl72X9OG9N8NfEco/1ZX8Nj6H1ECegqEk3vvAAAAAElFTkSuQmCC
В конце недели оплатите долги и получите результаты своей деятельности. Проверьте излечились ли ваши долговременные травмы и увечья, и начните готовиться к следующему приключению.
Сверьтесь со своим листом персонажа, чтобы определить, какие особенности или умения вы восстанавливаете по окончанию продолжительного отдыха.
Восстановите свои хиты до максимума. Уменьшите количество проваленных спасбросков от смерти на 1.
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFLklEQVRIiXWWeWxUVRTGf286TBfamXYoLSVAocKwFymURZRKZbGUkBqhBALBmCbIJiagQkxc+ANDCEaDNiGAGDVKqVGRXQxEQApSF/YpYEuB0m1omSkM9G3XP95786YD3GRy7333nO8799zvnjsSlWd4WhPTU+OBKZV31ZIfQtrE3xU9uwd4goLgJJdUP8ftrJrbw/kzcAy3r/NpONLjJAIxPc3ZoYnX59/o/HB/g5xFWI1eBnR7nhhHSR9Xy7cDkjZ2j5M+x+2Tn0ByGoSwMWZ4B29okHe/dz2cS1i31yI2wiQy57rZJ0lsGJxyfl3fxHm4ff6uJLuqIpGJovT8oVceHPLXPfAiJOO7kEwgHYTDJIkitGzMQCYOTm4/NTy1CLcvkiIHuga6QBSlD5nkv3/Ef+2+F1UDVQNFB1UFXQNNgK6CZs1VY021xgqoKlWX2tNmXGg7TOjqEJtE1RDFPbttvPWw4tSVoMdwMB01FTTNALNAo3staq6qoBlEv54PeDbXhXYTutrNINFUmjq1VWsv3s19MqACmkpGhpMTL6Tzb2EvvslLg9Q4w0axSBS712TWVN8Z2fRIXQUgiWBNQsnl9vo9F9syEGaarYMVxmTpQA/l4zIBOBd4yKj0RACWn2mk3N9m2EUEokXGpaN7tVTkZWVLIlgzR/qlrpIOJUo5mn2YLonOVwcBEH+4DlrDkOyis2QQHbJG+veXbJKIIHQDJyUeMT+31PlT04Ni7j00DfSuctV1lg9Mx+WMY311AzQGDec2lYUnbvCiNwm6xxHxN3ce6dtk9twOznQeCoTHoKomu8CWrmE8KdUFwAfXA5QOcFPQI4njgTAVV5qpFNjBWWNhZcP4dqw5NNZ5LSz3Q+187BwspxFeI/8Hx/bm5YE9AVgGlE/sx8qT//HdlWYbODZdQqc2/Kivw6VrHlsd5k9RQJGNselYmJ3G6mNXkXZWsbX6Bt7u8ews9EE3TD/ZlLAc5a+SqOseR5ymh2xg8xchk5FMkmO1AT6proPWIG8c9VN1oxVXNyeL+6ba8pXlmGBldE0LOQbFS7ciUSuyHYlp2NFp1LvN527azrLMxaZ7AGTGO0x72bw3ik2qKOQkOG87Cnsmn+0avWqnTFU5Xt8KwNx+aeZOjfWRGW4A9twMGN9kO3pkxZyrTM70/OmY3c97ALfLjMS4rfaWZdaevwXA4rz+FOX0AEVm7bhsJuRkIssKNbXNdM1E1Pl6EijOyTzgRJL2lo3o3bL96KUMhLBLtyXHxjbW7TvLx7PyObBwslXzkGWFcdt/M0pPRLrR90ywJC+7FYe0V2LFehrXzl6TVX5kE/fudzGyZSkgI4Xt442bX9vWwYaaO9DU3lX60WNPdxrWvPJO7755m5yoCr1SEj/bMm34opUVf+Tab0eMY0OAsh8DMQEQZRtFIEH5rPwLvT3JnwI40GSk1TuUFXnPzFtcMDRoH75V8k2lWBVajaq60WuRyq1RNnV0cOn4IaW4fYpBYgJKb271fzUzf+q8gmEt6EoMiF3yu7wz1tujWAFpLHrp2ZZtJZOmRT/BDttJQVq2pXpXyXP5WxZM+ZvkBJvAArF2oWj2W2L5uxP44rXp/3w9t2Acbt9ZoprEgmWR/wQgjCq/7S1nQ3tH2YYT598vP+3PovketpEwirVknkOGhxUThjW+WzDqoz5e9w7cPpWYJlG6JEZJdi++fDsBmHXwcn3xyZtNYxpDD7OdDtyqLkJZKUn1z2dn/lU0rP9+YB9u36NYcKv9D+7khlZT2eZWAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAEs0lEQVRIiX1Va2wUVRT+Zjvb3b5mlxZK21BaLS61CFqxNgVDhZTGPqJVeaT4A2OaGAimJtr4KBqMBEMQowEN0aD+UENbAgpSSkwkRuXtI1RhadWy0lpc7GN33T7mvvwxszN3p+BNbuaeO+d837nnnHuugq6zuNUQtX4PgJVdI7TpYJRVfUN4kV+Bb1wg8qCqhB73qafX5qifAzgJLTB9KxzlZiSi1q/GmHiq+er0tmNDej4mKSBgTEvJFNIVNM3zhD+5LX1nRoqyF1pAn0nSeQ4AMw0B8VD2wh1Demf7bxNLMEFtQKEkg0MA3PyCA+kp2LEw6+JLhWnroQWCySQHvgeEC4CAqM+pCAT/7en/fTI7yWMuJALpOFyShQCEQFVp1tipRf46aAErRC5wAXAGUZ9TujwY+6q/L5YNygDKAEKNL6PSNGVKbJna/07/Ojarrnf0BKJ9pTYJYRCNc9w7r010nArGfGA8GZTKQMzeozIZkfYpei7+49s9EO1EtM8NACo4wfVp1vriL2NLwFhyaIRAbr4X7bleKUoCioAVprf+nsDVobidK/P7/IXhxU/kp7fmaXhTFY8VepsujbUhqpuZF/ZXAFtnp+KZ0lnOgrHG6BTBthA1ki+EXSRkCq2XbrR1ePv2KiJyZY1yZKALMWI6JxGBGwaWsbH3aIkfh1YUITQ+ieKDV2wCyTlAAFkeiOYl69TDw/EGjE9Kpcltb4SQAAAIDnhUHFg2DzplKO7pB6g+E1xwYz2q44vBSL3aMxJfaihC8tY0SPLO2OteWYRUNQXbz4aAkZipx618WWQm0dfh6H1q/wSZD0ptRYtIMkoUg9+DupLZGI1P45UzoZucVMxwdCA+VaiqjPlAycyYCj7jRMcrFwAAdpy9ChAzTNbN58k5NYnTOPepbs6ioLpmgcnhQrJnq4pzoBOK3ecHHGGU9BNk5j5lLKre4XFdA6GLZhg5PNpYlo9Ut4oTwb+MZN8sZ85wc44FXnXQtWpO5nlQAhBiGFMCW7bXy3MzAQAdl4eMm+34D0IAXU9eU4oVc33n1IfnZ3cj0/0kxuJmRTiqy5SrCo2e+VFwENBJcqla+lLxAEBOJhpun9vtgqIcbVlcEAbRDWNCAZ3aHlFjr0BLMwwjccl7s3dRqYdZ0dCxqbzoBlzKUZfS3jH1ennxLmS4TSXnNAgP//wHXj5yxgTUjZnQJzrAzFAlCDM82Fq5cBe0wJQLjCAvK+2dPTV3XbS6quydCdBy6AzeONkrgVOz+5odmEidm1O811jRW+DLfBsAXCAUynP7yZZ7S9ZvrL4zYpPojhaeADZlLj0DjqehZXV5ZFNl6TpoAWKQMKMKlNZ9wY/rK2qaq8vC4P8DLq+JNCkDGMOGmnvCHzyyfLX8BLusF45SKJv3XPisaVnFng0rf0SGJ/nhcoJTCnBmnIgxQPPi3Y21P326pvp+aIHzkIaC5s22ZPYo8f6z6tBYrGX7t72v7jt9OR/hcdivluPi5fqxpaps+IUVd782L1vbDy1A4RgK1j4NKIk7kWgNxlp82OYF0Hj8Uqjhuz+vLx2OThSluBSNchEtyEoLPVCU90NdWfExAF9CC0w5wRPjP9H/hnpSGUqbAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFL0lEQVRIiXWWeWwUVRzHP7Pd3nS2bGXbBUoBZVsoIoeFQFUEC0K5GoMQCQajJAYUiAFBNKL4BwbRRMMRo2BM9A8OIyByCCFEEJBLgQq0oBxCS6nQ0oWW7sx78/xjZnanBV4yecfvve/v/v1GY9MRHjbU6OxUYMSmW6Lih6gc+qtpFWRrBO5aNJWmaFcm6/7DL+b4twD70COxh+FoD2KiRmf770j16kuXYx9ur4mFaVGA5VJBafZeaZChUdE1rf77HunLM5O0VegR434mG3+3H7rvxwQLl9XENr534V4/WizQHDClEkzA3luJd2RqLCvMOr04P30qeqSqLZP1BwEfKIUqzymJVDXvuvBPS9DFigOhEtKjHF7OrJRDVwwtzGo8VJw9Fj0SN5EPqUAKVHlOUWnVnT0Xqu8GERKkBCnAkmAJey+cM5fmfpYAIUBIDp9p7Ph8ZcMvRM8XJZgIgRofSl5+9d6GQ1V3AljyfhAhQJoOIwHCBGkkzoXp3LXXu0/fDHx2KbqR6Plkm4klqYvJee9UNvSzAVxAWzIX4P1IJidH5nLyuTwOPB0iP5SaEEBIm6npvjdYcLz28bpWMQ9AU03VaRVnb1/ZWtkYsm2sPDa27b2kT0eW9u+EISxqmw26B9Jsh24+D1HT8wZQ0vGbZMqAcP2GgeECHzB+69+NobjawmMiR7K5hdkYQpK66Rw9fqymeM9FALb37wTCABFzzGc4GDEwBRur6kMoNcG/+XrzOG7f80SOlZBMKQhlkJOezMGaKDS3glKcvdwA9GRIbqYNqixPlJHYNxhsvdZU7tt1q3lQ3InCAFMmNBICapowhKS0i87gzpkgBKtLwgAcq42C6Urvfq5vDDAN9t2IPum/0GJ2wzQTCdbGvvY6dfNf3Cov4kh5PCqprIsydm+1o4k3b9q+v9jSmu9LsqwAwrQlMt1wdPbCgGTFzv5hgpmpGKagsq4JgMKcDOb3Cnr82A5D2OsUywr4/VJEMU09bsu4BvY8vVeQMb1CHL58k2GbTti0YAaxGcP4dGRvPjt9De7FPCVGeSqChSZl1FeY6rsat6fp+YStyfSejwDwwdGLCVpdE1vOXANgYe+Qx4dGAkcYYAh6pvmv+UZ26nAMU9iqSueiNONq6ylJTg2TbRyc7ZznpPjAcO4bIiGIc/ZMbuCob2K34A70ZBJ+EQm7miZbqmsBWFvWB5I1ME1m9g3z7GN5ACw6dfkBWjgVIzuNcT1zd/jRtG0z+3auX7v3jJ3xlteuik/2V1GWH2RUcTfU4gq8492fjkBNI+BkubLatIRZA7v/h0/bpjHnI64vmrggvGb3Cm63EG9OVlsHTujdhUmO9JpSvHb4PNxobFfqPWs9g5oFLyzsnD9whR/TJC8r/YuVo/q+PGfDgX5Ip1/gjTTFttOX2HbqEm7fsMmeDI9vbfqa8YMrOwc6fA7gQxpo89eZbw58dOqM4cVNdva70eLJ/PY1zTI9bcDtMfb9maMGNM0aUjQFPWLaTBwAbe6XVd+Wl5RNHV5cj/UAcLdfxHuMdMqH6azteXpZ//qvJ5WO8rZgn1cSbfaq4+srhpWsnDbiDzqk3t+4hGw7S0m8yenprH5l9J/fTR4+GD1yzBsgGtPeSDjLsbP66i1/TeOdmR/vr1yy+si5MPWNHnt7KgJAboDZQ/pcXzz8iaVdg/o69Iig3dCY8nrbnwK3yAHqm7fTgPE7z14Z99u/dYOuR1sKknyaLi0rGs7KuPJUQd6JsX26bwd+Ro+0tgd3x//4XopinybJtQAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAFQUlEQVRIiXWVe2wUVRTGf7PdvtvdskAfWNwisoUWeQoEUBGwYKFggxZEohhDQiQoMSJijEb9g4QQjQQhBpUYwYSHERF5CAZjlIeCQilgoYVSoBSWQrtbu3Tnzp3xj5mdmS3hJmfn7tw73znfued+R2HHn9xvGNPy0oHJO25r1d9F5fjfhB7sDf6IQWRimtL8nM97tKa39wfgV3yh+P1wlHucGArGdL+3UxqvzL8c/2BPS7yImLTWAHTAYz4NBbIUqoszwlsGZK7OTlE+wxdS73Wy/ZgFYIACxvRA6aqW+PZ3G2LDuCvN93YAOHuxHOqKOc1SWFWae/qd/pnz8IXqk51sPWxHZlT2GROq79rfcDEWsEF1IzGxmdr/DcVxaJg/40tz2o+U51XiC9kp8qAbIDWMyj6DJ9Z3Hmw43xlAk6BppunSNGmA1EFqICX2Hmnt0wRoGkfPtPeqOHPnZ6IXBjtONIlRlZ+6+mps25F/o34HVFqAFogUJpAN6lqXImn+y+k2/8dN0e1EL6SaTqTgRlwuW3mmfZgNnACTEqQKKZK15T5OTSnk1JRC3ivNhmzMfSIRgMMGTWX5idZHbnRrywAUI3I+o/pce/Ouuo58MFw5NmxrmhWkxJcOwOVINyX+DFRNkr77IkQSxSTB8DjfoTN3ZGF426iioAeo2tXYkW+nw47IZLNkYC4lvnRuxwTK9/UM2Hme8oOXSPOm0DSlv8VCNRlpcctU0ATb68P5GMYs784bXTOJxKxKkS4WCqAzsyADgPXnwnAnBhica7pDc0chJXlZ0CsVwl0uBokMAHdUdl2LzPDsb4uNRtNAxE0WIsEmDpqgODsVgB/DnSBUc10KjlyPAvB8bqrDvKcJwaFw9FFPQ0x9EKEmH7iw6AvB2bb/AFge9Dt7hGB6sBcAkwKZpmPhALsdNXV19/em6NKPprlouuhisK4hzPyyQuaE+rIvzcO3jW2sGFlMINssBMWQJmBSqhzL1HW/J03qUTsNbrMO72jjTV7aW0drZzdPDypgc2U5pb2z2Xb6CgAX27usgxck4VgXVZMy6h2UrlxFE+WJyJ2IAMOUks21V9hce4X8B/IYke7lQGOYjVPNC33qdqfFJLnsE3L0cIb3mmdK35zjZv7U5EiEyaS4IJu6heOpGBAgfDnMgfMtIFSeHVoMwMHmMMQFqCqoIvl8NMETBf6/PLMfDOwlNy35ftjVoXHtZoRQn1w+eTwEaQqoggM1YwjkZLLmUC10dPXQL9d9y8tk5kMFe70oyu5FQ/uFvzx0Nt8UVz1ZWYXKN8cbWTRxCMbKalu+z15rY8X+2h7qoLtSDotHBm/hUXYrLP2I1pWzlxdtOLCGjq6EZjsSn8h1QS5rhgfplZHG+trLnLx003KgO47spwG+LFqWz1nRr/+oNV6koDA3c+26iqEvvrb18LCE7thlnPjoehtvtdxKfpfUxFxFA2yoGlvXz5/zqanCQkV5c5NYOmrgvIVPDokk5TRJ2l3ynjTvIf+aZFHFqMir4wbPxRcSltSbG5XXP6//esaYp+ZNKgvboNIt39KRdF1z9RppiaPpdMHUEeEvnplQ4W7BHqd3aChL1p3YWj1hzLoFk/8hx6o4KR1WwtUR3YFICb4M1r887eSWmklj8YWO4xoKLyxx9XKzpIyNb3hb2jsXrfr99PsbjtUXcbM9+XDd8wI/S8eVtb49afiHxQHfV/hCGj2GQs1iG9ypJgAdY9OKDKBq37nmmX9cuTG6tfNuMEXBJ3UjWpSb1fxYsODvyrKSPcBP+ELdPcET438CoZGLfBT7FQAAAABJRU5ErkJggg==
[img width=410 class="centerme" [https://i.imgur.com/HMZtQWM.png]]
<<tabs "[tag[Ааракокра - описание]]" "Описание ааракокр" "$:/state/tab1">>
[img width=410 class="centerme" [https://i.imgur.com/PcaXX4K.png]]
<<tabs "[tag[Аасимар - описание]]" "Описание аасимаров" "$:/state/tab1">>
[img width=410 class="centerme" [https://i.imgur.com/IlrBIgX.png]]
Аасимар–защитник наполнен силой добра чтобы защищать слабых, искоренять зло где бы то ни было, и неусыпно стоять на пути тьмы. С юных лет аасимар–защитник получает советы и указания, которые побуждают его противостоять злу.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Сияющая душа |^Начиная с 3 уровня, вы можете бонусным действием высвободить божественную энергию внутри себя, заставляя ваши глаза мерцать, а два светящихся, бестелесных крыла вырасти у вас за спиной. Ваше превращение длится 1 минуту или пока вы не закончите его бонусным действием. Пока превращение не закончится, у вас есть скорость полета, равная вашей скорости ходьбы, ваше сумеречное зрение заменяется ночным, и раз в ход вы можете нанести дополнительный урон излучением одной цели, когда вы наносите ей урон атакой или заклинанием. Дополнительный урон равен вашему бонусу мастерства. Вы не можете использовать эту особенность снова, пока не завершите продолжительный отдых. |
[img class="centerme" [https://i.imgur.com/nCiHJ42.png]]
Аасимар–каратель наполнен божественной энергией, которая пылает внутри. Она подпитывает сильное желание уничтожать зло – желание в лучшем случае твердое, а в худшем – всепоглощающее. Многие аасимары–каратели носят маски, чтобы оградиться от мира и сосредоточиться на том, чтобы сдерживать эту силу, снимая с себя маску только во время сражения.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Телосложения увеличивается на 1. |
|^Испускание сияния |^Начиная с 3 уровня, Вы можете бонусным действием высвободить божественную энергию внутри себя, заставляя себя излучать испепеляющий свет, льющийся из ваших глаз и рта. Ваше превращение длится 1 минуту или пока вы не закончите его бонусным действием. Пока превращение не закончится, вы излучаете яркий свет в пределах 2 м и тусклый свет в пределах ещё 2 м, и в конце каждого вашего хода все существа в пределах 2 м от вас получают урон излучением, равный половине вашему бонусу мастерства. Кроме того, раз в ход вы можете нанести дополнительный урон излучением одной цели, когда вы наносите ей урон атакой или заклинанием. Дополнительный урон равен вашему бонусу мастерства. Вы не можете использовать эту особенность снова, пока не завершите продолжительный отдых. |
Чужеродное влияние оплело своими щупальцами ваш разум, даруя вам псионическую силу. Теперь вы можете касаться разумов других существ с помощью этой силы и изменять мир вокруг себя, используя её для управления магической энергией в мультивселенной. Будет ли эта сила сиять в вас, как маяк надежды для других? Или вы станете источником ужаса для тех, кто почувствует укол вашего разума и станет свидетелем странных проявлений вашей мощи?
Как чародей с аберрантным разумом, вы сами решаете, как вы приобрели свои силы. Вы с ними родились? Или какое-то событие позже в жизни заставило вас засиять в псионическом пробуждении? Обратитесь к таблице ниже для возможного объяснения ваших сил.
| !к6 |!Происхождение |
| 1 |На вас оказало влияние искажение Дальнего Предела. Вы убеждены, что прямо сейчас на вас растёт щупальце, но никто его не видит. |
| 2 |Психический ветер с Астрального плана принёс вам псионическую энергию. Когда вы используете свои силы, вокруг вас сверкают слабые искорки. |
| 3 |Когда-то на вас оказали влияние доминирующие силы аболета, и с тех пор в вашем разуме осталась психическая заноза. |
| 4 |Вам имплантировали головастика свежевателей разума, но цереморфоз так и не завершился. И теперь его псионическая сила — ваша. Когда вы используете её, ваша плоть блестит странной слизью. |
| 5 |В детстве у вас был воображаемый друг, похожий на фламфа или странное существо, напоминающее утконоса. В один из дней он одарил вас псионическими силами, которые в конечном итоге оказались не такими уж воображаемыми. |
| 6 |Ваши кошмары шепчут вам правду: ваши псионические способности не принадлежат вам. Вы черпаете их из своего паразитического близнеца! |
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Очарования или Прорицания.
| !УЧ |!Заклинания |
| !1 |//диссонирующий шёпот//, //осколок разума//, //руки Хадара// |
| !3 |//обнаружение мыслей//, //умиротворение// |
| !5 |//голод Хадара//, //послание// |
| !7 |//призыв абберации//, //Эвардовы чёрные щупальца// |
| !9 |//ментальная связь Рэри//, //телекинез// |
//УЧ - Уровень чародея//
---
!!! [img[1.png]] Телепатическая речь
<<<
Вы способны установить телепатическую связь между своим разумом и разумом другого существа.
<<<
Бонусным действием выберите одно существо, которое вы можете видеть в пределах 6 м от вас. Вы и выбранное существо можете говорить телепатически друг с другом, пока находитесь в пределах количества километров друг от друга, равному вашему модификатору Харизмы (минимум 1 км). Чтобы вы могли понимать друг друга, каждый из вас должен мысленно говорить на языке, известному другому.
Телепатическая связь длится в течение количества минут, равному вашему уровню чародея. Она заканчивается раньше, если вы становитесь [[недееспособны|Недееспособный]] или умираете, или если вы используете это умение, чтобы сформировать связь с другим существом.
---
!!! [img[6.png]] Псионическое чародейство
Когда вы сотворяете любое заклинание 1 уровня или выше, используя своё умение Заклинания источника, вы можете сотворить его, израсходовав ячейку заклинаний как обычно или потратив количество единиц чародейства, равное уровню заклинания.
Если вы сотворяете заклинание, используя единицы чародейства, то оно не требует вербального или соматического компонентов, а также материальных компонентов, если они не расходуются заклинанием.
---
!!! [img[6.png]] Психическая защита
Вы получаете сопротивление урону психической энергией и совершаете с преимуществом спасброски против [[очарования|Очарованный]] или [[испуга|Испуганный]].
---
!!! [img[14.png]] Откровение во плоти
<<<
Вы можете высвободить аберрантную истину, скрытую внутри вас.
<<<
Бонусным действием вы можете потратить 1 или более единиц чародейства, чтобы волшебным образом преобразовать свое тело на 10 минут. За каждую потраченную единицу чародейства вы можете получить одно из следующих преимуществ по вашему выбору, действие которого длится до окончания трансформации:
* Вы можете увидеть любое невидимое существо в радиусе 12 м, если оно не находится за полным укрытием. Ваши глаза также становятся чёрными или превращаются в извивающиеся сенсорные усики.
* Вы получаете скорость полёта, равную вашей скорости ходьбы, и можете парить. Когда вы летите, ваша кожа блестит от слизи или сияет потусторонним светом.
* Вы получаете скорость плавания, равную удвоенной скорости ходьбы, и можете дышать под водой. Кроме того, из вашей шеи вырастают жабры, либо они выходят веером из-за ваших ушей; ваши пальцы становятся перепончатыми, или у вас вырастают извивающиеся реснички, которые прорастают через одежду.
* Ваше тело, вместе с любым снаряжением, которое вы носите или несете, становится скользким и податливым. Вы можете проходить через узкие пространства шириной от 3 см без протискивания и можете потратить 1 м передвижения, чтобы вырваться из немагических пут или захвата.
---
!!! [img[18.png]] Искажающий взрыв
<<<
Вы можете высвободить свою аберрантную силу в виде искривляющей пространство аномалии.
<<<
Действием вы можете телепортироваться в незанятое пространство, которое вы можете видеть в пределах 24 м. Сразу же после того, как вы исчезнете, каждое существо в пределах 6 м от места, где вы находились, должно совершить спасбросок Силы против Сл спасброска ваших заклинаний. В случае провала существо получает 3к10 урона силовым полем и притягивается по прямой к месту, где вы находились, останавливаясь в незанятом пространстве как можно ближе к вашей прежней позиции. В случае успеха существо получает вдвое меньше урона и не притягивается.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите 5 единиц чародейства на повторное использование этого умения.
Азартные игры — отличный способ заработать состояние, или же быстро его спустить.
//''Ресурсы''//. Эта деятельность занимает одну рабочую неделю и требует ставку от 10 до 1000 см или больше (на усмотрение Мастера).
//''Определение результата''//. Персонаж должен совершить серию проверок, при этом сложность определяется случайным образом в зависимости от особенностей конкретной игры. Часть риска азартных игр заключается в том, что никто не знает, кем может оказаться сидящий за столом.
Персонаж совершает три проверки: Мудрость (Проницательность), Харизма (Обман), Харизма (Запугивание). Если персонаж умеет пользоваться соответствующим игровым набором, это владение может заменить необходимый навык в любой из проверок. Сложность для каждой проверки равна 5+2к10, и для каждой проверки она рассчитывается отдельно. Для определения результатов игр используйте таблицу ниже.
|!Результат |!Исход|
|0 успехов |Потеря ставки и долг в размере ставки|
|1 успех |Потеря половины ставки|
|2 успеха |Возвращение ставки и ещё 50% от ставки сверху|
|3 успеха |Удвоение ставки|
//''Осложнения''//. Азартные игры всегда привлекали сомнительных людей. Возможные осложнения включают в себя проблемы с законом и общение с различными преступниками, которые связаны с этой деятельностью. На каждую неделю, потраченную на азартные игры, существует 10% шанс осложнения, примеры которых можно найти в таблице ниже.
| !к6 |!Осложнение |
| 1 |Вас обвиняют в жульничестве. Вы решаете, действительно ли вы жульничали, или обвинения ложные.|
| 2 |Городская стража устраивает облаву на игорный зал, а вас бросает в тюрьму.|
| 3 |Местный аристократ проигрывает вам крупную сумму и громогласно обещает отомстить.|
| 4 |Вы выиграли деньги у члена гильдии воров низкого ранга, и теперь гильдия хочет вернуть их назад.|
| 5 |Местный криминальный авторитет настаивает на том, чтобы вы посещали только его игорный зал.|
| 6 |В город приезжает игрок, играющий с высокими ставками, и он настаивает на вашем участии в игре.|
Все, что вам нужно, чтобы заработать много золота, - это немного золота. За исключением тех случаев, когда все, что вам нужно, чтобы вообще не иметь золота, - это немного золота. Хороший ли ты игрок или плохой редко имеет значение, потому что никто не может предугадать капризы Госпожи Удачи. Иногда ты на подъёме, иногда нет. Но суть азартных игр в том, что кто-то всегда готов сделать ставку.
* ''Владение навыками:'' Обман, Проницательность
* ''Владение инструментами:'' Один [[игровой набор|Игровой набор]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Игровой набор, которым вы владеете, счастливый талисман, комплект дорожной одежды и кошель с 15 см
!!!Умение: Не будем о шансах
Шансы и вероятность - ваш хлеб с маслом. Во время простоев, связанных с азартными играми или расчётом шансов на лучший план, вы можете получить твёрдое представление о том, какой выбор, вероятно, является лучшим, а какие возможности кажутся слишком хорошими, чтобы быть правдой, по решению Мастера.
!!!Персонализация
Некоторые играют из необходимости. Другие - от скуки. Третьи становятся зависимыми от острых ощущений от выигрыша или проигрыша всего по велению удачи. Для некоторых азартные игры - это не столько случайность, сколько поиск каждого преимущества для обеспечения результата. Лучшие игроки могут проиграть все, а худшие игроки иногда выигрывают. Тем не менее, вы всегда можете отличить игроков по их взгляду. Госпожа Удача преследует их.
| !к8 |!Черта характера |
| 1 |У меня есть план на каждое непредвиденное обстоятельство. Ничего не оставляйте на волю случая! |
| 2 |Каждый медяк хочет быть серебрянником. Каждая ставка - это возможность. |
| 3 |Я один из любимцев Госпожи Удачи. Все мои начинания обречены на успех. |
| 4 |Я так много проиграл в азартных играх, что теперь отказываюсь тратить деньги на что-либо. |
| 5 |Ничто не определено. Планирование - поступок труса. |
| 6 |Я не могу быть уверен, кого я обманул, надул или победил, поэтому я стараюсь не показываться на публике. |
| 7 |Я чувствую, что идеальная ставка где-то рядом. Я просто должен держать ухо востро. |
| 8 |Я победил свою зависимость, но все, что нужно, - это один момент слабости, и я снова вернусь за карточный стол. |
| !к6 |!Идеал |
| 1 |''Знание.'' Знания - сила, а знание того, на какую лошадь ставить, - ключ к успеху. |
| 2 |''Судьба. ''Что бы ни случилось, предрешено судьбой, независимо от каких-либо планов или стремлений. |
| 3 |''Храбрость.'' Если вы хотите добиться успеха, вы должны рисковать. |
| 4 |''Выживание.'' Ты не сможешь победить, если ты мёртв. Борись до конца, тогда шансы могут обернуться в твою пользу. |
| 5 |''Надежность.'' В момент нужды я мог положиться на других. Теперь я хочу быть тем, на кого могут положиться другие. |
| 6 |''Победа. ''Победа - вот мерило человека. В конце концов, единственное, что имеет значение, - это финальный счёт. |
| !к6 |!Привязанность |
| 1 |Один человек должен мне много денег, и мне нужно сохранить ему жизнь, если я хочу получить должное. |
| 2 |Я верен другу или члену семьи, которые научили меня играть. |
| 3 |Человек, который спас меня от игровой зависимости, - единственная причина, по которой я жив. |
| 4 |Однажды покровитель предоставил мне деньги в обмен на процент от моего выигрыша. Я признателен ему за это. А также должен много денег. |
| 5 |Преступный синдикат, за который я когда-то играл, недоволен, что я покинул игру, и его сотрудники ищут меня. |
| 6 |Беспризорники однажды помогли мне найти цели для моих игр. Теперь я хочу помочь им сбежать с улиц. |
| !к6 |!Слабость |
| 1 |Я не знаю, когда остановиться. Особенно, когда мне это говорят все остальные. |
| 2 |Я приберегаю симпатию для своих друзей, а друзей у меня нет. |
| 3 |Вы думаете, у нас проблемы? Позвольте мне сказать вам, насколько плохи могут быть дела! |
| 4 |Вы можете одолжить мне немного, не так ли? У меня есть надёжный способ. Я гарантированно удвою ваши деньги. |
| 5 |Когда-то я был ужасно ущербным человеком, как и вы. Позвольте мне рассказать вам, как вы можете спастись. |
| 6 |Я отличный игрок. Я просто плох в математике и логике. |
При сотворении заклинания, вынуждающего других существ совершить спасбросок, вы можете потратить 1 очко чародейства и выбрать существ в количестве, не превышающем значение вашего мод. Харизмы (минимум 1). Указанные существа автоматически преуспевают в спасброске от этого заклинания.
Активация некоторых магических предметов требует конкретных действий, например, взять предмет в руки и произнести командное слово, прочитать его, если это свиток, или выпить его, если это зелье. В описании каждой категории предметов и конкретно самих предметов указывается, что необходимо для их активации. Некоторые предметы используют одно или несколько следующих правил, связанных с их активацией.
Если активация предмет требует совершения действия, то это действие не равносильно действию [[Использование предмета]], так что умение плута Быстрые руки не может быть использовано для активации предмета.
!!Командное слово
Командное слово — слово или фраза, которые необходимо произнести для активации предмета. В местах, где что-то препятствует звуку, например, при заклинании //тишина//, магические предметы, активируемые командным словом, не могут использоваться.
!!Расходники
Некоторые предметы расходуются при их активации. Зелье или эликсир необходимо проглотить, масло — нанести на тело. Написанное исчезает со свитка после прочтения. После использования такие предметы теряют свою магическую силу.
!!Заклинания
Некоторые магические предметы позволяют его владельцу сотворять заложенные в них заклинания, часто ценой его зарядов. Заклинание сотворяется с минимально возможным уровнем заклинания и заклинателя, у использующего не тратятся ячейки заклинаний и ему не требуются компоненты, если в описании не сказано иное. Заклинание использует стандартные время сотворения, дистанцию и длительность, и использующий должен концентрироваться, если заклинание того требует.
Многие предметы, такие как зелья, сразу дают эффект заклинания со стандартной длительностью, без его сотворения.
Магические предметы, например некоторые посохи, могут требовать использования вашего собственного умения сотворять заклинания. Если у вас есть несколько таких умений, вы сами выбираете, какое из них использовать. Если же у вас нет этого умения (возможно, вы плут с умением Использование магических предметов), то для этого предмета ваш модификатор базовой характеристики будет равен +0, и ваш бонус мастерства при этом не будет применяться.
!!Заряды
У некоторых магических предметов есть заряды, которые расходуются, когда вы активируете их свойства. Их текущее количество становится ясным в момент изучения предмета с помощью заклинания //опознание//, а также когда существо производит настройку на этот предмет. Кроме того, когда происходит восстановление зарядов, существо, настроенное на этот предмет, понимает, сколько зарядов было восстановлено.
Алхимик — эксперт по созданию магических эффектов путём комбинирования экзотических реагентов. Алхимики используют свои творения, чтобы дарить и отбирать жизнь. Алхимия — древнейшая из изобретательских традиций, и её многофункциональность издавна ценилась и во время войн, и в годы мира.
---
!!! [img[3.png]] Владение инструментами
Вы получаете владение [[инструментами алхимика|Инструменты алхимика]]. Если вы уже владеете этим набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[3.png]] Заклинания алхимиков
На каждом указанном уровне изобретателя вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
Как только вы получаете заклинание алхимика, оно считается для вас заклинанием изобретателя, всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
| !УИ |!Заклинания |
| !3 |//лечащее слово//, //луч болезни// |
| !5 |//Мельфова кислотная стрела//, //пылающий шар// |
| !9 |//газообразная форма//, //множественное лечащее слово// |
| !13 |//усыхание//, //защита от смерти// |
| !17 |//облако смерти//, //оживление// |
//УИ - Уровень изобретателя//
---
!!! [img[3.png]] Экспериментальный эликсир
Каждый раз, завершая продолжительный отдых, вы можете магическим образом создать //экспериментальный эликсир// в пустом сосуде, коснувшись его. Совершите бросок по таблице ниже для определения эффекта, который возникнет, когда кто-то выпьет эликсир. Действием существо может выпить эликсир или влить его в недееспособное существо.
Создание //экспериментального эликсира// требует наличия у вас [[инструментов алхимика|Инструменты алхимика]]. Любой эликсир, который вы создаёте с помощью этого умения, существует до тех пор, пока не будет выпит, или до конца вашего следующего продолжительного отдыха.
Когда вы достигаете определенных уровней в этом классе, вы можете создавать дополнительные эликсиры в конце продолжительного отдыха: два на 6 уровне и три на 15 уровне. Бросок для определения эффекта каждого из эликсиров выполняется отдельно, и для каждого эликсира требуется свой собственный сосуд.
Вы можете действием создать дополнительный //экспериментальный эликсир//, потратив ячейку заклинания 1-го уровня или выше за каждый эликсир. Для этого вы действием создаёте эликсир в пустом сосуде, которого касаетесь, и самостоятельно выбираете эффект эликсира из таблицы ниже.
| !к6 |!Эффект |
| 1 |''Лечение.'' Выпивший восстанавливает количество хитов, равное 2к4 + ваш модификатор Интеллекта. |
| 2 |''Стремительность.'' Скорость передвижения выпившего увеличивается на 2 м на 1 час. |
| 3 |''Устойчивость.'' Выпивший получает бонус +1 к КД на 10 минут. |
| 4 |''Смелость.'' Выпивший может совершить бросок к4 и добавлять выпавшее значение к каждому броску атаки и спасброску в течение следующей минуты. |
| 5 |''Полёт''. Выпивший получает скорость полёта 2 м на 10 минут. |
| 6 |''Трансформация.'' Тело выпившего трансформируется аналогично действию заклинания //смена обличья//. Выпивающий определяет трансформацию, вызываемую заклинанием, и этот эффект длится 10 минут. |
---
!!! [img[5.png]] Алхимик-эксперт
<<<
Вы достигли мастерства в использовании магических реагентов и научились усиливать исцеление и урон, наносимые с их помощью.
<<<
Каждый раз, когда вы сотворяете заклинание, используя инструменты алхимика в качестве фокусировки, вы получаете бонус к одному из бросков этого заклинания. Этот бросок должен восстанавливать хиты или наносить урон кислотой, огнём, некротической энергией или ядом. Бонус равен вашему модификатору Интеллекта (минимум +1).
---
!!! [img[9.png]] Восстанавливающие реагенты
Вы можете добавить восстанавливающие реагенты в некоторые из ваших эликсиров:
* Когда существо выпивает экспериментальный эликсир, который вы создали, оно получает количество временных хитов, равное 2к6 + ваш модификатор Интеллекта (минимум 1 временный хит).
* Вы можете сотворять //малое восстановление// без использования ячейки заклинаний и без подготовки заклинания при условии, что вы используете инструменты алхимика в качестве заклинательной фокусировки. Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум один раз), и вы восстанавливаете все потраченные использования, когда завершаете продолжительный отдых.
---
!!! [img[15.png]] Химическое мастерство
Вы подвергались воздействию такого количества химических реагентов, что теперь они для вас почти безвредны, и вы можете использовать их, чтобы быстро справиться с некоторыми недугами:
* Вы получаете сопротивление к урону кислотой и ядом, а также иммунитет к состоянию [[отравленный|Отравленный]].
* Вы можете сотворять заклинания //высшее восстановление// и //полное исцеление// без использования ячейки заклинаний, подготовки и использования материальных компонентов при условии, что вы используете инструменты алхимика в качестве заклинательной фокусировки. Как только вы сотворяете одно из этих заклинаний с помощью данного умения, вы не можете сотворить его повторно таким образом, пока не завершите продолжительный отдых.
Алхимия - это ремесло, результаты которого в той или иной степени интересуют почти всех приключенцев. Будучи источником всегда востребованного //зелья лечения//, она является многогранным занятием, которое подпитывает (иногда в буквальном смысле) жизнь приключенцев.
Алхимия, как правило, является очень быстрой формой ремесла, но с этим связаны и дополнительные риски: большинство рецептво зависит от одного броска, и неудача приводит к потере всех материалов. Хотя риск часто стоит того во время напряженного сезона приключений, если скорость не имеет большого значения, воспользуйтесь вариантом "[[Взять 10|Процесс создания предметов]]".
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления зелья в самой простой форме:
* Выберите зелье, которое вы хотите изготовить, из таблицы Зелий.
* Приобретите предметы, перечисленные в колонке Материалы для этого зелья.
* Используйте свои [[инструменты алхимика|Инструменты алхимика]] для изготовления зелья в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Интеллекта или Мудрости (на ваш выбор) + ваш бонус мастерства [[инструментов алхимика|Инструменты алхимика]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Алхимия основана на использовании [[инструментов алхимика|Инструменты алхимика]]. Попытка изготовить зелье без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на изготовление алхимических веществ. Алхимия использует ваш модификатор Интеллекта или Мудрости (на ваш выбор).
---
!!!Срок годности и просроченные зелья
Уникальный атрибут алхимии: срок годности зелий после их изготовления составляет 1 год, после чего они становятся просроченными. Этот срок сокращается до 1 месяца, если зелье содержит какой-либо реактивный ингредиент.
Если просроченное зелье используется или употребляется в пределах удвоенного срока годности, совершите бросок к4. При выпадении «1» вы становитесь [[отравленным|Отравленный]] на 1 минуту. Если выпало «2» или «3», зелье будет действовать с ослабленным эффектом; его продолжительность, наносимый им урон и исцеление уменьшаются вдвое. При выпадении «4» зелье действует, как обычно.
Любое зелье, старше удвоенного срока годности, не имеет никакого эффекта, кроме того, что вызывает у выпившего [[отравление|Отравленный]] на 1 минуту.
---
!!!Проверка ремесла
Когда вы хотите поработать над алхимией, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор алхимии = бонус мастерства инструментов алхимика + модификатор Интеллекта или Мудрости (на ваш выбор)
```
!!!Успех и провал
Для алхимии, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Спасбросок алхимии
Некоторые алхимические изделия требуют совершения спасброска. В таких случаях для расчета Сл спасброска используется следующая формула.
```
Сл спасброска алхимии = 8 + бонус мастерства инструментов алхимика + модификатор Интеллекта или Мудрости (на ваш выбор)
```
Спасбросок рассчитывается в момент создания предмета на основе характеристик и бонуса мастерства создателя и не меняется после создания. Спасбросок не включает в себя компетентность и прочие бонусы к броску ремесла.
---
!!!Ограниченная алхимия травника
Хотя травничество в основном используется для сбора трав, существо, владеющее набором травника, обладает ограниченным умением создавать зелья в дополнение к сбору трав. Вы можете использовать владение [[набором травника|Набор травника]] вместо [[инструментов алхимика|Инструменты алхимика]] при создании //зелий лечения//, //зелий яда// и противоядий.
<<<
The seas run red this night, and terror has a face. You are looking upon that face. Pretty, isn’t it?
— Adia Ironheart of the Red Wake, a scarlet corsair
<<<
Many pirates sail the seas, but few reach the infamy of the scarlet corsair, so called from the trail of blood left in her wake. Where most other pirates are content to use intimidation to cow their opponents into submission, allowing them to plunder as they please, the scarlet corsair revels in combat and slaughter.
This isn’t to say that all scarlet corsairs are violent killers, though most certainly are—a few scarlet corsairs refuse to take on a target unless that target is capable of putting up a good fight. Whether patriotic privateer or self-serving buccaneer, the scarlet corsair relies on the reputation of her quick blade and terrible fighting skills to drive her prey before her.
''Scarlet Corsairs in the World:'' The scarlet corsair fills the role of the notorious pirate, a buccaneer of such terrible reputation that the mention of their name is enough to cause a reaction. When the DM needs a feared villain that only the PCs are brave enough to go after, a scarlet corsair is perfect for the role. Similarly, when the campaign calls for a good- hearted rake who glories in the stories people tell about them while pursuing a vendetta against some particular nation or group, the scarlet corsair will equally well fit the bill.
''Scarlet Corsairs in the Game:'' The sea is an open road, and adventure calls to you from a dozen strange shores. You are always on the lookout for the next big prize or daring escapade. Whatever it might be—a lost hoard in a sea demon's cave, a legendary shipwreck haunted by drowned ghosts, the fat treasure ship of a villainous merchant lord, or a misty isle wreathed in magic and mystery—you are determined to seek it out and test your cunning and courage against any obstacle in your path. You mean to blaze a path of fame or notoriety that they'll be talking about a hundred years from now.
Even though you prowl the seas as a reckless freebooter and fierce predator, you are not necessarily a bloody-handed murderer. You would rather steal the ill-gotten gains of others than plunder the weak and poor. The high seas are dangerous enough without making yourself the enemy of all civilized folk, after all. It's better to let honest folk pay for your protection. And if you can drive the truly murderous scum from the seas, then you'll have less competition for the prizes that do catch your eye.
Any particularly infamous pirate in the campaign could qualify as a scarlet corsair. This is not the nameless buccaneer whose exploits confuse and torment authorities as they try to figure out who is responsible—there is never any doubt when a scarlet corsair hits a target.
<<<
''Scarlet Corsair Lore ''
Characters can attempt an Intelligence (History) or can research scarlet corsairs to learn more about them.
''DC 10:'' Some pirates, by dint of their incredible notoriety, are capable of striking fear into entire crews just by showing their flags or other insignias.
''DC 15:'' These buccaneers, called scarlet corsairs in sailor’s slang, don’t hesitate to use fear and dirty tricks—not just to take what they want but to cement their reputations as cutthroats and monsters.
''DC 20:'' If you see the skull-and-manacles of Adia Ironheart, or the black hawk of the Raptor of the Southern Coast, you unfurl your sail, put your best and strongest men at the oars, and make for the horizon.
''DC 25:'' Most scarlet corsairs have a kind of brotherly rivalry going on. They consider only other scarlet corsairs to be their true rivals and equals—everyone else is just prey waiting to happen.
<<<
---
!!Алый корсар
| !Ранг |!Умения |
| !1 |Expert Mariner, Strike Terror |
| !2 |Nerves of Steel, Sea Legs |
| !3 |Bold Attacker |
| !4 |Keelhaul |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое, кроме законного.
* ''Владение навыками.'' Запугивание, Обман.
* ''Особое.'' Должен обладать репутацией грозного пирата или безжалостного морского капитана.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Expert Mariner
While aboard a ship, you gain a +1 bonus to AC and a +2 bonus to initiative, and you are considered proficient in any ability check pertaining to movement, navigation, ship handling, or avoiding hazards aboard a ship. If you are already proficient in an applicable skill, you gain a +2 bonus to such checks. Examples include:
* Dexterity (Acrobatics) checks to balance on a yardarm or a wildly rolling deck.
* Strength (Athletics) checks to climb a ship's hull or scale a mast.
* Wisdom (Perception) checks to spot approaching enemies or hazards.
* Intelligence checks to determine your position or chart a course.
* Dexterity checks to steer through dangerous waters.
If you are in command of the vessel, you provide these bonuses to all crew members who can see or hear you.
!!!Strike Terror
<<<
You attack with a bloodcurdling cry. Your enemy gives ground in fear.
<<<
//Scarlet Corsair • Fear, Martial, Offensive, Weapon (Recharges after a short or long rest)//
When you hit a creature with a melee attack using a weapon, the target takes an extra 2d10 psychic damage. In addition, the target must succeed on a Wisdom saving throw or immediately use its reaction, if available, to move as far as its speed allows away from you. The creature doesn't move into obviously dangerous ground, such as a fire or a pit. A creature immune to being frightened automatically succeeds on the save.
The extra damage increases when you reach 9th level (3d10), 13th level (4d10), and 17th level (5d10).
---
!!Ранг 2
!!!Nerves of Steel
<<<
You are irrepressible. When others would fold up, you shake off your despair and fear.
<<<
//Scarlet Corsair • Martial, Utility (Recharges after a short or long rest) //
On your turn, you can make a saving throw against one effect that a save can end (no action required). If it is the charmed or frightened condition, you gain a +5 bonus on the saving throw.
!!!Sea Legs
On your turn, you can spend an inspiration (no action required) to increase your speed by 10 feet and ignore difficult terrain until the end of your next turn.
---
!!Ранг 3
!!!Bold Attacker
When you hit a creature with a melee attack, you gain advantage on Intelligence, Wisdom, and Charisma saving throws until the end of your next turn.
---
!!Ранг 4
!!!Keelhaul
<<<
You staple your foe with your weapon and drag the creature behind you as you bull your way across the battlefield.
<<<
//Scarlet Corsair • Martial, Offensive, Weapon (Recharges after a long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 5d10 damage, and you can move up to 15 feet without provoking opportunity attacks while pulling the target the same distance. The target must remain adjacent to you. After the movement, the target takes an additional 1d10 bludgeoning damage for every 5 feet it was pulled, or 2d10 bludgeoning damage for every 5 feet it was pulled through difficult terrain.
Вас всегда привлекали другие культуры, начиная с древних и примитивных времён и заканчивая самыми современными достижениями цивилизаций. Изучая обычаи других культур, философию, законы, ритуалы, религиозные верования, языки и искусство, вы узнали, как племена, империи и другие формы общества создают свою судьбу и следуют ей до самого конца. Эти знания дались вам не только через книги и древние свитки, но и за счёт получения информации из первых рук – вы посетили затерянные поселения и изучили местные истории и культуру.
* ''Владение навыками:'' Проницательность, Религия
* ''Языки:'' Два на ваш выбор
* ''Экипировка:'' Журнал, чёрные чернила, писчее перо, комплект дорожной одежды, одна безделушка с уникальными метками и кошель с 10 см
!!!Погружение в культуру народов
Прежде чем встать на путь искателя приключений, вы провели большую часть своей взрослой жизни вдали от родных земель, живя среди тех, кто отличается от вас. Вы изучили их культуру и научились понимать местных жителей, которые в конечном итоге стали относиться к вам как к одному из своих. Одна культура оказала большое влияние на вас, изменив ваши верования и обычаи. Вы можете выбрать расу из таблицы ниже, которая вас приютила, или бросить кубик, чтобы определить случайно.
| !к8 |!Культура| !к8 |!Культура |
| 1 |Ааракокры | 5 |Людоящеры |
| 2 |Гоблины | 6 |Орки |
| 3 |Дварфы | 7 |Полурослики |
| 4 |Люди | 8 |Эльфы |
!!!Умение: Опытный лингвист
Вы можете общаться с гуманоидами, которые не говорят на языках, которые вы знаете. Вы должны понаблюдать за взаимодействием гуманоида с другим гуманоидом в течение 1 дня. После этого вы научитесь основным жестам и словам, которых хватит для общения на базовом уровне.
!!!Персонализация
Антропологи оставляют позади привычное им общество для того, чтобы заняться изучением другого. Они стремятся узнать то, как другие расы или цивилизации сумели выжить или то, что помешало им сделать это. Некоторыми антропологами движет интерес к чему-то новому, а другие гонятся за славой и почётом, попросту желая стать первыми, кто найдёт новую расу, затерянное племя или какую-то информацию о судьбе империи, давно канувшей в лету.
| !к6 |!Черта характера |
| 1 |Я предпочитают компанию тех, кто не похож на меня, включая представителей других рас. |
| 2 |Я сторонник соблюдения этикета приличия и местных обычаев. |
| 3 |Я буду лучше наблюдать, чем вмешиваться. |
| 4 |Живя среди тех, кто почитает насилие, я стал более терпим к нему. |
| 5 |Я рискну своей жизнью, чтобы открыть новую культуру или разгадать тайну чего-то давно забытого. |
| 6 |Когда я впервые прибываю в новое поселение, я должен узнать все обычаи местных. |
| !к6 |!Идеал |
| 1 |''Открытия.'' Я хочу быть первым, кто сумеет найти затерянную цивилизацию. |
| 2 |''Дистанция. ''Ни одна культура не должна вмешиваться в дела другой, даже если последним нужна помощь. |
| 3 |''Знания. ''Познавая другие культуры и расы, мы познаем себя. |
| 4 |''Сила.'' Обычному народу требуется сильный лидер. Я сделаю все возможное, чтобы дать им это. |
| 5 |''Защита.'' Я должен сделать все, что в моих силах, чтобы спасти общество от вымирания. |
| 6 |''Безразличие. ''Жизнь жестока. Зачем кого-то спасать, если он все равно рано или поздно помрёт? |
| !к6 |!Привязанность |
| 1 |Мой учитель дал мне дневник, полный знаний и древней мудрости. Его потеря уничтожит меня. |
| 2 |Однажды пожив в первобытного племени, я хочу вернуться и посмотреть, что с ними стало. |
| 3 |Много лет назад трагедия настигла членов изолированного общества, с которыми я был в хороших отношениях. Я не забыл их. |
| 4 |Я хочу узнать больше о культуре определённых гуманоидов, которая очень привлекает меня. |
| 5 |Я хочу отомстить за клан, племя, королевство или империю, которое было уничтожено. |
| 6 |У меня с собой есть безделушка, которая является ключом к разгадке тайны затерянной цивилизации. |
| !к6 |!Слабость |
| 1 |На море меня сильно укачивает. |
| 2 |Я разговариваю сам с собой и не завожу друзей. |
| 3 |Я верю, что мой интеллект намного выше, чем у тех народов, которые я изучаю. Я уверен, что смогу многому их научить. |
| 4 |Я подцепил очень вредные привычки, живя среди орков, гоблинов или людоящеров. |
| 5 |Я постоянно жалуюсь. |
| 6 |Я ношу племенную маску и никогда её не снимаю. |
<<<
Distance is an illusion, a construction of the mind shackled to the physical world.
— Wayfarer Woad
<<<
Time and space are barriers to most creatures. Only gods, primordials, and legendary beings can break down those barriers. And–perhaps–people like you. You have already learned several secrets that allow you to instantaneously travel between two nearby points. But now, as an arcane wayfarer, you see more clearly into the mechanism behind teleportation. As your knowledge grows, you teleport as naturally and easily as you walk, moving from spot to spot by flexing your mind instead of your muscles. You don't restrict this knowledge to yourself; you also enjoy targeting others with spatial effects, sending friends to safety and transporting foes into dangerous locations.
Although time yet remains beyond your grasp, you know that space is not insurmountable, as most believe it to be. Indeed, sometimes the shortest distance between two locations is not a straight line.
''Arcane Wayfarers in the World:'' The arcane wayfarer focuses on honing her skill at instantaneous magical transportation. Unlike spellcasters of other prestigious associations, an arcane wayfarer need not devote years of her life to the art of teleportation nor focus her attention overmuch on the pursuit of perfection. Still, she learns secrets of the trade that are available only through employment with the Wayfarers Union. The Union is, at its heart, a transportation service that specialty spellcasters provide for those willing to pay.
Most arcane wayfarers are wizards or sorcerers, though a few clerics with access to the Travel domain have been known to pursue this class. Such characters typically have a level or two in bard, ranger, or wizard to meet the Knowledge requirements more quickly.
Wayfarers Union offices are generally found in large cities, staffed by arcane wayfarers who offer a variety of standard services. Particularly qualified NPC arcane wayfarers, called “danger wayfarers,” are sometimes available to teleport bold clients into dangerous locales, though the price is commensurately higher.
''Adaptation:'' This prestige path is quick and to the point. However, even wayfarers have their disputes. Perhaps in your campaign no single Wayfarers Union exists. Instead, many splintered groups each claim particular areas of geography as theirs, and they bitterly contest the “illegal” transportation of goods or travelers in their territory by other groups. Those who can smuggle goods or travelers into areas held by opposing wayfarers or state-sanctioned wayfarers would become probable in such a campaign.
---
!!Арканный путник
| !Ранг | !Звание |!Умения |
| !1 | Drifter |Blink Strike, Hammerfall Step |
| !2 | Nomad |Improved Capacity, Improved Range |
| !3 | Pilgrim |Extra Teleportation, Wayfarer's Evasion |
| !4 | Explorer |Wayfarer's Inspiration, Improved Accuracy, Wayfarer's Step, Terrifying Journey |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Законно-доброе или законно-нейтральное.
* ''Владение навыками.'' Магия.
* ''Владение инструментами.'' [[Инструменты картографа]].
* ''Особое.'' Будущий арканный путник должен вступить в Союз путников (хотя позже он может выйти из него без потери ранее полученных рангов).
<<<
''Wayfarers Union ''
Wayfarers Union offices exist in a number of cities. Most offices are small, each serving as a base for no more than two or three spellcasters—who are rarely to be found sitting around and waiting for potential clients. Instead, the wayfarers retain a small staff of nonspellcasting agents to “work the desk.” When a client comes in seeking quick transportation transportation, the agents contact whichever union spellcaster happens to be available. A wayfarer can usually be ready to travel within the hour, but it’s not unusual for all the union spellcasters in an office to be away at the same time or booked ahead by other clients, so that additional teleportation services might not be available for several days.
<<<
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Blink Strike
Whenever you score a critical hit with an attack roll, you can also teleport the target up to 20 feet.
!!!Hammerfall Step
<<<
You transport both enemies and allies. Your allies experience a pleasant trip to safety; your enemies end up in jeopardy.
<<<
//Rank 1 Incantation (Recharges on a short or long rest)//
As an action, each enemy in a 25-foot cone originating from you must succeed on a Constitution saving throw or take 2d6 force damage, and you can teleport the target up to 15 feet.
Additionally, you can teleport each willing ally in the cone up to 15 feet.
---
!!Ранг 2
!!!Improved Capacity
You can transport material more efficiently. When using any teleportation effect and allows other willing creatures to be brought along, you can bring along one additional target (carrying gear or objects up to its maximum load) per path rank, subject to the same restrictions given in the teleportation's description.
!!!Improved Range
You can travel greater distances when teleporting. When you use any teleportation effect, the maximum distance covered by the teleportation increases by 50%.
---
!!Ранг 3
!!!Extra Teleportation
You can cast teleport without expending a spell slot. You must finish a long rest before you can use this ability again
!!!Wayfarer's Evasion
<<<
As your foe's weapon falls upon you, you suddenly whisk away.
<<<
//Rank 3 Incantation (Recharges on a long rest) //
As a reaction, when you are hit or missed by an attack. you can teleport up to 50 feet.
---
!!Ранг 4
!!!Wayfarer's Inspiration
When you spend an inspiration to gain advantage on an attack roll, you can also teleport up to 20 feet before or after the attack.
!!!Improved Accuracy
You becomes more skilled at arriving on target. When using any teleportation effect that includes a random chance for determining the actual destination (such as teleport), you can roll twice and choose the result you wants.
!!!Wayfarer's Step
You gain teleport 10 ft. as an additional movement mode.
!!!Terrifying Journey
<<<
You send your enemies... elsewhere. Somewhere terrible.
<<<
//Rank 5 Incantation (Recharges on a long rest) //
As an action, each creature in a 10-foot radius sphere centered on a point within 50 feet of you must make a Wisdom saving throw. On a failed save, a target takes 8d6 force damage, and is teleported to an interplanar space for 1 minute. On a successful save, a target takes half as much damage and cannot take reactions for 1 minute.
While in the interplanar space, the target cannot take actions and cannot be targeted. The target can repeat the Wisdom saving throw at the end of each of their turns, returning to the space it was last in on a success. If that space is occupied, the target returns to the nearest unoccupied space of its choice.
A target that cannot take reactions from this incantation can repeat the Wisdom saving throw at the end of each of its turns, ending the effect on a success.
Арканные лучники изучают уникальный эльфийский метод стрельбы, который вплетает магию в выстрелы, чтобы произвести сверхъестественные эффекты. Арканные лучники – самые элитные воины среди эльфов. Они стоят на страже границ эльфийских королевств, зорко следя за нарушителями и используя наделённые магией стрелы, чтобы побеждать монстров и захватчиков, прежде чем они смогут добраться до эльфийских поселений. За многие века методы этих эльфийских лучников были изучены представителями других рас, которые тоже могут сочетать способности к аркане со стрельбой из лука.
---
!!! [img[3.png]] Арканный выстрел
<<<
Вы научились особые магические эффект, сопровождающие некоторые ваши выстрелы.
<<<
Когда вы получаете это умение, вы изучаете два варианта Арканного выстрела на ваш выбору.
Раз в ход, когда вы попадаете атакой стрелковым оружием частью действия [[Атака|Атака]], вы можете применить один из своих вариантов Арканного выстрела к используемому боеприпасу. Если вариант Арканного выстрела не требует броска атаки, вы можете решить о его применении перед совершением атаки.
Если вариант предполагает совершение спасброска, то Сл спасброска рассчитывается следующим образом:
```
Сл спасброска Арканного выстрела = 8 + бонус мастерства + модификатор Интеллекта
```
Вы можете использовать это умение дважды. Потраченные использования этого умения восстанавливаются после завершения короткого или продолжительного отдыха.
Вы изучаете по одному дополнительному варианту Арканного выстрела на 7, 10, 15 и 18 уровней в этом классе.
<<tabs "[tag[Арканный выстрел]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[3.png]] Знания арканного лучника
<<<
Вы изучили магическую теорию или некоторые секреты природы – типичные для практиков этой эльфийской военной традиции.
<<<
Вы получаете владение навыком Магия или Природа (на ваш выбор), и изучаете заговор //фокусы// или //искусство друидов// (на ваш выбор). Базовой характеристикой для использования этих заклинаний является Интеллект.
---
!!! [img[7.png]] Закрученный выстрел
<<<
Вы научились направлять промахнувшийся выстрел в новую цель.
<<<
Когда вы промахиваетесь атакой стрелковым оружием, вы можете бонусным действием перебросить бросок атаки против другой цели, находящейся в пределах 12 м от изначальной цели.
---
!!! [img[7.png]] Магический боеприпас
<<<
Вы получаете способность заряжать боеприпасы магией.
<<<
Когда вы стреляете немагическим боеприпасом из стрелкового оружия, вы можете сделать его магическим с целью преодоления сопротивления и иммунитета к немагическим атакам и урону. Магия в боеприпасе угасает сразу же после попадания или промаха по цели.
---
!!! [img[15.png]] Выстрел всегда наготове
<<<
Ваше магическое мастерство всегда наготове в начале битвы.
<<<
Если при проверке инициативы у вас нет использований Арканного выстрела, вы восстанавливаете одно использование.
Некоторые плуты усиливают свои прекрасно отточенные навыки скрытности и ловкости магией, обучаясь премудростям Иллюзии и Очарования. Этими плутами становятся не только карманники и грабители, но и шутники, интриганы и немалое количество искателей приключений.
---
!!! [img[3.png]] Использование заклинаний
<<<
К своим плутовским талантам вы добавляете возможность сотворять заклинания.
<<<
| !Ур. | !ИЗаг|!Изакл| !Ячейки заклинаний |<|<|<|
|~|~|~| !1 | !2 | !3 | !4 |
| !3 | 2 | 3 | 2 | - | - | - |
| !4 | 2 | 4 | 3 | - | - | - |
| !5 | 2 | 4 | 3 | - | - | - |
| !6 | 2 | 4 | 3 | - | - | - |
| !7 | 2 | 5 | 4 | 2 | - | - |
| !8 | 2 | 6 | 4 | 2 | - | - |
| !9 | 2 | 6 | 4 | 2 | - | - |
| !10 | 3 | 7 | 4 | 3 | - | - |
| !11 | 3 | 8 | 4 | 3 | - | - |
| !12 | 3 | 8 | 4 | 3 | - | - |
| !13 | 3 | 9 | 4 | 3 | 2 | - |
| !14 | 3 | 10 | 4 | 3 | 2 | - |
| !15 | 3 | 10 | 4 | 3 | 2 | - |
| !16 | 3 | 11 | 4 | 3 | 3 | - |
| !17 | 3 | 11 | 4 | 3 | 3 | - |
| !18 | 3 | 11 | 4 | 3 | 3 | - |
| !19 | 3 | 12 | 4 | 3 | 3 | 1 |
| !20 | 3 | 13 | 4 | 3 | 3 | 1 |
//Ур. - Уровень, ИЗаг - Известные заговоры, ИЗакл - Известные заклинания//
---
''Заговоры (заклинания 0 уровня)''
Вам известен заговор //волшебная рука// и два других заговора на ваш выбор из списка заклинаний волшебника. Вы изучаете один дополнительный заговор волшебника на 10 уровне.
''Ячейки заклинаний''
Таблица выше показывает, сколько ячеек заклинаний у вас есть для сотворения заклинаний 1 и более высоких уровней. Для сотворения заклинания вы должны потратить ячейку соответствующего, либо более высокого уровня. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны три заклинания 1 уровня на ваш выбор из списка заклинаний волшебника, два из которых должны принадлежать к школам Иллюзии или Очарования.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Все эти заклинания должны принадлежать школам Иллюзии или Очарования. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний волшебника.
Заклинания, которые вы изучаете на 8, 14 и 20 уровнях, могут принадлежать любой школе магии.
''Заклинательная гибкость''
Каждый раз, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, с уровнем, не превышающим уровень ячеек заклинаний волшебника. Это заклинание должно принадлежать школам Иллюзии или Очарования, кроме тех случаев, когда вы заменяете заклинания, полученные из любой школы на 3, 8, 14 или 20 уровнях.
''Базовая характеристика заклинаний''
Интеллект является базовой характеристикой для сотворения ваших заклинаний волшебника, так как вы узнаёте свои заклинания путём целенаправленного исследования и запоминания.
Вы используете Интеллект в случаях, когда заклинание волшебника ссылается на базовую характеристику. Кроме того, вы используете модификатор Интеллект при определении Сл спасбросков от ваших заклинаний волшебника, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Интеллекта
Модификатор броска атаки = бонус мастерства + модификатор Интеллекта
```
''Фокусировка заклинания''
Вы можете использовать арканную фокусировку в качестве заклинательной фокусировки для заклинаний волшебника.
---
!!! [img[3.png]] Улучшенная волшебная рука
Когда вы сотворяете заговор //волшебная рука//, вы можете создать руку [[невидимой|Невидимый]], и совершать ею следующие дополнительные действия:
* Вы можете положить один предмет, удерживаемый рукой, в контейнер, носимый или несомый другим существом.
* Вы можете достать предмет из контейнера, носимого или несомого другим существом.
* Вы можете использовать [[воровские инструменты|Воровские инструменты]] для вскрытия замков и обезвреживания ловушек на расстоянии.
Вы можете выполнить одно из этих действий, не будучи замеченным, если успешно совершите проверку Ловкости (Ловкость рук) против проверки Мудрости (Внимательность) существа.
Кроме того, вы можете использовать бонусное действие, предоставленное умением Хитрое действие, для управления рукой.
---
!!! [img[9.png]] Магическая засада
Если вы сотворяете заклинание на существо, от которого скрыты, существо совершает любой спасбросок против этого заклинания в этом ходу с помехой.
---
!!! [img[13.png]] Многогранный трюкач
<<<
Вы научились отвлекать цель своей волшебной рукой.
<<<
В свой ход вы бонусным действием можете обозначить существо в пределах 1 м от вашей //волшебной руки//. Если вы так делаете, то до конца этого хода совершаете броски атаки по этому существу с преимуществом.
---
!!! [img[17.png]] Вор заклинаний
<<<
Вы получаете способность магически воровать у другого колдующего знания о том, как сотворять заклинание.
<<<
Сразу после сотворения заклинания существом, целью которого являетесь вы, или же если вы попали в область действия этого заклинания, вы можете реакцией заставить существо совершить спасбросок его базовой характеристики. Сл равна вашей Сл спасброска заклинания. Если спасбросок провален, вы отменяете эффект заклинания на себе, и крадёте знание этого заклинания, если оно как минимум 1 уровня, и вы можете сотворять заклинания этого уровня (оно не обязано быть заклинанием волшебника). Вы знаете это заклинание в течение следующих 10 дней и можете его сотворять, используя свои ячейки заклинаний. Существо, у которого вы украли заклинание, не может его накладывать на протяжении 10 дней.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Сова |Скорость полёта |
| 1/8 |Кровавый ястреб |Скорость полёта |
| 1/4 |Гигантская сова |Скорость полёта |
| 1 |Бурый медведь |— |
| 2 |Белый медведь |Скорость плавания |
| 2 |Саблезубый тигр |— |
| 6 |Мамонт |— |
Артиллерист специализируется на использовании в бою магии для метания огня, снарядов и вспышек энергии. Эта разрушительная сила ценится армиями многих миров. Когда же война заканчивается, некоторые из этих специалистов стремятся обеспечить другим спокойную жизнь, тратя силы на борьбу с ростом напряжённости. Путешествующая по мирам гном-изобретательница Ви особенно активно выступает за то, чтобы всё наладить: «Настало время исправлять ситуацию, а не взрывать всё к чёрту».
---
!!! [img[3.png]] Владение инструментами
Вы получаете владение [[инструментами резчика по дереву|Инструменты резчика по дереву]]. Если вы уже владеете этим набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[3.png]] Заклинания артиллериста
На каждом указанном уровне изобретателя вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
Как только вы получаете заклинание артиллериста, оно считается для вас заклинанием изобретателя, всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
| !УИ |!Заклинания |
| !3 |//волна грома//, //щит// |
| !5 |//дребезги//, //палящий луч// |
| !9 |//огненный шар//, //стена ветров// |
| !13 |//град//, //стена огня// |
| !17 |//конус холода//, //силовая стена// |
//УИ - Уровень изобретателя//
---
!!! [img[3.png]] Мистическая пушка
<<<
Вы научились создавать магическую пушку.
<<<
Используя [[инструменты резчика по дереву|Инструменты резчика по дереву]] или [[инструменты кузнеца|Инструменты кузнеца]], вы можете действием создать Маленькую или Крошечную мистическую пушку в свободном пространстве на горизонтальной поверхности в пределах 1 м от вас. Маленькая пушка остаётся на месте, тогда как Крошечную можно держать в одной руке.
Создав пушку, вы не сможете сделать этого снова, пока не завершите продолжительный отдых или не потратите для этого ячейку заклинаний. Единовременно вы можете иметь только одну пушку и пока она существует вы не можете создать новую.
Пушка — это магический предмет. Независимо от размера она имеет КД 18 и количество хитов, равное вашему пятикратному уровню в классе изобретателя. Пушка имеет иммунитет к урону ядом и психической энергией. Если нужно будет совершить проверку характеристики или спасбросок, считайте все её характеристики равными 10 (+0). При накладывании на пушку заговора //починка// она восстанавливает 2к6 хитов. Пушка исчезает, если её хиты опускаются до 0, либо спустя 1 час. Действием вы можете заставить её исчезнуть раньше.
Когда вы создаете пушку, то определяете её внешний вид и то, есть ли у нее ноги. Также вы сами определяете какого именно она будет типа, выбирая из таблицы ниже. В каждый ваш ход вы можете бонусным действием активировать пушку, если находитесь в пределах 12 м от неё. Частью того же бонусного действия вы можете приказать пушке передвинуться или вскарабкаться на высоту до 3 м в незанятое пространство при условии, что у неё есть ноги.
| !Пушка |!Эффект |
| Защитник |Пушка испускает вспышку положительной энергии, которая даёт каждому существу по вашему выбору в пределах 2 м от пушки и самой пушке количество временных хитов, равное 1к8 + ваш модификатор Интеллекта (минимум +1). |
| Огнемёт |Пушка извергает поток огня в 3-метровом конусе от неё в указанном вами направлении. Каждое существо в зоне поражения должно совершить спасбросок Ловкости против Сл спасброска ваших заклинаний, получая 2к8 урона огнём при провале и половину этого урона при успехе. Огонь поджигает горючие предметы в области, которые никто не несёт и не носит. |
| Силовая баллиста |Совершите дальнобойную атаку заклинанием, исходящую из пушки, по существу или предмету, находящемуся в пределах 24 м от пушки. При попадании цель получает 2к8 урона силовым полем, и, если цель — существо, она отталкивается на 1 м от пушки. |
---
!!! [img[5.png]] Арканное огнестрельное оружие
<<<
Вы знаете, как превратить волшебную палочку, посох или жезл в магическое оружие, проводник ваших разрушительных заклинаний.
<<<
Когда вы завершаете продолжительный отдых, вы можете использовать [[инструменты резчика по дереву|Инструменты резчика по дереву]], чтобы вырезать на палочке, посохе или жезле специальные символы и сделать этот предмет своим арканным огнестрельным оружием. Символы исчезнут с предмета, если вы вырежете их на другом предмете позже. В противном случае они сохраняются бесконечно.
Вы можете использовать своё арканное огнестрельное оружие как заклинательную фокусировку для ваших заклинаний изобретателя. Когда вы накладываете заклинание с помощью этого оружия, бросьте к8 и добавьте результат броска к результату броска урона заклинанием.
---
!!! [img[9.png]] Взрывоопасная пушка
Каждая создаваемая вами мистическая пушка становится более разрушительной:
* Все броски урона пушки увеличиваются на 1к8.
* Если вы находитесь в пределах 12 м от пушки, то можете действием приказать ей взорваться. Это уничтожает пушку и заставляет каждое существо в пределах 4 м от неё совершить спасбросок Ловкости против Сл спасброска ваших заклинаний, и получить 3к8 урона силовым полем при провале и половину этого урона при успехе.
---
!!! [img[15.png]] Укреплённая позиция
Вы — мастер по созданию хорошо защищённых огневых позиций с использованием мистической пушки:
* Вы и ваши союзники получаете укрытие наполовину в пределах 2 м от вашей мистической пушки из-за излучаемого ею мерцающего поля магической защиты.
* Теперь у вас может быть две пушки одновременно. Вы можете создавать две пушки одним действием (но не за одну ячейку заклинаний), и активировать обе одним бонусным действием. Вы определяете, одинаковы ли эти пушки или отличаются друг от друга. Вы не можете создать третью пушку, пока у вас есть две.
Вам нравится выступать на публике. Вы знаете, как их развлечь, очаровать и даже воодушевить. Ваша поэзия может трогать сердца слушателей, пробуждать в них горе или радость, смех или гнев. Ваша музыка ободряет их или заставляет скорбеть. Ваши танцы захватывают, а шутки всегда смешны. Чем бы вы ни занимались, ваша жизнь тесно связана с искусством.
* ''Владение навыками:'' Акробатика, Выступление
* ''Владение инструментами:'' [[Набор для грима|Набор для грима]], один [[музыкальный инструмент|Музыкальные инструменты]]
* ''Экипировка:'' Музыкальный инструмент (на ваш выбор), подарок от поклонницы (любовное письмо, локон волос или безделушка), комплект одежды артиста, кошель с 15 см
!!!Номера артиста
Хороший артист обладает разнообразными номерами. Выберите от одного до трёх амплуа из приведённой таблицы, чтобы определить, чем вы развлекаете публику.
| !к10 |!Амплуа | !к10 |!Амплуа |
| 1 |Акробат | 6 |Поэт |
| 2 |Актёр | 7 |Рассказчик |
| 3 |Жонглёр | 8 |Танцор |
| 4 |Музыкант | 9 |Факир |
| 5 |Певец | 10 |Шут |
!!!Умение: По многочисленным просьбам
Вы всегда можете найти место для выступления. Обычно это таверна или постоялый двор, но это может быть цирк, театр или даже двор знатного господина. В этом месте вы получаете бесплатный постой и еду по скромным или комфортным стандартам (в зависимости от качества заведения), если вы выступаете каждый вечер. Кроме того, ваши выступления делают вас местной знаменитостью. Когда посторонние узнают вас в городе, в котором вы давали представление, они, скорее всего, будут к вам относиться хорошо.
---
!!!Разновидность артиста: Гладиатор
Гладиатор — такой же артист как менестрель или циркач, обученный превращать бой в искусство, от которого ликуют толпы. Вашим амплуа являются яркие сражения, хотя вы можете быть при этом акробатом или актёром. При использовании умения «По многочисленным просьбам» вы можете найти место для выступления в месте, где развлекают сражениями — арену гладиаторов или тайный бойцовский клуб. Вы можете заменить музыкальный инструмент в снаряжении на недорогое, но необычное оружие, такое как трезубец или квадренс.
---
!!!Персонализация
Успешные артисты могут овладевать вниманием публики, поэтому у них яркий или напористый характер. Они могут быть романтичными, а в искусстве и красоте часто обращаются к возвышенным идеалам.
| !к8 |!Черта характера |
| 1 |Для любой ситуации я найду подходящий рассказ. |
| 2 |Куда бы я ни пришёл, я начинаю собирать местные слухи и распространять сплетни. |
| 3 |Я безнадёжный романтик, всегда ищущий «кого-то особого». |
| 4 |Никто не сердится на меня или возле меня подолгу, так как я могу разрядить любую напряжённую обстановку. |
| 5 |Мне нравятся оскорбления, даже если они направлены на меня. |
| 6 |Мне обидно, если я не нахожусь в центре внимания. |
| 7 |Превыше всего я ценю совершенство. |
| 8 |Моё настроение и намерения меняются так же быстро как ноты в музыке. |
| !к6 |!Идеал |
| 1 |''Красота. ''Выступая, я делаю мир лучше. |
| 2 |''Традиции. ''Рассказы, легенды и песни прошлого не должны забываться, так как они учат нас тому, кто мы такие. |
| 3 |''Творчество.'' Миру нужны новые идеи и смелые действия. |
| 4 |''Жадность.'' Я занимаюсь всем этим ради денег и славы. |
| 5 |''Народ.'' Мне нравится видеть улыбки на лицах во время выступления. В этом-то всё дело. |
| 6 |''Честность.'' Искусство должно отражать душу; оно должно идти изнутри и показывать, чем мы являемся. |
| !к6 |!Привязанность |
| 1 |Мой инструмент — самое драгоценное, что у меня есть, и он напоминает мне о моей любви. |
| 2 |Кто-то украл мой драгоценный инструмент, и когда-нибудь я верну его. |
| 3 |Я хочу быть знаменитым, чего бы это ни стоило. |
| 4 |Я боготворю героя старых рассказов, и всегда сравниваю свои поступки с его. |
| 5 |Я всё сделаю, чтобы доказать превосходство над ненавистным конкурентом. |
| 6 |Я сделаю что угодно для других членов моей старой труппы. |
| !к6 |!Слабость |
| 1 |Я пойду на всё ради славы и известности. |
| 2 |Не могу устоять перед смазливым личиком. |
| 3 |Я не могу вернуться домой из-за скандала. Неприятности такого рода словно преследуют меня. |
| 4 |Однажды я высмеял дворянина, который всё ещё хочет оторвать мне голову. Это была ошибка, но я могу повторить её ещё неоднократно. |
| 5 |Я не могу скрывать свои истинные чувства. Острый язык всегда приносит мне неприятности. |
| 6 |Я очень стараюсь исправиться, но друзьям не стоит на меня полагаться. |
Археологи много узнают о давно затерянных империях и культурах, изучая их останки – кости, руины, оставшиеся после них предметы быта и гробницы. Те, кто посвятили свою жизнь археологии, отправляются в разные уголки мира, чтобы исследовать разрушенные города и затерянные подземелья, копаться в земле ради ценных артефактов, которые смогут рассказать историю о монархах и верховных жрецах, войнах и катаклизмах.
* ''Владение навыками:'' История, Выживание
* ''Владение инструментами:'' [[Инструменты картографа]] или [[инструменты навигатора|Инструменты навигатора]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Контейнер для карт и свитков содержащий карту затерянного города или подземелья, шахтёрский фонарь, кирка, комплект одежды исследователя, лопата, средняя палатка, одна безделушка с последних раскопок и кошель с 25 см
!!!Искатель
Прежде чем встать на путь искателя приключений, вы провели большую часть взрослой жизни, копаясь в пыли в поисках реликвий, обладающих весьма сомнительной ценностью. Вам удалось продать несколько интересных экземпляров, что позволило вам купить хорошее снаряжение для начала пути приключенца. Один из предметов представляет для вас особую эмоциональную ценностью. Выберите его таблицы ниже или бросьте кубик, чтобы определить случайно.
| !к8 |!Предмет | !к8 |!Предмет |
| 1 |Кнут | 5 |Молоток |
| 2 |Ломик | 6 |Сигнальный фонарь |
| 3 |Лопата | 7 |Шест (3 м) |
| 4 |Медальон | 8 |Шляпа |
!!!Умение: Исторические знания
Когда вы входите в руины или подземелье, вы можете с уверенностью определить их первоначальное предназначение и создателей, если они являются представителями дварфов, эльфов, людей, юань-ти и других известных рас. Также вы можете прикинуть стоимость предмета, которому более века.
!!!Персонализация
Лишь немногие археологи смогут удержаться от желания исследовать затерянные руины или подземелья, особенно если дело касается легенд и слухов о несметных сокровищах чародеев, военачальников или королевских семей. Некоторые археологи гонятся за славой или богатством, другие считают себя некими светочами, у которых есть шанс представить миру забытое прошлое или скрыть от сообщества сокровище, которое не должно оказаться в плохих руках. Вне зависимости от мотивации, археологи сочетают в себе качества умудрённого опытом историка, смешанного с отчаянным героизмом и неудержимой тягой к охоте за сокровищами.
| !к8 |!Черта характера |
| 1 |Мне нравятся хорошие загадки и тайны. |
| 2 |Я храню всё и никогда ничего не выбрасываю. |
| 3 |Слава для меня важнее, чем деньги. |
| 4 |Я не чураюсь забрать что-то у мёртвого. |
| 5 |В пыльной гробнице я чувствую себя счастливее, чем в самом сердце цивилизации. |
| 6 |Ловушки меня не беспокоят. Меня беспокоят идиоты, которые их активируют. |
| 7 |Неудачи случаются, но я никогда не сдамся! |
| 8 |Пусть я и похож на ботаника, но люблю хорошую драку. Эти кулаки созданы для выбивания дури. |
| !к6 |!Идеал |
| 1 |''Сохранение.'' Этот артефакт принадлежит музею. |
| 2 |''Жадность.'' Я не буду рисковать своей жизнью просто так. Я ожидаю оплаты за это. |
| 3 |''Жажда смерти. ''Нет ничего более захватывающего, чем побег из лап смерти. |
| 4 |''Достоинство.'' К мёртвым и их имуществу нужно относиться с должным уважением. |
| 5 |''Бессмертие.'' Все мои похождения связаны с поиском секретов вечной жизни. |
| 6 |''Опасность.'' С любым крупным открытием приходит и большая опасность. Два зайца одним махом. |
| !к6 |!Привязанность |
| 1 |С раннего детства я слушал рассказы о затерянном городе. Я найду его, разгадаю его секреты и займу своё место в анналах истории. |
| 2 |Я хочу найти своего учителя, который пропал во время экспедиции некоторое время назад. |
| 3 |У меня есть друг-соперник. Только один из нас сможет стать самым лучшим. Я докажу, что им стану я. |
| 4 |Я не буду продавать предмет искусства или другое сокровище, если оно имеет культурную ценность. |
| 5 |Я тайно влюблён в того, кто выделяет средства для моих археологических экспедиций. |
| 6 |Я хочу принести славу библиотеке, музею или университету. |
| !к6 |!Слабость |
| 1 |Я в тайне боюсь одного из обычных диких животных. На своей работе я вижу их постоянно. |
| 2 |Я не могу уйти из комнаты, не попытавшись найти потайную дверь. |
| 3 |Если я не исследую древние руины или подземелья, то становлюсь нервным и нетерпеливым. |
| 4 |У меня нет времени на друзей или семью. Каждую свободную минуту я трачу на подготовку или обдумывание своей следующей экспедиции. |
| 5 |Когда есть выбор, идти направо или налево, я всегда выбираю налево. |
| 6 |Я могу уснуть только в полной темноте. |
<<tabs "[tag[Архетип воина]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
<<tabs "[tag[Архетип плута]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
<<tabs "[tag[Архетип следопыта]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
<<tabs "[tag[Архив2020]!sort[created]]" "" "$:/state/tab1" "tc-vertical">>
<<tabs "[tag[Архив2021]!sort[created]]" "" "$:/state/tab1" "tc-vertical">>
Ваш покровитель — это лорд или леди фей. Существо из легенд, хранящее секреты, забытые еще до зарождения смертных рас. Мотивы, движущие такими сущностями, непостижимы, причудливы, и могут диктоваться стремлением к величайшим магическим познаниям или вековыми обидами. Сущности такого рода включают Морозного Принца, Королеву Воздуха и Тьмы — правительницу Сумеречного Двора, Титанию из Летнего Двора, её супруга Оберона — Зелёного Лорда, Хирсама — Принца Дураков, а также древних карг.
---
!!! [img[1.png]] Расширенный список заклинаний
Нежить позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//огонь фей//, //усыпление// |
| !2 |//воображаемая сила//, //умиротворение// |
| !3 |//мерцание//, //рост растений// |
| !4 |//высшая невидимость//, //подчинение зверя// |
| !5 |//подчинение личности//, //притворство// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Фейское влияние
<<<
Ваш покровитель дарует вам возможность излучать притягательное и пугающее влияние фей.
<<<
Действием вы можете заставить всех существ в кубе с длиной ребра 2 м, исходящем от вас, совершить спасбросок Мудрости со Сл ваших заклинаний колдуна. Все существа, провалившие спасбросок, становятся [[очарованными|Очарованный]] или [[испуганными|Испуганный]] вами (на ваш выбор) до конца вашего следующего хода.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[6.png]] Туманный побег
<<<
Получив урон, вы можете раствориться облачком тумана.
<<<
Когда вы получаете урон, вы можете реакцией стать [[невидимым|Невидимый]] и телепортироваться на расстоянии до 12 м в видимое вами свободное пространство. Вы остаётесь [[невидимым|Невидимый]] до начала своего следующего хода, или пока не совершите атаку или сотворите заклинание.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[10.png]] Чарующая защита
<<<
Ваш покровитель научил вас обращать воздействующую на разум магию ваших врагов против них самих.
<<<
Вы получаете иммунитет к состоянию [[Очарованный]], и, когда другое существо пытается очаровать вас, вы можете реакцией попытаться обратить очарование против его создателя. Это существо должно преуспеть в спасброске Мудрости со Сл ваших заклинаний колдуна, иначе оно станет [[очаровано|Очарованный]] вами на 1 минуту или до тех пор, пока не получит любой урон.
---
!!! [img[14.png]] Мрачная фантазия
<<<
Вы способны погружать существ в иллюзорное пространство.
<<<
Действием вы можете выбрать видимое вами существо в пределах 12 м от вас. Оно должно преуспеть в спасброске Мудрости со Сл ваших заклинаний колдуна, иначе станет [[очаровано|Очарованный]] или [[испугано|Испуганный]] вами (на ваш выбор) на 1 минуту, либо пока вы не потеряете концентрацию (как если бы концентрировались на заклинании). Эффект оканчивается преждевременно, если существо получает любой урон.
Пока длится эффект, существо считает, что оно потерялось в туманном пространстве, образ которого выбираете вы. Существо может видеть и слышать только себя, вас и иллюзию.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
<<<
Вы получаете охотничье чутьё волка.
<<<
Вы совершаете проверки Мудрости (Выживание) с целью движения по следу или охоты на дичь с преимуществом.
<<<
Вы получаете неутомимость лося.
<<<
Ваша скорость [[путешествия на дальние расстояния|Путешествия на дальние расстояния]], и эта же скорость десяти ваших союзников в пределах 12 м от вас, пока вы дееспособны, удваивается.
<<<
Вы получаете мощь медведя.
<<<
Ваша [[грузоподъёмность|Грузоподъёмность и нагрузка]] удваивается, и вы совершаете проверки Силы с целью перемещения или разрушения предметов с преимуществом.
<<<
Вы получаете зоркость орла.
<<<
Вы получаете [[сумеречное зрение|Зрение и свет]] радиусом 1 километр, а ваши глаза способны различать мелкие детали на этом расстоянии.
<<<
Вы получаете инстинкты выживания тигра.
<<<
Вы владеете двумя из следующих навыков на ваш выбор: Акробатика, Атлетика, Выживание или Скрытность.
<<<
Beyond the world you know, higher powers dwell. There lies the font of my strength, and the source of your doom.
— Vaan the Brightgrave
<<<
You are a theologian, and you have devoted yourself to learning the nature of the gods and their dominions. Through years of study, you have developed a philosophy that grants you a deep understanding of higher realities and the properties of divine power.
As an astral loremaster, you use your uncanny insights to tap into the raw power of the forces that shape the Astral Sea, creating a wide range of effects with your prayers. You wield divine energy in ways that other scholar's cannot, warding and sustaining your allies against their foes.
''Astral Loremasters in the World:'' Astral loremasters are spellcasters who concentrate on knowledge, valuing lore and secrets over gold. They uncover secrets that they then use to better themselves mentally, physically, and spiritually.
Astral loremasters sometimes gather in secluded cabals but are more often found as members of an order attached to a university, a library, or some other source of information. They’re likely to earn extra money as sages and information brokers, pouring their wages into their own research. An astral loremaster might also adopt a position as a wise one in a community, drawing upon their knowledge to help others.
''The Astral Sea:'' Beyond the circles of the mortal world lies an expanse of infinite possibility. The Astral Sea is a great silvery void in which countless fragments of divine or mortal purpose drift—dreams, ideas, and wishes, as well as fears and dark desires. All these thoughts and feelings become real and physical in this place. Most are virtually unnoticeable, of course. An ordinary mortal’s passing fancy vanishes in the Astral Sea like a single raindrop falling into a mighty ocean. But dreams and dreads with power are a different matter. The desires of deities or beliefs shared by thousands of mortals take shape as vast kingdoms or even whole worlds within the Astral Sea.
These kingdoms and worlds are the astral dominions— planes adrift within the fundamental expanse of the Astral Sea. Some are heavenly realms of peace and splendor. Some are fantastic dreamscapes filled with marvels and strange perils. And some are dark and tormented places, hellish domains filled with unspeakable evil. Of all the planes, with the exception of the Far Realm, the dominions of the Astral Sea are the most remote from the mortal world. Only the mightiest of heroes venture here.
<<<
''The Nature of the Astral Sea''
The Astral Sea is not a sea, of course. It’s more like a fantastic version of outer space. It’s filled with vast clouds of a luminous, silver-gray substance that is not mist and not liquid. Thousands of stars glitter in the distance, especially in darker portions of the plane. Vast expanses of “open air” between these drifting clouds provide travelers with hundreds of miles of visibility, and even in the middle of the densest astral mists travelers can see objects several miles away with ease—the stuff of the Astral Sea just doesn’t impede vision much at all.
Someone floating in the astral doesn’t get wet or cold. A cool tingle on the skin is the only sensation. Creatures who need to breathe can do so without trouble. Winged creatures can fly through the astral stuff as if it were air, and natural swimmers can swim through it as if it were water. Other creatures can move slowly by desiring to move.
<<<
---
!!Астральный магистр
| !Ранг |!Умения |
| !1 |Astral Mask, Savant's Inspiration, Astral Flood |
| !2 |Astral Secrets, Radiant Healing |
| !3 |Astral Lore, Swim the Astral Sea, Additional Secret |
| !4 |Bonus Language, Astral Terrain, Additional Secret |
---
!!!Предварительные условия:
* ''Владение навыками.'' Магия, Религия.
* ''Заклинания.'' Способность сотворять семь заклинаний школы прорицания, одно из которых должно быть 3 уровня или выше.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Astral Mask
You are considered a celestial if you are good or a fiend if you are evil in addition to your normal type for the purposes of effects that relate to creature type. This grants you a +1 bonus on all saving throws against all effects that don't specifically target celestials and fiends.
!!!Savant's Inspiration
When you spend an inspiration for any reason, one ally who can see you can spend a hit die to regain hit points, just as if they were spending a hit die after finishing a short rest.
!!!Astral Flood
<<<
A wave of raw energy drawn from the Astral Sea flows through you and lashes out at your enemies.
<<<
//Divine Prayer (Recharges on a short or long rest)//
As an action, choose any number of creatures you can see in a 25-foot cone originating from you. Each target must succeed on a Dexterity saving throw or take 2d6 cold or radiant damage (choose one for all targets). A target suffers an additional effect on a failed save based on the damage type:
* ''Cold:'' The target suffers disadvantage on all attack rolls until the end of your next turn.
* ''Radiant:'' The target cannot see creatures more than 25 feet away from it until the end of your next turn.
The damage of this prayer increases when you reach 5th level (4d6), 11th level (6d6), and 17th level (8d6).
---
!!Ранг 2
!!!Radiant Healing
Your healing is drawn directly from the Astral Sea, which sears your enemies as it bolsters your allies. Whenever you restore hit points to a creature with a prayer or spell, each of your enemies within 5 feet of the target take radiant damage equal to your Charisma modifier (minimum 1).
!!!Astral Secrets
In your studies, you stumble upon all sorts of applicable knowledge and secrets. You know a number of secrets equal to your base Intelligence modifier (without temporary magical enhancements) plus 1. So if your Intelligence modifier is +3 and you are Tier 2, you know four secrets. You learn one additional secret at tiers 3 and 4:
* ''Instant Mastery.'' You gain proficiency in a skill of your choice.
* ''Secret Health.'' +1 hit point per character level.
* ''Inner Strength.'' +2 bonus on Wisdom and Charisma ability checks.
* ''Lore of True Stamina.'' +2 bonus on Strength and Constitution ability checks.
* ''Knowledge of Avoidance.'' +2 bonus on Dexterity and Intelligence ability checks.
* ''Weapon Trick.'' +1 bonus on attack rolls.
* ''Dodge Trick.'' +1 bonus to AC.
* ''Newfound Arcana.'' Gain one spell of 1st or 2nd level from the Cleric or Wizard spell list (this spell is always considered prepared).
If using the "Buying Features with Downtime and Gold" to award Path Features, each secret counts as a separate feature.
---
!!Ранг 3
!!!Astral Lore
You gather knowledge, gaining the ability to know legends or information regarding various topics, that many would discard as useless. You gain a bonus on Intelligence ability checks equal to your tiers in astral loremaster.
!!!Swim the Astral Sea
<<<
You and your companion move effortlessly through astral currents, bypassing mundane impediments.
<<<
//Divine Prayer (Recharges on a long rest)//
As a bonus action, you can choose yourself and any number of creatures you can see within 50 feet of you. Each target can move up to their speed. This movement ignores difficult terrain, and does not provoke opportunity attacks. Each target is also unaffected by reductions to speed, and the grapple and restrained conditions during this movement.
---
!!Ранг 4
!!!Bonus Language
You, in your laborious studies, learn new languages in order to access more knowledge. You learn one new language.
!!!Astral Terrain
<<<
You assail your enemies with the raw stuff of the Astral Sea, creating a temporary echo of that plane.
<<<
//Divine Prayer (Recharges on a long rest)//
As an action, choose any number of creatures in a 20-foot radius sphere centered on a point you can see within 50 feet. Each target must make a Dexterity saving throw. A target takes 2d6 cold or radiant damage (choose one for all targets) on a failed save, or half as much damage on a success.
Additionally, the sphere creates a zone of shimmering substance that lasts for up to 1 minute. The zone's effect depends on the prayer's damage type.
* ''Cold:'' Any enemy that starts its turn within the zone has disadvantage on saving throws and all attack rolls against it have advantage until the end of your next turn.
* ''Radiant:'' Whenever an ally within the zone regains hit points, they regain an additional 2d4 hit points.
You must concentrate on this prayer as if concentrating on a spell.
The damage dealt and hit points restored by this prayer increase when you reach 5th level (4d6 damage, and 2d6 hit points), 11th level (6d6 damage, and 2d8 hit points), and 17th level (8d6 damage, and 2d12 hit points).
!!!Безоружные атаки
При совершении рукопашной атаки оружием вы можете использовать безоружную атаку: пнуть, ударить кулаком, головой или другой аналогичный удар (ничто из этого не считается оружием). При попадании безоружная атака причиняет 1 + модификатор Силы дробящего урона. Все персонажи владеют безоружными атаками.
---
!!!Прорубание сквозь врагов
Если рукопашная атака уменьшает до 0 хиты существа с полными хитами, излишки урона от атаки можно перенести на другое существо поблизости. Атакующий нацеливается на другое существо пределах досягаемости, и, если исходный бросок атаки может попасть и по нему тоже, причиняет ему оставшийся урон. Если хиты того существа тоже были полными, и тоже опустились до 0, повторите процесс, перенося остатки урона, пока не кончатся доступные цели или пока этот урон не сможет опустить хиты здорового существа до 0.
---
!!!Сражение двумя оружиями
Если вы совершаете действие Атака и атакуете лёгким оружием, удерживаемым в одной руке, вы можете частью этого действия совершить одну дополнительную атаку лёгким оружием, удерживаемым в другой руке. Вы не добавляете модификатор характеристики к урону этой атаки, если он положительный. Вы не можете совершить более одной дополнительной атаки частью действия Атака, в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).
---
!!!Особые атаки
Помимо обычных рукопашных атак действием Атака вы можете совершать ряд особых атак.
Если вы можете совершать несколько атак действием Атака, особая атака заменяет одну из них.
<<tabs "[tag[Особая атака]nsort[]]" "Обезоруживание" "$:/state/tab1">>
Вы стремитесь к физическому совершенству, трепет от соревнований разжигает вашу кровь, а рёв толпы толкает вас вперёд. Рассказы о ваших подвигах бегут вперёд вас и способны открывать двери или развязывать языки. Будь то в одном из городов, между ними, или среди нечеловеческих народов, физические соревнования и те, кто посвящает им свою жизнь, вызывают уважение, граничащее с почтением. Атлеты происходят из всех культур и слоёв общества, и довольно часто пересекаются друг с другом.
* ''Владение навыками:'' Акробатика, Атлетика
* ''Владение инструментами:'' [[Наземный транспорт|Наземный и водный транспорт]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Бронзовый диск или кожаный мяч, счастливый талисман или прошлый трофей, комплект дорожной одежды и кошель с 10 см
!!!Предпочитаемое соревнование
Хотя многие атлеты практикуются в различных играх и состязаниях, большинство из них преуспевают в одном виде соревнований. Вы можете выбрать предпочитаемое соревнование из таблицы ниже, или бросить кубик, чтобы определить случайно.
| !к8 |!Соревнование | !к8 |!Соревнование |
| 1 |Бег на длинные дистанции | 5 |Марафон |
| 2 |Бокс | 6 |Пятиборье |
| 3 |Борьба | 7 |Скачки |
| 4 |Гонки на колесницах | 8 |Смешанные единоборства |
!!!Умение: Отголоски победы
Вы вызвали восхищение зрителей, коллег-спортсменов и тренеров в регионе, где проходили ваши прошлые спортивные победы. При посещении любого поселения в пределах 100 км от того места, где вы выросли, есть 50-процентная вероятность, что вы найдете там кого-то, кто восхищается вами и готов предоставить информацию или временное убежище.
!!!Персонализация
Состязания могут создать прочные связи между товарищами по команде и соперниками или разжечь ожесточенные распри, которые распространяются за пределы арены. Атлеты часто применяют уроки своих тренировок к своей жизни в целом.
| !к8 |!Черта характера |
| 1 |Я чувствую себя наиболее спокойно во время физических нагрузок, будь то упражнения или битвы. |
| 2 |Не люблю сидеть без дела. |
| 3 |У меня есть распорядок тренировок, который я отказываюсь нарушать. |
| 4 |Препятствия существуют, чтобы их преодолевать. |
| 5 |Когда я вижу, как другие борются за жизнь, я предлагаю помощь. |
| 6 |Я люблю обмениваться шутками и насмешками. |
| 7 |Все, что стоит делать, стоит делать лучше всего. |
| 8 |Меня раздражает, если люди хвалят кого-то другого, а не меня. |
| !к6 |!Идеал |
| 1 |''Состязание.'' Я стремлюсь проверять себя во всем. |
| 2 |''Триумф. ''Лучшая часть победы - это унижение моих соперников. |
| 3 |''Товарищество.'' Самые прочные узы выковываются в борьбе. |
| 4 |''Народ.'' Я стремлюсь вдохновлять своих зрителей. |
| 5 |''Традиция.'' В каждой игре есть правила, и условия должны быть равными. |
| 6 |''Рост.'' Уроки заключаются в победе и поражении. |
| !к6 |!Привязанность |
| 1 |Мои товарищи по команде - моя семья. |
| 2 |Я одолею соперника и докажу, что я лучше. |
| 3 |Моя ошибка причинила боль кому-то. Я больше никогда не совершу эту ошибку. |
| 4 |Я стану лучшим ради чести и славы моего дома. |
| 5 |Человек, который тренировал меня, - самый важный человек в моем мире. |
| 6 |Я стараюсь соответствовать примеру конкретного героя. |
| !к6 |!Слабость |
| 1 |У меня есть привычка, которая угрожает моей репутации или здоровью. |
| 2 |Я сделаю все, чтобы победить. |
| 3 |Я игнорирую всех, кто не соревнуется, и всех, кто мне проигрывает. |
| 4 |У меня непрекращающаяся боль из-за старых травм. |
| 5 |Любое поражение или неудача с моей стороны происходит из-за того, что мой противник жульничал. |
| 6 |Я должен быть капитаном любой команды, к которой присоединяюсь. |
Баннереты – бойцы, поклявшиеся защищать корону, которые сражаются со злом за пределами границ их королевства. Им поручено странствовать по свету в качестве странствующих рыцарей, полагаясь на свои суждения, храбрость и верность, благодаря которым они одерживают победу над злодеями.
Баннерет вдохновляет других, совершая в бою самые смелые поступки. Одного присутствия Баннерета в деревне достаточно, чтобы заставить бандитов и мародёров искать себе добычу попроще. В одиночку он – умелый воин, но Баннерет, ведущий за собой группу союзников, может превратить даже самое плохо оснащенное ополчение в свирепую боевую группу.
Баннерет предпочитает вести за собой делами, а не словами. Когда он возглавляет атаку, его действия могут пробудить в союзниках такие резервы мужества и убежденности, о которых они и не подозревали.
---
!!! [img[3.png]] Сплочающий крик
<<<
Вы научились вдохновлять своих союзников на дальнейшую борьбу, невзирая на полученные ранения.
<<<
Когда вы используете свое умение Второе дыхание, вы можете выбрать до трёх союзных существ в пределах 12 м от вас. Каждое из них восстанавливает количество хитов равное вашему уровню воина, при условии, что существо может вас видеть и слышать.
---
!!! [img[7.png]] Посланник короны
<<<
Баннереты часто служат посланниками короны. От этих воинов высокого положения ожидают достойного поведения.
<<<
Вы получаете владение навыком Убеждение. Если вы уже владеете этим навыком, выберите владение в одном из следующих навыков: Выступление, Запугивание, Проницательность или Уход за животными.
Ваш бонус мастерства для проверок Убеждения удваивается.
---
!!! [img[10.png]] Вдохновляющий всплеск
Когда вы используете свое умение Всплеск действий, вы можете выбрать одно союзное существо в пределах 12 м от вас. Это существо может реакцией совершить одну атаку оружием, при условии, что существо может вас видеть и слышать.
Начиная с 18 уровня вы можете выбрать двух союзных существ.
---
!!! [img[15.png]] Бастион
Когда вы используете свое умение Упорный, чтобы перебросить спасбросок Интеллекта, Мудрости или Харизмы и не являетесь [[недееспособным|Недееспособный]], вы можете выбрать союзника в пределах 12 м от вас, который провалил спасбросок от того же эффекта. Если существо может видеть или слышать вас, оно может перебросить спасбросок и должно использовать новый результат.
[img width=350 class="centerme" [https://i.imgur.com/HDJTzwM.png]]
<<tabs "[[Описание бардов]] [[Классовые умения бардов]] [[Коллегии бардов]]" "" "$:/state/tab1">>
Бедное существование означает отсутствие благ, доступных в стабильном обществе. Однообразная пища и плохой ночлег, рваная одежда и непредсказуемое будущее приводят к неприятным последствиям. Вы можете жить в комнате в ночлежке или в общем зале над таверной. Закон вас частично защищает, но вам всё равно придётся бороться с насилием, преступлениями и болезнями. Те, кто ведут такое существование, обычно трудятся чернорабочими, лоточниками, коробейниками, ворами и занимают другие не престижные должности.
Прошли те счастливые дни, когда после тяжелого трудового дня вы заходили в любимый трактир. Всё изменилось, и вам повезло, что вы остались в живых. На родине вы могли причислить себя к тем уличным мудрецам, которые знали, когда нужно дать взятку и с кем работать, чтобы заработать на жизнь. Ваша способность прислушиваться к ветрам перемен спасала вас и раньше, а в этот раз она позволила вам стать одним из немногих счастливчиков, которым удалось выбраться из катастрофы с чем-то большим, чем просто рубашка на спине.
* ''Владение навыками:'' Атлетика, Проницательность
* ''Владение инструментами:'' Один вид [[инструментов ремесленников|Инструменты ремесленников]]
* ''Языки:'' Один на ваш выбор
* ''Снаряжение:'' Инструменты ремесленника, которыми вы владеете, памятная безделушка о прошлой жизни, комплект дорожной одежды и кошель с 15 см
!!!Умение: Выживший
Каким бы ни было ваше прежнее положение, теперь вы один из многих беженцев, прибывших на новое место. Вы можете найти убежище среди других жителей вашей родины и тех, кто сочувствует вашей участи.
!!!Персонализация
| !к8 |!Черта характера |
| 1 |Возможно, я потерял все, ради чего работал большую часть своей жизни, но впереди еще много работы, нет времени задерживаться на прошлом. |
| 2 |Я упорно трудился, чтобы добиться своего, и не позволю небольшим трудностям помешать мне добиться успеха. |
| 3 |Я защищаю тех, кто меня окружает, никогда не знаешь, когда кто-то из них пригодится. |
| 4 |Я всегда продвигался вперед за счет самопожертвования, зачем менять это сейчас? |
| 5 |Я готовлюсь ко всему, это окупилось дома и окупится снова. |
| 6 |Я верну себе свой дом, хотя путь может быть долгим, я никогда не теряю надежды. |
| 7 |Я никогда не заботился о личной гигиене и удивляюсь, что это беспокоит других. |
| 8 |Я всегда готов оказать добровольную помощь, лишь бы мне ничего не пришлось делать. |
| !к6 |!Идеал |
| 1 |''Правосудие. ''Коррупция привела мою родину к краху, и я больше не потерплю этого. |
| 2 |''Принятие. ''Стабильность - это миф. Нет смысла думать, что ты можешь контролировать свое будущее. |
| 3 |''Надежда.'' Меня направляет высшая сила, и я верю, что в конце концов все будет хорошо. |
| 4 |''Сдержанность.'' Я ненавижу тех, кто стал причиной моей потери. Это все, что я могу сделать, чтобы не наброситься на них. |
| 5 |''Сила.'' Как показало прошлое, выживают сильные. Если ты слаб, то заслуживаешь того, что получишь. |
| 6 |''Открытость.'' Я всегда готов поделиться историей своей жизни с любым, кто меня выслушает. |
| !к6 |!Привязанность |
| 1 |У меня есть шанс на новую жизнь, и на этот раз я собираюсь все сделать правильно. |
| 2 |Правитель навлек эти страдания на наш народ. Я добьюсь, чтобы он предстал перед судом.|
| 3 |Я жду того дня, когда смогу вернуться в свой дом. |
| 4 |Я никогда не забуду о долге перед теми, кто помог мне. Я буду готов вернуть этот долг, когда меня призовут. |
| 5 |Дома был кто-то, кто был мне дорог, я узнаю, что с ним случилось. |
| 6 |Некоторые говорят, что моя жизнь не стоила спасения, я докажу, что они ошибаются. |
| !к6 |!Слабость |
| 1 |Я использовал жизни детей, чтобы совершить побег. |
| 2 |Я поклонник аутсайдеров и всегда ставлю на проигрывающую команду. |
| 3 |Я не в состоянии постоять за себя. |
| 4 |Я буду занимать деньги у друзей без намерения их возвращать. |
| 5 |Я не умею хранить секреты. Секрет - это просто нерассказанная история. |
| 6 |Когда что-то идет не так, я никогда не виноват. |
Вы выросли на улице в бедности и одиночестве, лишённые родителей. Никто не присматривал и не заботился о вас, и вам пришлось научиться делать это самому. Вам приходилось постоянно бороться за еду и следить за другими неприкаянными душами, способными обокрасть вас. Вы спали на чердаках и в переулках, мокли под дождём и боролись с болезнями, не получая медицинской помощи или приюта. Вы выжили, невзирая на все трудности, и сделали это благодаря своей сноровке, силе или скорости.
Вы начинаете приключение с суммой денег, достаточной, чтоб скромно, но уверенно прожить десять дней. Как вы получили эти деньги? Что позволило вам перейти к нормальной жизни, преодолев нищету?
* ''Владение навыками:'' Ловкость рук, Скрытность
* ''Владение инструментами:'' [[Воровские инструменты|Воровские инструменты]], [[набор для грима|Набор для грима]]
* ''Экипировка:'' Маленький нож, карта города, в котором вы выросли, ручная мышь, безделушка в память о родителях, комплект одежды селянина, кошель с 10 см
!!!Умение: Городские тайны
Вы знаете тайные лазы и проходы городских улиц, позволяющие пройти там, где другие не увидят пути. Вне боя вы (и ведомые вами союзники) можете перемещаться по городу вдвое быстрее обычного.
!!!Персонализация
Жизнь в нищете оставляет свой отпечаток на беспризорниках. В них, как правило, сильна привязанность к людям, с которыми они делили тяготы уличной жизни, или они исполнены желанием добиться лучшей доли, и, возможно, расквитаться с богачами, от которых они натерпелись.
| !к8 |!Черта характера |
| 1 |В моих карманах полно побрякушек и объедков. |
| 2 |Я задаю очень много вопросов. |
| 3 |Я часто забиваюсь в узкие закутки, где никто не сможет добраться до меня. |
| 4 |Я всегда сплю, прижавшись спиной к стене или дереву, сжимая узелок со всеми своими пожитками в руках. |
| 5 |Я не воспитан, и ем как свинья. |
| 6 |Я убеждён, что все, кто проявляют доброту ко мне, на самом деле скрывают злые намерения. |
| 7 |Я не люблю мыться. |
| 8 |Я прямо говорю о том, на что прочие предпочитают лишь намекнуть, или промолчать. |
| !к6 |!Идеал |
| 1 |''Уважение.'' Все люди, богатые ли они, или бедные, достойны уважения. |
| 2 |''Общность.'' Вы должны заботиться друг о друге, ведь никто другой этого не сделает. |
| 3 |''Перемены.'' Убогие возвысятся, а великие падут. Перемены в природе вещей. |
| 4 |''Возмездие.'' Нужно показать богачам, чего стоит жизнь и смерть в трущобах. |
| 5 |''Люди.'' Я помогаю тем, кто помогает мне. Это позволяет нам выжить. |
| 6 |''Устремление.'' Я готов доказать, что достоин лучшей жизни. |
| !к6 |!Привязанность |
| 1 |Мой город или деревня это мой дом, и я буду защитить его. |
| 2 |Я спонсирую приют, чтобы оградить других от того, что пришлось пережить мне. |
| 3 |Я выжил лишь благодаря другому беспризорнику, что передал мне знания, как вести себя на улицах. |
| 4 |Я в неоплатном долгу перед человеком, что сжалился и помог мне. |
| 5 |Я избавился от нищеты, ограбив важного человека, и меня разыскивают. |
| 6 |Никто не должен пережить те трудности, через которые пришлось пройти мне. |
| !к6 |!Слабость |
| 1 |Если я в меньшинстве, то я убегу из битвы. |
| 2 |Серебро в любом виде выглядит для меня как большая куча денег, и я сделаю всё, чтобы его у меня стало больше. |
| 3 |Я никогда не доверяю полностью кому бы то ни было, кроме себя. |
| 4 |Я предпочту убить кого-нибудь во сне, нежели в честном поединке. |
| 5 |Это не воровство, если я взял то, в чём нуждаюсь больше, чем кто-либо другой. |
| 6 |Те, кто не могут позаботиться о себе, получат то, что заслужили. |
* Вы [[недееспособны|Недееспособный]].
* Вы не способны перемещаться и говорить, а также не осознаёте своё окружение.
* Вы роняете всё, что держите, и [[падаете ничком|Сбитый с ног / Лежащий ничком]].
* Вы автоматически проваливаете проверки и спасброски Силы и Ловкости.
* Вы не добавляете модификатор Ловкости и бонус от щита к своему КД.
* Броски атаки по вам совершаются с преимуществом.
* Любая атака, попавшая по вам, считается критическим попаданием.
| !к10 |!Благо |
| 1 |Дружественный волшебник отдал вам свиток с одним заговором (на выбор Мастера). |
| 2 |Вы спасли обывателя, который теперь обязан вам жизнью. Эта личность сопровождает вас в ваших путешествиях и выполняет повседневные задачи для вас, но покинет вас, если с ним будут обращаться грубо, наплевательски или станут подвергать его опасности. Определите особенности этого персонажа, используя дополнительные таблицы и обсудив со своим Мастером. |
| 3 |Вы нашли ездовую лошадь. |
| 4 |Вы нашли немного золота. Добавьте 1к20 cм к вашему стандартному начальному богатству. |
| 5 |Вы получили в наследство одно простое оружие (на ваш выбор). |
| 6 |Вы нашли нечто интересное! Добавьте к снаряжению одну безделушку (см. Книга Игрока стр. 159). |
| 7 |Вы когда-то прислуживали в местном храме. При следующем вашем визите туда вам могут полностью восстановить хиты. |
| 8 |Знакомый алхимик подарил вам зелье лечения или флакон кислоты на ваш выбор. |
| 9 |Вы нашли карту сокровищ. |
| 10 |Дальний родственник оставил вам состояние, позволяющее вести комфортное существование в течение 1к20 лет. Если вы решили вести существование более высокого уровня, уменьшите его стоимость на 2 cм в течение этого периода времени. |
Вы знаете, что такое богатство, власть и привилегии. У вас благородный титул, а ваша семья владеет землями, собирает налоги, и обладает серьёзным политическим влиянием. Вы можете быть изнеженным аристократом, незнакомым с работой и неудобствами, бывшим торговцем, только-только получившим титул, или лишённым наследства негодяем с гипертрофированным чувством собственного права. Или же вы можете быть честным, трудолюбивым землевладельцем, искренне заботящимся о тех, кто живёт и трудится на его земле, ощущая за них ответственность.
Придумайте вместе с Мастером надлежащий титул и определите, какую власть этот титул даёт. Благородный титул не существует сам по себе — он связан со всей вашей семьёй, и каким бы титулом вы ни обладали, вы передадите его своим детям. Вам нужно не только определить титул, но также описать вместе с Мастером вашу семью и её влияние на вас.
* ''Владение навыками:'' История, Убеждение
* ''Владение инструментами:'' Один [[игровой набор|Игровой набор]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Комплект одежды придворного, кольцо-печатка, свиток с генеалогическим древом, кошель с 25 см
!!!Умение: Привелегированность
Благодаря знатному происхождению, другие хорошо к вам относятся. Вас принимают в высшем обществе, и считается, что у вас есть право посещать любые места. Обыватели изо всех сил стараются сделать вам приятно и избежать вашего гнева, а другие высокородные считают вас своей ровней. Если нужно, вы можете получить аудиенцию местного дворянина.
!!!Персонализация
Благородные рождаются и растут в особом окружении, и их личность несёт отпечаток этого воспитания. Благородный титул идёт вкупе с множеством обязательств — ответственностью перед семьёй, другими благородными (включая короля), народом, доверенным вашей семье, и даже перед самим титулом. Все эти обязательства другие могут использовать против вас.
| !к8 |!Черта характера |
| 1 |Я применяю так много лести, что все, с кем я разговариваю, чувствуют себя самыми чудесными и важными персонами в мире. |
| 2 |Обыватели любят меня за доброту и великодушие. |
| 3 |Один лишь взгляд на мои регалии заставляет перестать сомневаться в том, что я выше немытого отребья. |
| 4 |Я много трачу на то, чтобы выглядеть потрясающе, и по последнему слову моды. |
| 5 |Мне не нравится марать руки, и я не хочу умереть в каком-нибудь неподобающем месте. |
| 6 |Несмотря на благородное рождение, я не ставлю себя выше народа. У всех нас течёт одинаковая кровь. |
| 7 |Потеряв мою милость, обратно её не вернёшь. |
| 8 |Оскорбишь меня, и я сотру тебя в порошок, уничтожу твоё имя, и сожгу твои поля. |
| !к6 |!Идеал |
| 1 |''Уважение.'' Уважение — мой долг. Кем бы ты ни был, к другим нужно относиться с уважением, невзирая на их происхождение. |
| 2 |''Ответственность.'' Я должен уважать тех, кто выше меня, а те, кто ниже меня, должны уважать меня. |
| 3 |''Независимость.'' Я должен доказать, что справлюсь и без заботы своей семьи. |
| 4 |''Власть.'' Если соберу много власти, никто не посмеет указывать мне, что делать. |
| 5 |''Семья.'' Настоящая кровь гуще. |
| 6 |''Благородный долг.'' Я должен защищать тех, кто ниже меня, и заботиться о них. |
| !к6 |!Привязанность |
| 1 |Я пойду на любой риск, лишь бы заслужить признание семьи. |
| 2 |Союз моего дома с другой благородной семьёй нужно поддерживать любой ценой. |
| 3 |Нет никого важнее других членов моей семьи. |
| 4 |Я влюблён в наследницу семейства, презираемого моей роднёй. |
| 5 |Моя преданность правителю непоколебима. |
| 6 |Обыватели должны считать меня своим героем. |
| !к6 |!Слабость |
| 1 |Я втайне считаю всех ниже себя. |
| 2 |Я скрываю позорную тайну, которая может уничтожить мою семью. |
| 3 |Я слишком часто слышал завуалированные оскорбления и угрозы, и потому быстро впадаю в гнев. |
| 4 |У меня неустанная страсть к плотским удовольствиям. |
| 5 |Весь мир вращается вокруг меня. |
| 6 |Я часто навлекаю позор на свою семью словами и действиями. |
Вы изучаете два заговора на ваш выбор из списка заклинаний жреца. Они считаются для вас заклинаниями паладина, а Харизма - базовая характеристика для их использования. Когда вы получаете новый уровень в этом классе, вы можете заменить один из них на другой заговор из списка жреца.
[img width=439 class="centerme" [https://i.imgur.com/xE7JucR.png]]
Бледные эльфы - это подраса эльфов, отличающаяся своей белоснежной кожей, которая, как говорят, бледна, словно луна. Представители этой расы потеряли свой цвет кожи от того, что долгое время жили под землей вдали от света после разрушения их дома. Бледные эльфы считаются таинственным и проницательным народцем, лишь недавно начавшим исследовать поверхность с детским любопытством.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Магия бледных эльфов |^Вам известен заговор //свет//. При достижении 3 уровня вы можете один раз использовать заклинание //усыпление//. При достижении 5 уровня, вы также можете использовать заклинание //невидимость//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Для сотворения этих заклинаний вам не требуются материальные компоненты. Базовой характеристикой для этих заклинаний является Мудрость. |
|^Прозорливость |^Вы владеете навыками Анализ и Проницательность. |
Блуждающий разум - одно из самых загадочных воплощений псионов, это те, кто просто не вполне привязан к той же реальности, что и все остальные... они находят ее более податливой и скользкой, и склонны иногда пересекать ее.
Они получают свои способности по-разному. Некоторые были рождены на эфирном плане или прошли через портал в юности. Иногда их разум попросту работает по непонятным для большинства осям. Независимо от источника, они проявляют поистине уникальную способность относиться к определенным аспектам метафизического с некоторой обыденностью и склонны рассматривать свои силы как абсолютно естественные вещи, как, например, можно воспринимать свои руки или ноги.
---
!!! [img[1.png]] Управление пространством
<<<
Ваш разум расширяет представление о природе пространства и измерений, позволяя вам манипулировать ими и вашим положением в них.
<<<
Вам известна псионическая дисциплина [[Транспозиции|Транспозиция]].
{{Транспозиция}}
---
!!! [img[1.png]] Рефлекторная псионика
<<<
Ваша связь с транспространственными силами такова, что вы можете скользить сквозь пространства, которые вы видите в измерениях, как любой другой мог бы проскользнуть сквозь узкое пространство, без сознательных раздумий или усилий.
<<<
Вы можете использовать Ловкость вместо Интеллекта в качестве базовой характеристики псионики для умений, способностей и альтернативных эффектов этого архетипа и вашей дисциплины Транспозиции или талантов, требующих эту дисциплину.
---
!!! [img[1.png]] Снаряжение кочевника
Вы получаете владение средними доспехами и воинским оружием.
---
!!! [img[3.png]] Пытливый ум
<<<
Ваш блуждающий разум постоянно адаптируется к новым ситуациям.
<<<
Каждый раз, когда вы завершаете продолжительный отдых, вы можете выбрать два навыка, которыми вы не владеете. До завершения следующего продолжительного отдыха вы можете добавлять половину вашего бонуса мастерства (округляя в меньшую сторону) к проверкам этих навыков.
---
!!! [img[3.png]] Хитроумные удары
Вы получаете псионический талант Удар разлома. Если у вас уже есть этот талант, то вы получаете другой псионический талант на ваш выбор. Удар разлома не учитывается в список известных вам псионических талантов, но не может быть заменен другим талантом.
```
Удар разлома
Когда вы действием используете способность Фазовый разлом, вы можете бонусным действием совершить одну атаку оружием.
```
---
!!! [img[6.png]] Фазовый танцор
Один раз в ход, когда вы используете способность Фазовый разлом, вы получаете одну иллюзорную копию, как от модификатора Размытый. Кроме того, вы получаете преимущество на первый бросок атаки после использования Фазового разлома, совершённый до конца вашего хода.
---
!!! [img[10.png]] Мелькающее присутствие
Ваши неиспользованные свободные пси-очки Мастерства псионика не теряются до начала вашего следующего хода, но могут быть использованы только для сотворения //мелькания//. Кроме того, когда вы совершаете бросок для определения эффекта //мелькания// или //мерцания//, вы можете потратить 1 пси-очко, чтобы совершить еще один бросок и выбрать один из результатов.
---
!!! [img[14.png]] Извилистые тропы
Ваш Фазовый разлом больше не обязан проходить по прямой линии, но он может пройти через пространство существа только один раз.
---
!!! [img[14.png]] Ходящий сквозь планы
<<<
Ваше понимание того, как перемещаться в пространстве, расширяется до ранее непостижимых масштабов.
<<<
Заклинания //телепортация// и //уход в иной мир// добавляются в список вашей Внутренней псионики (количество использований Внутрененй псионики не увеличивается). Вы можете сотворить одно из этих заклинаний один раз, не тратя ячейку заклинаний или использование Внутренней псионики. Вы не можете сотворить заклинание с помощью этого умения снова, пока не завершите продолжительный отдых, либо не потратите использование Внутренней псионики.
Богатое существование означает жизнь в роскоши, хотя у вас может и не быть унаследованных состояний как у дворян или членов королевской семьи. Такую же как вы жизнь ведут успешные торговцы, любимые слуги при дворе, или владельцы нескольких успешных предприятий. У вас комфортное жилище, обычно это просторный дом в хорошем районе города или комфортный номер в отличной гостинице. Возможно, у вас есть несколько слуг.
Войска нуждаются в защите, и кто-то должен восстанавливать её, если она разрушена. Сочетающий в себе защитника и медика боевой кузнец является экспертом по защите других и восстановлению как матчасти, так и личного состава. В работе боевому кузнецу, как правило, помогает сопровождающий его стальной защитник — компаньон, которого он создаёт сам. Многие воины рассказывают истории о том, как чуть не погибли, но были спасены боевым кузнецом и его стальным защитником.
В мире Эберрона боевые кузнецы играют ключевую роль в работе дома Каннит по созданию боевых конструктов и [[кованых|Кованый]], и именно эти изобретатели возглавляют усилия, направленные на помощь раненым в ужасных сражениях Последней войны.
---
!!! [img[3.png]] Владение инструментами
Вы получаете владение [[инструментами кузнеца|Инструменты кузнеца]]. Если вы уже владеете этим набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[3.png]] Заклинания боевого кузнеца
На каждом указанном уровне изобретателя вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
Как только вы получаете заклинание боевого кузнеца, оно считается для вас заклинанием изобретателя, всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
| !УИ |!Заклинания |
| !3 |//героизм//, //щит// |
| !5 |//клеймящая кара//, //охраняющая связь// |
| !9 |//аура живучести//, //призыв заграждения// |
| !13 |//аура очищения//, //огненный щит// |
| !17 |//изгоняющая кара//, //множественное лечение ран// |
//УИ - Уровень изобретателя//
---
!!! [img[3.png]] Боевая готовность
Ваша боевая подготовка и эксперименты с магией окупились, даровав две особенности:
* Вы получаете владение воинским оружием.
* Когда вы атакуете магическим оружием, то можете использовать ваш модификатор Интеллекта вместо модификатора Силы или Ловкости для бросков атаки и урона.
---
!!! [img[3.png]] Стальной защитник
Ваше искусство позволило обзавестись спутником — стальным защитником. Он дружелюбен к вам и вашим союзникам, и подчиняется вашим командам. Вы определяете внешний вид этого существа, а также то, две у него ноги или четыре — это не влияет на игровые характеристики.
Во время сражения стальной защитник имеет такую же инициативу, как и вы, и ходит сразу после вас. Он может перемещаться и совершать реакции самостоятельно, но действием может совершать только [[Уклонение]], если только вы своим бонусным действием не отдадите ему приказ совершить другое действие. Этим действием может как одно из действий, указанных в блоке характеристик защитника, так и любое другое [[действие|Действия]]. Если вы [[недееспособны|Недееспособный]], защитник может совершать любое действие по своему выбору.
Если на защитника сотворяется заговор //починка//, то он восстанавливает 2к6 хитов. Если он умирает, то в течение часа вы можете действием оживить его, используя набор кузнеца. Для этого вы должны находиться 1 м от стального защитника и потратить одну ячейку заклинания 1-го уровня и выше. Защитник возвращается к жизни через 1 минуту с полным количеством хитов.
Вы можете создать нового защитника в конце продолжительного отдыха, если у вас есть инструменты кузнеца. Если у вас уже есть защитник, созданный с помощью этого умения, то он мгновенно погибает. Защитник также погибает, если вы умираете.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие [[Атака|Атака]], вы можете совершить две атаки вместо одной.
---
!!! [img[9.png]] Арканная встряска
<<<
Вы изучаете новые способы направлять магическую энергию, чтобы нанести вред или исцелить.
<<<
Когда вы попадаете по цели атакой магическим оружием, или ваш стальной защитник попадает по цели, вы можете направить магическую энергию через этот удар для создания одного из следующих эффектов:
* Цель дополнительно получает 2к6 урона силовым полем.
* Выберите одно существо или объект, который вы можете видеть в радиусе 6 м от цели. К выбранной цели направляется целительная энергия, восстанавливая ей 2к6 хитов.
Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум один раз). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[15.png]] Улучшенный защитник
Ваше умение Магическая встряска и стальной защитник усиливаются:
* Дополнительный урон и исцеление от Магической встряски увеличиваются до 4к6.
* Ваш стальной защитник получает бонус +2 к КД.
* Каждый раз, когда ваш стальной защитник использует Отражение атаки, атакующий получает урон силовым полем, равный 1к4 + ваш модификатор Интеллекта.
Иногда искра магии, питающая чародея, исходит от божественного начала, мерцающего в душе. Наличие такой благословенной души является признаком того, что ваша врождённая магия может исходить из далекой, но могущественной семейной связи с божественным существом. Возможно, ваш предок был ангелом, превращённый в смертного и посланный сражаться во имя своего бога.
Или ваше рождение может быть предрешено древним пророчеством, отметившим вас как служителя богов или избранным сосудом божественной магии.
Традиционная религиозная иерархия часто видит в Божественных душах угрозу из-за их природного магнетизма. Эти чародеи, повелевая силой богов, могут подорвать существующий строй и заявить, что они напрямую связаны с божественным.
В некоторых культурах, только тот, кто наделён Божественной душой, может обладать религиозной властью. На таких землях, духовенство, как правило, является наследным и передаётся из поколения в поколение среди нескольких избранных семей или кланов.
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, жреца, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Воплощения или Прорицания.
| !УЧ |!Заклинания |
| !1 |//лечение ран//, //обнаружение добра и зла//, //чудотворство// |
| !3 |//божественное оружие//, //поиск предмета// |
| !5 |//проклятие//, //сотворение пищи и воды// |
| !7 |//защита от смерти//, //страж веры// |
| !9 |//призыв небожителя//, //рассеивание добра и зла// |
//УЧ - Уровень чародея//
---
!!! [img[1.png]] Божественная магия
<<<
Ваша связь с божественным позволяет вам изучать заклинания жрецов.
<<<
Когда ваше умение Использование заклинаний позволяет вам изучить или заменить заговор чародея или заклинание чародея 1 уровня или выше, вы можете выбрать новое заклинание из списка заклинаний жреца. Вы должны соблюдать все остальные ограничения при выборе заклинания. Это заклинание считается для вас заклинанием чародея.
---
!!! [img[1.png]] Благосклонность богов
<<<
Божественная сила охраняет вашу судьбу.
<<<
Если вы проваливаете спасбросок или промахиваетесь броском атаки, вы можете совершить бросок 2к4 и добавить результат к своему броску.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[6.png]] Усиленное исцеление
<<<
Божественная энергия, проходящая сквозь вас, может усилить исцеляющие заклинания.
<<<
Каждый раз, когда вы или союзник в пределах 1 м от вас совершаете бросок костей, чтобы определить количество хитов, восстанавливаемых заклинанием, вы можете потратить 1 очко чародейства, чтобы один раз перебросить любое количество костей, при условии, что вы дееспособны.
---
!!! [img[14.png]] Потусторонние крылья
Вы можете бонусным действием расправить пару спектральных крыльев за своей спиной. Пока крылья существуют, вы получаете скорость полёта 6 м. Крылья существуют до тех пор, пока вы не станете [[недееспособным|Недееспособный]], не умрете или отмените их бонусным действием.
---
!!! [img[18.png]] Неземное восстановление
<<<
Вы получаете возможность переносить серьёзнейшие травмы.
<<<
Бонусным действием вы можете восстановить половину своих максимальных хитов в случае, если у вас осталось меньше половины хитов.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
<<tabs "[tag[Божественный домен]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Если у вас уже есть умение Божественный канал, и вы получаете уровень в классе, тоже дающем это умение, вы получаете эффекты Божественного канала от нового класса, но не получаете возможность дополнительного его использования. Дополнительные использования вы получите только тогда, когда получите в каком-нибудь из классов уровень, дающий эти дополнительные использования недвусмысленно. Например, если вы жрец 6/паладин 4, то можете использовать Божественный канал два раза между отдыхами, потому что уровень жреца это позволяет. Каждый раз, когда вы используете это умение, вы можете выбирать эффекты, доступные за счёт любого из имеющихся классов.
Вы получаете [[слепое зрение|Зрение и свет]] радиусом 2 м. В пределах этого радиуса вы можете видеть всё, что не находится за [[полным укрытием|Укрытие]], даже если вы [[ослеплены|Ослеплённый]] или находитесь в полной темноте. Кроме того, вы способны видеть [[невидимых|Невидимый]] существ в пределах этого радиуса, если они не скрыты от вас.
Бойцовские турниры включают в себя кулачный бой, борьбу и другие несмертельные бои с турнирной сеткой, проходящие по определённым правилам. Если вы хотите участвовать в соревнованиях с боями насмерть, то к ним применяются стандартные боевые правила.
//''Ресурсы''//. Эта деятельность занимает одну неделю.
//''Определение результата''//. Персонаж должен совершить серию проверок, сложность которых определяется случайным образом и отражает особенности соперника, с которым сталкивается персонаж. Основная сложность бойцовских турниров заключается в незнании персонажем особенностей своих противников.
Персонаж совершает три проверки: Сила (Атлетика), Ловкость (Акробатика) и Телосложение (Выносливость). По желанию персонаж может заменить одну из этих проверок навыков броском атаки, используя одно из своих оружий. Сл проверки равна 5+2к10, и для каждой из них она генерируется отдельно. Сверьтесь с таблицей ниже, чтобы узнать, чего добился персонаж.
|!Результат |!Исход|
|0 успехов |Проигрыш боёв, нулевой заработок|
|1 успех |50 см|
|2 успеха |100 см|
|3 успеха |200 см|
//''Осложнение''//. Персонажи, участвующие в боях, имеют дело со своими соперниками, людьми, которые делают ставки, и организаторами матчей. Персонаж, который участвовал в боях в течение рабочей недели, с вероятностью 10% может получить осложнение, примеры которых приведены в таблице ниже.
| !к6 |!Осложнение |
| 1 |Противник клянётся отомстить Вам.|
| 2 |Криминальный авторитет предлагает вам специально проиграть несколько матчей.|
| 3 |Вы победили популярного местного чемпиона, вызвав раздражение толпы. |
| 4 |Вы победили слугу аристократа, вызвав гнев аристократического семейства. |
| 5 |Вас обвинили в жульничестве. Вне зависимости от справедливости обвинений, ваша репутация пострадала.|
| 6 |Вы случайно нанесли почти смертельный удар своему противнику. |
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Крыса |— |
| 0 |Ворон |Скорость полёта |
| 1/8 |Гигантская крыса |— |
| 1/8 |Гигантская ядовитая змея |Скорость плавания |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Удав |Скорость плавания |
| 1/4 |Гигантская лягушка |Скорость плавания |
| 1/4 |Гигантская ящерица |— |
| 1/4 |Гигантская ядовитая змея |Скорость плавания |
| 1/2 |Крокодил |Скорость плавания |
| 1 |Гигантский паук |— |
| 1 |Гигантская жаба |Скорость плавания |
| 2 |Гигантский удав |Скорость плавания |
| 5 |Гигантский крокодил |Скорость плавания |
В своих тренировках вы делаете упор на искусство владения клинком, полагаясь в равной степени на скорость, изящество и обаяние. В то время, как некоторые воины — громилы в тяжёлых доспехах, ваш метод вести бой больше похож на выступление. Дуэлянты и пираты обычно принадлежат к этому архетипу.
Бретёр отличается мастерством в бою один на один, нанося непредсказуемые удары и при этом ловко уворачиваясь от выпадов противника.
---
!!! [img[3.png]] Искусная работа ног
<<<
Вы научились наносить удары и сразу же ускользать от контратаки.
<<<
Если вы в свой ход совершаете рукопашную атаку по существу, цель не может совершать [[провоцированные атаки|Провоцированная атака]] по вам до конца вашего хода.
---
!!! [img[3.png]] Лихая удаль
<<<
Вы бросаетесь в бой смело и без колебаний.
<<<
Вы можете использовать сумму своих модификаторов Ловкости и Харизмы при совершении проверки инициативы.
Кроме того, вам больше не требуется преимущество на броски атаки для того, чтобы использовать Коварный удар, если в пределах 1 м от вас нет ни одного существа, кроме вашей цели, и у вас нет помехи на бросок атаки. Все прочие правила умения Коварный удар применяются к вам как обычно.
---
!!! [img[9.png]] Щегольство
<<<
Вы обладаете исключительным обаянием.
<<<
Вы можете действием совершить проверку Харизмы (Убеждение), противопоставленную проверке Мудрости (Проницательность) существа. Существо должно быть способно слышать вас и понимать ваш язык.
Если вы выигрываете в этом состязании и существо враждебно к вам, оно совершает с помехой броски атаки по другим целям кроме вас и не может совершать [[провоцированные атаки|Провоцированная атака]] по другим целям кроме вас. Этот эффект длится 1 минуту, пока один из ваших союзников не атакует цель или сделает её целью заклинания, либо пока цель не окажется дальше, чем в 12 от вас.
Если вы выигрывает в этом состязании и существо не враждебно к вам, оно [[очаровано|Очарованный]] вами на 1 минуту. Пока цель [[очарована|Очарованный]] таким образом, она считает вас дружелюбным знакомым. Этот эффект заканчивается немедленно, если вы или ваши союзники причиняете вред цели.
---
!!! [img[13.png]] Элегантный манёвр
В свой ход вы можете бонусным действием получить преимущество на следующую проверку Ловкости (Акробатика) или Силы (Атлетика), совершённую до конца этого хода.
---
!!! [img[17.png]] Мастер-дуэлянт
<<<
Ваше мастерство фехтования позволяет вам обратить провал в успех в бою.
<<<
Когда вы промахиваетесь атакой, вы можете перебросить бросок атаки, но с преимуществом.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
Изобретатель, выбравший специализацию Бронника, модифицирует броню, делая её практически второй кожей. Доспех изменяют, чтобы можно было использовать магию изобретателя, обрушивать на врагов мощные атаки и увеличить защиту. Изобретатель связывает себя с этой бронёй, оставаясь с ней единым целым даже во время экспериментов, и совершенствует её магические возможности.
---
!!! [img[3.png]] Владение инструментами
Вы получаете владение тяжёлыми доспехами, а также владение [[инструментами кузнеца|Инструменты кузнеца]]. Если вы уже владеете этим набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[3.png]] Заклинания бронника
На каждом указанном уровне изобретателя вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
Как только вы получаете заклинание бронника, оно считается для вас заклинанием изобретателя, всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
| !УИ |!Заклинания |
| !3 |//волна грома//, //волшебная стрела// |
| !5 |//дребезги//, //отражения// |
| !9 |//гипнотический узор//, //молния// |
| !13 |//высшая невидимость//, //огненный щит// |
| !17 |//силовая стена//, //создание прохода// |
//УИ - Уровень изобретателя//
---
!!! [img[3.png]] Арканный доспех
<<<
Ваши опыты с металлами привели к тому, что вы сделали доспех проводником своей магии.
<<<
Если у вас в руках находятся инструменты кузнеца, то действием вы можете превратить доспех, который на вас надет, в арканный.
Пока на вас надет этот доспех, вы получаете следующие преимущества:
* Вы не учитываете вес доспеха для расчёта [[нагрузки|Грузоподъёмность и нагрузка]].
* Вы можете использовать арканный доспех в качестве заклинательной фокусировки для ваших заклинаний изобретателя.
* Доспех соединён с вами и не может быть снят против вашей воли. Он полностью покрывает ваше тело, однако вы можете сложить шлем или развернуть его обратно бонусным действием. Доспех заменяет любые отсутствующие у вас конечности — замена функционирует идентично оригинальным частям тела.
* Действием вы можете снять или надеть доспех. Броня остаётся арканным доспехом, пока вы не наденете другой комплект доспехов или не умрёте.
---
!!! [img[3.png]] Модель доспеха
Вы можете модифицировать свой арканный доспех. Выберите одну из двух нижеописанных моделей: «страж» или «лазутчик». Модель, которую вы выбираете, даёт вам особые преимущества во время использования.
Каждая модель обладает специальным оружием. Когда вы им атакуете, можете добавить к броскам атаки и урона свой модификатор Интеллекта вместо Силы или Ловкости.
Вы можете изменить модель доспеха по завершению короткого или продолжительного отдыха при условии, что держите в руках инструменты кузнеца.
<<tabs "[tag[Арканный доспех]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие [[Атака|Атака]], вы можете совершить две атаки вместо одной.
---
!!! [img[9.png]] Модификации доспеха
<<<
Вы узнаёте, как использовать примочки, чтобы особым образом модифицировать свой арканный доспех.
<<<
Теперь для вашей способности Создание примочки каждый элемент доспеха считается отдельным предметом: нагрудник, ботинки, шлем и специальное оружие. Любой из этих предметов может быть насыщен одной из ваших примочек, которые остаются, даже если вы меняете модель доспеха с помощью соответствующего умения. Кроме того, ваше максимальное количество созданных примочек увеличивается на два при условии, что эти дополнительные примочки являются частями вашего арканного доспеха.
---
!!! [img[15.png]] Идеальная броня
<<<
Ваш арканный доспех получает дополнительные преимущества в зависимости от его модели.
<<<
//''Страж.''// Когда существо Огромного или меньшего размера, которое вы можете видеть, заканчивает свой ход в пределах 6 м от вас, вы можете использовать свою реакцию и магическим образом заставить это существо совершить спасбросок Силы против Сл спасброска ваших заклинаний. При провале существо притягивается к вам на расстояние до 5 м в незанятое пространство. Если вы притягиваете существо к месту в пределах 1 м от вас, то можете совершить рукопашную атаку оружием по этому существу частью той же реакции.
Вы можете использовать эту реакцию количество раз, равное вашему бонусу мастерства. Потраченные использования этой реакции восстанавливаются после завершения продолжительного отдыха.
//''Лазутчик.''// Любое существо, получившее урон от Метателя молний, начинает мерцать магическим светом до начала вашего следующего хода. Существо излучает тусклый свет в радиусе 1 м и совершает броски атаки против вас с помехой, так как свет слепит его при попытке атаковать вас. Кроме того, следующая атака по этому существу совершается с преимуществом, и, если атака попадает, то цель дополнительно получает 1к6 урона электричеством.
Совершаете ли вы удар оружием, стреляете ли из лука или совершаете бросок атаки частью заклинания, бросок атаки определяет, попала атака или промахнулась. Для совершения броска атаки бросьте к20 и добавьте уместные модификаторы. Если сумма результата броска и модификаторов не меньше Класса Доспеха (КД) цели, атака попадает.
Если возникнет вопрос, является ли то, что вы делаете, атакой, ответ будет простым: если вы совершаете бросок атаки, вы совершаете атаку.
---
!!!Модификаторы броска
Когда персонаж совершает бросок атаки, из модификаторов чаще всего используются модификатор характеристики и бонус мастерства.
''Модификатор характеристики. ''
* Для атак метательным и рукопашным оружием, совершаемых одной рукой, используется модификатор Ловкости или Силы, на ваш выбор, или только Силы, если оружие «грубое».
* Для атак рукопашным оружием, совершаемых двумя руками, используется модификатор Силы
* Для атак стрелковым оружием используется модификатор Ловкости.
* Для атак заклинаниями используется модификатор базовой характеристикой заклинателя.
''Бонус мастерства. ''
Вы добавляете бонус мастерства к броскам атаки, когда совершаете атаку оружием, которым владеете, а также когда атакуете заклинанием.
---
!!!Критические промахи и попадания
Если при броске к20 для броска атаки выпало число из критического диапазона оружия, атака попадает вне зависимости от всех модификаторов и КД цели. Кроме того, атака считается ''критическим попаданием''.
Если при броске к20 для броска атаки выпало «1», атака промахивается вне зависимости от всех модификаторов и КД цели.
Если вы совершаете ''критическое попадание'', обратитесь к [[таблицам критических попаданий|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1952211726]]. Совершите бросок к20 и сверьтесь с таблицей подтверждения критического попадания. Следуя инструкциям, указанным в таблице, определите количество нанесенного урона и возможное ранение.
Вид ранения напрямую зависит от вида урона, который наносит ваша атака. Если атака наносит два или более вида урона, выберите один из них. Если у цели уже есть полученное ранение, а его эффект не может складываться, нанесите вместо него следующее по списку.
<<<
//Например, если вы совершили критическое попадание дубинкой, бросьте к20 и сверьтесь с таблицей, соответствующей колющему виду урона. Допустим, что результат броска - «18». Следуя указаниям таблицы, совершите бросок урона и прибавьте к нему максимальное значение броска урона. Затем добавьте все уместные модификаторы, таким образом вы узнаете количество урона, нанесенного критическим попаданиям.
После этого совершите бросок с помехой по приведенной в том же приложении таблице «Ранения». Допустим, что результат броска - «2». По таблице определяем, что это критическое попадание нанесло цели //лёгкое сотрясение//, вследствие чего цель совершает проверки Ловкости и Интеллекта с помехой.//
<<<
---
!!!Досягаемость и дальность
Вы можете совершать бросок атаки только по целям в пределах вашей досягаемости (для рукопашных атак) или дальности (для дальнобойных атак).
Досягаемость рукопашного оружия равна 1 м, если в описании оружия не сказано иначе.
Эффективная дальность дальнобойного оружия указана в его описании. Максимальная дальность метательного оружия втрое превышает эффективную. Стрелковое оружие может стрелять на расстояние равное пятикратному значению эффективной дальности. Бросок атаки совершается с помехой, если цель находится за пределами эффективной дальности, и вы не можете атаковать цель, находящуюся за пределами максимальной дальности.
---
!!!Дальнобойные атаки в ближнем бою
Дальнобойной атакой трудно прицелиться, если непосредственно перед вами стоит враг. Если вы совершаете дальнобойную атаку оружием, заклинанием или каким-то другим средством, бросок атаки совершается с помехой, если вы находитесь в пределах 1 м от враждебного дееспособного существа.
Быстроногие шифтеры изящны и стремительны. Они, как правило, кошачьи по своей природе, сторонятся чужаков, и их трудно загнать в угол как физически, так и социально
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2, а значение Харизмы увеличивается на 1. |
|^Грациозность |^Вы владеете навыком Акробатика. |
|^Особенность обращения |^Пока вы обращены, ваша скорость ходьбы увеличивается на 2 м. Кроме того, вы можете реакцией переместиться на 2 м, когда существо заканчивает свой ход в пределах 1 м от вас. Это перемещение не провоцирует атак. |
Пока вы держите одноручное рукопашное оружие в одной руке, которым можно наносить удары двумя руками, и не используете другого оружия или щита, вы получаете бонус +1 к броскам атаки и урона этим оружием.
Богатство в мирах D&D принимает разные формы. Благосостояние вашего персонажа может отражаться монетами, драгоценными камнями, товарами, предметами искусства, животными и прочим имуществом.
---
!!!Монеты
Монеты делают разного номинала, основываясь на относительной стоимости металла, из которого они изготовлены. Чаще всего встречаются монеты двух видов: ''серебряные монеты (см)'' и ''медные монеты (мм)''.
На одну серебряную монету персонаж может купить поясной кошель, 15 метров хорошей верёвки или козу. Опытный ремесленник может зарабатывать одну серебряную монету в день. Серебряная монета — стандартная единица измерения богатства, даже если при этом сами монеты не используются.
Одна серебряная монета стоит десять медных монет, распространённых среди обывателей. Медная монета оплачивает один день чернорабочего, флягу лампового масла или одну ночь на захудалом постоялом дворе. За многие дешевые мелочи можно расплатиться и половиной медяка.
Чуть реже встречаются ''золотые монеты (зм)''. Монета из золота стоит десять серебряных, и используются золотые монеты, как правило, либо при крупных торговых сделках, либо как стандарт для упрощения подсчетов.
Иногда в грудах сокровищ попадаются необычные монеты, сделанные из других драгоценных металлов. Монеты из ''электрума (эм)'' и ''платины (пм)'' были в обращении в древних империях и королевствах, и при оплате ими они иногда вызывают подозрения. Монета из электрума стоит пять серебряных монет, а из платины — десять золотых.
Стандартная монета весит 10 грамм, так что пятьдесят любых монет весят полкилограмма.
|!Монета| !мм| !см| !эм| !зм| !пм|
|Медная (мм)| 1| | | | |
|Серебряная (см)| 10| 1||||
|Электрумовая(эм)| 50| 5| 1|||
|Золотая (зм)| 100| 10| 2| 1||
|Платиновая (пм)| 1 000| 100| 20| 10| 1|
---
!!!Продажа сокровищ
В подземельях, которые вы исследуете, могут попадаться сокровища, снаряжение, оружие, доспехи и другие вещи. Обычно сокровища и безделушки продаются по возвращении в город или другое поселение, при условии, что вы найдёте покупателей, заинтересованных в вашем товаре.
//''Доспехи, оружие и прочее снаряжение''//. Обычно оружие, доспехи и прочее снаряжение без видимых дефектов продаётся за половину стоимости. Оружие и доспехи чудовищ редко находятся в пригодном для продажи состоянии.
//''Магические предметы.''// Продажа магического предмета — дело нелёгкое. Можно найти кого-то, кто купит зелье или свиток, но остальные предметы по карману только самым богатым дворянам. И наоборот, вы не найдёте в свободной продаже магических предметов и заклинаний кроме нескольких самых распространённых видов.
//''Драгоценные камни, ювелирные изделия и предметы искусства.''// Эти предметы продаются на рынке за их полную стоимость, и вы можете их либо обменять на денежный эквивалент, либо использовать вместо валюты. Если сокровище очень ценное, то Мастер может потребовать, чтобы вы вначале нашли подходящего покупателя.
//''Товары. ''// Так же как драгоценные камни, товары (железные слитки, мешки с солью, домашний скот) продаются на рынке за полную стоимость и могут использоваться как валюта.
[img width=375 class="centerme" [https://i.imgur.com/UPaDCgY.png]]
<<tabs "[[Описание варваров]] [[Классовые умения варваров]] [[Пути дикости]]" "" "$:/state/tab1">>
Вы заключили свой договор с таинственной сущностью из Царства Теней – силой, которая проявляется в разумном магическом оружии, сотворённом из тени. Могущественный меч Чёрный клинок — самый примечательный из этого оружия, которое на протяжении веков распространялось по мультивселенной. Теневая сила, стоящая за этим оружием, может предложить силу колдунам, которые заключают с ним договор. Некоторые колдуны Ведьмовского клинка создают своё оружие, которое подражает тому, что создано в Царстве Теней. Другие отказываются от такого оружия, предпочитая использовать тёмную магию из этого плана в своих заклинаниях.
Поскольку известно, что Королева Воронов выковала первое итакое оружие, многие мудрецы предполагают, что она и сила едины, и что оружие вместе с колдунами Ведьмовского клинка – это инструменты, которые она использует для манипулирования событиями на Материальном плане в своих непостижимых целях.
---
!!! [img[1.png]] Расширенный список заклинаний
Ведьмовской клинок позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//гневная кара//, //щит// |
| !2 |//клеймящая кара//, //размытый образ// |
| !3 |//мерцание//, //стихийное оружие// |
| !4 |//воображаемый убийца//, //оглушающая кара// |
| !5 |//изгоняющая кара//, //конус холода// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Проклятие ведьмовского клинка
<<<
Вы получаете возможность наложить на кого-либо зловещее проклятие.
<<<
Бонусным действием выберите одно видимое вами существо в пределах 6 м от вас. Цель будет проклята на 1 минуту. Проклятие заканчивается раньше, если цель умирает, если вы умираете или вы [[недееспособны|Недееспособный]]. Пока проклятие не закончится, вы получите следующие преимущества:
* Ваши броски урона по проклятой цели получают бонус равный вашему бонусу мастерства.
* Критический диапазон ваших атак по проклятой цели увеличивается на 1.
* Если проклятая цель умирает, вы восстанавливаете количество хитов, равное вашему модификатору Харизмы + уровень колдуна (минимум 1 хит).
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[1.png]] Проклятый воитель
Вы получаете владение средними доспехами и воинским оружием.
---
!!! [img[6.png]] Проклятый спектр
<<<
Вы можете проклясть душу убитого вами человека, временно обязывая его служить вам.
<<<
Когда вы убиваете гуманоида, вы можете заставить его дух подняться из своего тела в виде спектра. Когда появляется спектр, он получает временные хиты, равные половине вашего уровня колдуна. Спектр совершает проверку инициативы и действует в свой ход. Он подчиняется вашим словесным командам, а также получает бонус к своим броскам атаки, равный вашему модификатору Харизмы (минимум +0).
Спектр продолжает вам служить до конца вашего следующего продолжительного отдыха, после чего он уходит в загробную жизнь.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[10.png]] Доспех проклятий
<<<
Ваше проклятие становится более мощным.
<<<
Если цель, проклятая вашим Проклятием ведьмовского клинка, попадает по вам броском атаки, вы можете реакцией совершить бросок к6. При результате 4 или выше, атака промахивается по вам, независимо от результата броска проклятого существа.
---
!!! [img[14.png]] Мастер проклятий
<<<
Вы способны переносить Проклятие ведьмовского клинка с убитого существа на другое существо.
<<<
Когда существо, проклятое Проклятием ведьмовского клинка, умирает, вы можете переместить проклятие на другое видимое вами существо в пределах 6 м от вас, если вы дееспособны. Когда вы перемещаете проклятие таким образом, вы не восстанавливаете хиты от смерти ранее проклятого существа.
Ваш покровитель — таинственная сущность, природа которой совершенно чужда ткани реальности. Он может прийти из Дальнего Предела, пространства за пределами реальности, или это может быть один из древних богов, известных только в легендах. Его мотивы непонятны смертным, и его знания настолько великие и древние, что даже величайшие библиотеки меркнут в сравнении с имеющимися у него секретами. Великий Древний может не знать о вашем существовании или быть полностью равнодушным к вам, но секреты, которые вы узнали, позволяют черпать магию из этого источника. Сущностями этого типа могут быть Гонадар, зовущийся «Тот Кто Таится», Тариздун «Скованный Бог», Дендар «Ночной Змей», Заргон «Возвращающийся», Великий Ктулху, и прочие непостижимые создания.
---
!!! [img[1.png]] Расширенный список заклинаний
Нежить позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//диссонирующий шёпот//, //жуткий смех Таши// |
| !2 |//воображаемая сила//, //обнаружение мыслей// |
| !3 |//подсматривание//, //послание// |
| !4 |//подчинение зверя//, //Эвардовы чёрные щупальца// |
| !5 |//подчинение личности//, //телекинез// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Пробуждённый разум
<<<
Ваше чужеродное знание даёт вам возможность касаться разума других существ.
<<<
Вы можете общаться телепатически с любым видимым вами существом в пределах 6 м от вас. Вам не нужно знать общий с существом язык для того, чтобы оно понимало ваши телепатические высказывания, но существо должно быть в состоянии понимать как минимум один язык.
Вы также можете действием послать в разум видимого вами существа в пределах 6 м от вас ужасные образы. Цель должна преуспеть в спасброске Мудрости против вашей Сл спасброска заклинаний колдуна, иначе она будет [[испугана|Испуганный]] вами до начала вашего следующего хода. Существо, преуспевшее в спасброске, получает иммунитет к эффекту этого умения на 24 часа.
---
!!! [img[6.png]] Энтропийный заслон
<<<
Вы научились ограждать себя от атак и использовать неудачную вражескую атаку на пользу себе.
<<<
Если существо совершает бросок атаки по вам, вы можете реакцией магическим образом дать помеху на этот бросок. Если атака промахнётся по вам, ваш следующий бросок атаки по этому существу совершается с преимуществом, если вы совершите его до конца своего следующего хода. Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[10.png]] Ментальный щит
Ваши мысли нельзя прочитать телепатией или другими средствами без вашего позволения. Вы также получаете сопротивление к урону психической энергией, и каждый раз, когда существо причиняет вам урон психической энергией, это существо получает такое же количество урона, что и вы.
---
!!! [img[14.png]] Создать раба
<<<
Вы получаете способность инфицировать разум гуманоидов чужеродной магией своего покровителя.
<<<
Вы можете действием коснуться [[недееспособного|Недееспособный]] гуманоида. Это существо становится [[очарованным|Очарованный]] вами до тех пора, пока на него не будет сотворено заклинание //снятие проклятья//, либо пока оно не перестанет быть [[очарованным|Очарованный]], либо пока вы не используете это умение ещё раз.
Вы можете общаться телепатически с [[очарованным|Очарованный]] таким образом существом, пока вы оба находитесь на одном плане существования.
//Требование: 11 уровень//
Вы можете потратить 4 очка ци, чтобы сотворить на себя заклинание //полёт//.
Вы можете свободно взаимодействовать с двумя предметами или особенностями местности во время другого действия. Например, вы можете расстегнуть и открыть рюкзак, и извлечь из него предмет, достать из кармана ключ и открыть дверь во время перемещения, или вынуть меч и кинжал из ножен частью того же действия, которым совершаете атаку.
Если вы хотите взаимодействовать с третьим предметом, вам нужно потратить на это действие. Некоторые магические и другие особые предметы всегда используются действием, что указывается в их описании.
Мастер может потребовать, чтобы вы потратили действие на такую деятельность, если предмет требует особого обращения или вам мешают необычные обстоятельства. Например, Мастер может резонно решить, что нужно потратить действие, чтобы открыть заклинившую дверь или повернуть ворот для опускания моста.
Вот несколько примеров того, что вы можете совершать параллельно с перемещением и совершением действий:
* вынимание или убирание в ножны меча
* открывание или закрывание двери
* доставание зелья из рюкзака
* поднимание упавшего топора
* взятие безделушки со стола
* снятие кольца с пальца
* помещение еды в рот
* втыкание знамени в землю
* вынимание нескольких монет из кошеля
* выпивание пива из кувшина
* нажатие на рычаг
* вынимание факела из крепления на стене
* доставание книги с полки, до которой вы дотягиваетесь
* тушение небольшого пламени
* надевание маски
* накидывание капюшона на голову
* прикладывание уха к двери
* пинание небольшого камня
* поворачивание ключа в замке
* прощупывание пола шестом
* передача предмета другому персонажу
Если размер двух существ отличается на две или больше категории, большее существо может считаться местностью для меньшего.
Чтобы запрыгнуть на спину или вскарабкаться по конечностям большего существа, меньшее существо действием совершает проверку Силы (Атлетика) или Ловкости (Акробатика), противопоставленную проверке Ловкости (Акробатика) цели. Если меньшее существо преуспевает, оно перемещается в пространство цели и цепляется за его тело. Находясь в пространстве цели, меньшее существо перемещается вместе с ней и совершает с преимуществом броски атаки по ней.
Меньшее существо может перемещаться по пространству большего существа, считая его труднопроходимой местностью. Способность большего существа атаковать меньшее зависит от местоположения меньшего существа и оставляется на усмотрение Мастера. Большее существо может сбросить меньшее действием — стряхнув его, потеревшись о стену или схватив его и сбросив. Это действие требует от большего существа успеха в проверке Силы (Атлетика), противопоставленной проверке Силы (Атлетика) или Ловкости (Акробатика) меньшего существа. Меньшее существо само выбирает, проверку какой характеристики оно будет совершать.
<div class="tc-table-of-contents">
<<toc-selective-expandable "Виды ремёсел">>
</div>
Вы можете действием совершить по одной рукопашной атаке одним и тем же оружием по любому количеству существ в пределах 1 м от вас, совершая отдельный бросок атаки по каждой цели.
Вы заключили договор с пучиной. Сущность океана, Стихийного Плана Воды или другое потустороннее создание морей теперь позволяет вам черпать его морскую мощь. Покровитель просто использует вас, чтобы узнать о земных царствах, или хочет, чтобы вы открыли космические шлюзы и затопили весь мир?
Возможно, вы родились в культе поклонников, почитающих Владыку глубин и его порождений. Или потерпели кораблекрушение и чуть было не утонули, когда хватка вашего покровителя даровала вам возможность выжить. Какой бы ни была причина вашего договора, море и его неизведанные глубины взывают к вам.
Существа из глубин, которые могли бы наделить колдуна этой силой, включают в себя: кракенов, древних водных элементалей, богоподобные галлюцинации, приснившиеся куо-тоа, полубогов мерфолков и шабаши морских карг.
---
!!! [img[1.png]] Расширенный список заклинаний
Владыка глубин позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//волна грома//, //сотворение или уничтожение воды// |
| !2 |//порыв ветра//, //тишина// |
| !3 |//метель//, //молния// |
| !4 |//власть над водами//, //призыв стихийного духа// (только Вода) |
| !5 |//длань Бигби// (выглядит как щупальце), //конус холода// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Дар моря
Вы получаете скорость плавания 8 м, а также способность дышать под водой.
---
!!! [img[1.png]] Щупальце глубин
Вы можете магически призвать призрачное щупальце, атакующее ваших врагов. Бонусным действием вы создаете 2-метровое щупальце в месте, которое вы можете видеть в пределах 12 м от вас. Щупальце существует 1 минуту или до тех пор, пока вы не призовёте новое этим умением.
Когда вы создаёте щупальце, вы можете совершить рукопашную атаку заклинанием по одному существу в пределах 2 м от него. При попадании цель получает 1к8 урона холодом, а её скорость уменьшается на 2 м до начала вашего следующего хода. Когда вы достигаете 10-го уровня в этом классе, урон увеличивается до 2к8.
Бонусным действием в свой ход вы можете переместить щупальце на расстояние до 6 м и повторить атаку.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Океаническая душа
<<<
Теперь в пучине вы чувствуете себя как дома.
<<<
Вы получаете сопротивление урону холодом. Кроме того, когда вы полностью погружены, любое существо, которое также полностью погружено, может понимать вашу речь, а вы можете понимать его.
---
!!! [img[6.png]] Защитный изгиб
<<<
Ваше Щупальце глубин может защищать вас и других, ставя себя под удар.
<<<
Когда вы или существо, которое вы можете видеть, получаете урон, находясь в пределах 2 м от щупальца, вы можете реакцией выбрать одно из этих существ и уменьшить получаемый им урон на 1к8. Когда вы достигнете 10-го уровня в этом классе, урон, уменьшаемый щупальцем, увеличивается до 2к8.
---
!!! [img[10.png]] Опутывающие щупальца
Вы узнаете заклинание //Эвардовы чёрные щупальца//. Для вас оно считается заклинанием колдуна и не учитывается в общем количестве известных вам заклинаний. Вы также можете наложить его один раз без использования ячеек заклинаний, и вы восстанавливаете способность сделать это вновь после завершения продолжительного отдыха.
Каждый раз, когда вы накладываете это заклинание, магия вашего покровителя поддерживает вас, даруя вам количество временных хитов, равное вашему уровню колдуна. Кроме того, урон не может нарушить вашу концентрацию на этом заклинании.
---
!!! [img[14.png]] Бездонное погружение
Вы можете магическим образом открыть временные пути к водоёмам. Действием вы можете телепортировать себя и до пяти других видимых согласных существ в пределах 6 м от вас. Вы исчезаете в вихре из щупалец, а затем появляетесь на расстоянии до 1 км в водоёме, который вы видели (размером с пруд или больше), или в пределах 6 м от него. Каждый из вас появляется в свободном пространстве нв пределах 6 м друг от друга.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Вы можете действием потратить 2 очка ци и выбрать видимое вами существо в пределах 6 м от вас. Цель должна совершить спасбросок Ловкости. При провале существо получает 3к10 дробящего урона плюс дополнительно 1к10 дробящего урона за каждое дополнительно потраченное очко ци, и вы можете либо [[сбить его с ног|Сбитый с ног / Лежащий ничком]], либо подтянуть его ближе к себе на расстояние до 5 м. При успехе существо получает половину урона, не подтягивается и не сбивается с ног.
Существуют различные магические коллегии, предназначенные для подготовки волшебников к войне. Традиция Военной магии сочетает в себе принципы воплощения и ограждения, не специализируясь на конкретной школе. Она учит техникам, усиливающим заклинания, а также обучает волшебников методам укрепления собственной защиты.
Последователи этой традиции известны как военные маги. Они рассматривают свою магию и как оружие, и как броню; ресурс, превосходящий любой кусок стали. Военные маги действуют в бою быстро, используя свои заклинания для получения тактического контроля над ситуацией. Их заклинания бьют сильно, в то время как их защита пресекает попытки противников контратаковать. Военные маги также являются знатоками использования магической энергии своих противников против них самих.
В крупных сражениях военный маг часто работает с воплотителями, оградителями и другими волшебниками. Воплотители иногда дразнят военных магов, из-за того, что те распыляются между нападением и защитой. Обычный ответ военного мага: "Что хорошего в умении метнуть огромный огненный шар, если я умру раньше, чем успею его сотворить?".
---
!!! [img[2.png]] Арканное отклонение
<<<
Вы научились плести магию так, чтобы укрепить своё сопротивление всякому вреду.
<<<
Когда по вам попадает атака или вы проваливаете спасбросок, вы можете реакцией получить бонус +2 к КД от этой атаки или бонус +4 к этому спасброску.
После использования этого умения, вы не можете сотворять никакие заклинания кроме заговоров до конца вашего следующего хода.
---
!!! [img[2.png]] Тактическая смекалка
Вы можете использовать сумму своих модификаторов Ловкости и Интеллекта при совершении проверки инициативы.
---
!!! [img[6.png]] Выброс мощи
Вы можете запасать магическую энергию внутри себя, чтобы позднее усилить ею свои наносящие урон заклинания. В сохраненном виде эта энергия называется выбросом мощи.
Вы можете накопить максимальное количество выбросов мощи, равное вашему модификатору Интеллекта (минимум 1). Когда вы завершаете продолжительный отдых, число выбросов в вашем запасе становится равным одному. Когда вы успешно рассеиваете заклинание с использованием заклинаний //рассеивание магии// или //контрзаклинание//, вы получаете один выброс мощи, так как вы поглощаете магию из заклинания, которое отменили. Если вы завершаете короткий отдых, не имея запасённых выбросов мощи, вы получаете один в свой запас.
Один раз в ход, когда вы наносите урон существу или предмету заклинанием волшебника, вы можете потратить один выброс мощи, чтобы нанести цели дополнительный урон силовым полем. Дополнительный урон равен половине вашего уровня волшебника.
---
!!! [img[10.png]] Стойкая магия
<<<
Магия, которую вы поддерживаете, позволяет вам более эффективно защищаться.
<<<
Пока вы концентрируетесь на заклинании, вы получаете бонус +2 к КД и всем спасброскам.
---
!!! [img[14.png]] Отражающий покров
<<<
Ваше Арканное отклонение становится пронизанным смертоносной магией.
<<<
Когда вы используете своё умение Арканное отклонение, вы можете испустить разряды магической энергии. До трёх существ по вашему выбору, видимых в пределах 12 м от вас, получают урон силовым полем, равный половине вашего уровня волшебника.
[img width=270 class="centerme" [https://i.imgur.com/eBuYwZs.png]]
<<tabs "[[Описание воинов]] [[Классовые умения воинов]] [[Архетипы воина]]" "" "$:/state/tab1">>
| !_к12_ |!Исход войны |
| 1 |Вы потеряли сознание и были оставлены умирать. Придя в сознание позже, вы не можете вспомнить ничего о битве. |
| 2-3 |Вас тяжело ранили в бою, и вы всё ещё носите ужасные шрамы от тех ранений. |
| 4 |Вы дезертировали из боя, чтобы спасти свою жизнь, но вам всё ещё стыдно за вашу трусость. |
| 5-7 |Вы получили лишь лёгкие ранения, и они зажили, не оставив шрамов. |
| 8-9 |Вы пережили битву, но страдаете от ужасных кошмаров, в которых вы переживаете её раз за разом. |
| 10-11 |Вы пережили битву невредимым, но многие ваши товарищи были ранены или пропали. |
| 12 |Вы показали себя достойно в бою, и вас запомнили, как героя. Возможно, вы были удостоены медали за вашу храбрость. |
<<<
Дух волка делает вас вожаком стаи.
<<<
Пока вы пребываете ярости, ваши союзники совершают броски рукопашных атак по всем враждебным вам существам, находящимся в пределах 1 м от вас, с преимуществом.
Если враждебное существо промахивается по вам рукопашной атакой, вы можете реакцией заставить его повторить эту атаку по другому существу (кроме него самого) на ваш выбор.
[img width=365 class="centerme" [https://i.imgur.com/vpNWvGH.png]]
<<tabs "[[Описание волшебников]] [[Классовые умения волшебников]] [[Магические традиции]]" "" "$:/state/tab1">>
| !к10 |!Магическое событие |
| 1 |Вы были очарованы или испуганы заклинанием. |
| 2 |Вы получили ранение от эффекта заклинания. |
| 3 |Вы стали свидетелем того, как творилось мощное заклинание жрецом, друидом, чародеем, колдуном или волшебником. |
| 4 |Вы выпили зелье (на выбор Мастера). |
| 5 |Вы нашли свиток заклинания (по выбору Мастера) и вам удалось успешно применить его. |
| 6 |Вы были телепортированы посредством магии. |
| 7 |Вы стали невидимым на некоторое время. |
| 8 |Вы распознали в чём-то иллюзию. |
| 9 |Вы видели существо, призванное магией. |
| 10 |Вашу судьбу предсказал провидец. Совершите два броска по таблице «Жизненные события», но не применяйте их результаты. Вместо этого Мастер выберет одно событие как грядущее событие вашего будущего (которое может произойти, а может и нет). |
[img width=310 class="centerme" [https://i.imgur.com/8BuykWo.png]]
Воплощающие мудрость ааракокра теснее связаны со Стихийным Планом Воздуха и могут взывать к магии своей стихии.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Взывающий к ветрам |^Ваша связь с Планом Воздуха позволяет вам сотворять заклинания, основанные на вашей стихии. Вам известен заговор //шквал //. При достижении 3 уровня, вы можете один раз использовать заклинание //туманное облако//. При достижении 5 уровня, вы можете один раз использовать заклинание //порыв ветра//. Вы восстанавливаете способность накладывать эти заклинания с помощью этой особенности, когда завершаете продолжительный отдых. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для их использования является Мудрость. |
Вы отточили навыки воровского искусства. Грабители, бандиты, карманники и прочие преступники, как правило, следуют этому архетипу, но его же выбирают и плуты, которые предпочитают думать о себе как о профессиональных искателях сокровищ, исследователях, открывателях и сыщиках. Помимо совершенствования ловкости и хитрости, вы обучаетесь навыкам, которые пригодятся во время исследования древних руин, чтения незнакомых языков и использования магических предметов, которые обычно вы не можете использовать.
---
!!! [img[3.png]] Быстрые руки
Вы можете бонусным действием совершать проверки Ловкости (Ловкость рук), использовать [[воровские инструменты|Воровские инструменты]], чтобы обезвредить ловушку, вскрыть замок, совершить действие [[Использование предмета]], или совершить одну метательную атаку оружием.
---
!!! [img[3.png]] Форточник
Вы получаете скорость карабканья равную вашей скорости ходьбы
Кроме того, дальность ваших прыжков с разбега увеличивается на 1 м.
---
!!! [img[9.png]] Превосходная скрытность
Вы совершаете с преимуществом проверки Ловкости (Скрытность), если в этом ходу перемещаетесь не более чем на половину своей скорости.
---
!!! [img[13.png]] Использование магических предметов
<<<
Вы изучили достаточно о магических процессах, чтобы импровизировать при использовании предметов, даже если раньше вы не умели ими пользоваться.
<<<
Вы игнорируете все требования класса, расы и уровня к использованию магических предметов.
---
!!! [img[17.png]] Воровские рефлексы
Вы обладаете большим опытом организации засад и быстрого отступления при опасности.
Вы можете совершить два хода во время первого раунда боя. Совершите первый ход согласно своей нормальной инициативе, и второй ход с инициативой на 10 меньше. Вы не можете использовать это умение, если [[захвачены врасплох|Захваченный врасплох]].
''Цена'': 25 см. ''Вес'': 0.5 кг.
Возможно, чаще всего используемые искателями приключений, воровские инструменты разработаны для взлома замков и обезвреживания ловушек. Владение этими инструментами также даёт вам общие знания о принципах действия ловушек и замков.
//''Компоненты.''// Воровские инструменты включают в себя надфиль, набор отмычек, небольшое зеркальце с металлической рукояткой, набор ножниц с узкими лезвиями и пару щипцов.
//''История.''// Ваши познания в области ловушек дают вам дополнительные знания при ответах на вопросы о местах, знаменитых своими ловушками.
//''Анализ, Внимательность.''// Вы получаете дополнительные знания при поиске ловушек, потому что вам известны различные простые признаки, выдающие их наличие.
//''Установка ловушки.''// Вы можете не только обезвреживать ловушки, но и устанавливать их. Как часть короткого отдыха вы можете создать ловушку из подручных средств. Результат вашей проверки становится сложностью для пытающегося обнаружить или обезвредить ловушку. Ловушка наносит урон, соответствующий материалам, использованным при создании (как то яд или оружие), или урон, равный половине результата вашей проверки, смотря что Мастер сочтёт более подходящим.
|!Действие| !Сл |
|Вскрыть замок | Различная |
|Обезвредить ловушку | Различная |
<<<
Fear not death, my friend, for the Raven Queen is glad to meet you on the other side.
— Morridin the Ravenwing
<<<
From time to time, the Raven Queen’s gaze lingers on a mortal soul whose courage and devotion sparks her cold heart. To these mortals she sends a special boon–a raven- shaped shadow whose appearance is a sign of her favor.
Death is the natural course for all things, from the lowly insect to the mightiest of gods. It is not an end, but a beginning–the first step onto the road into the unknown. For you, death offers little fear or concern because you are confident that the Raven Queen will shepard you to whatever fate your long service has earned. This comfort and understanding forms the cornerstone of your beliefs, and you carry this message wherever you go, consoling the grieving or speeding those who deserve to meet the Raven Queen on their way.
The shadow raven that keeps them company is a physical connection to the Lady of Uncounted Shadows. Since the blessing that marked you as a ravensoul reaper, you have been aware that you are watched by the Raven Queen. Some might grow uneasy under such scrutiny, but you embrace it, knowing that you have a special place in the Lady’s plans.
''Ravensouls Reapers in the World:'' Those who gain this blessing are known as ravensoul reapers, sometimes simply called ravensouls or reapers, and from that point on they are never truly alone. Devout worshipers of the Raven Queen are the most common ravensouls. However, some reapers are recent converts to her faith, unsure of what they have done to warrant such a gift.
''Adaptation:'' Most settings have some form of the Shadowfell, but if your setting doesn’t, this path can be associated with any deity of death or shadow. Maybe they are part of a fanatical order who only believes that they are doing the work of a god by sending souls to the afterlife in The Raven’s name.
<<<
''The Raven Queen & The Shadowfell ''
The Raven Queen is a mysterious being who rules the Shadowfell from a palace of ice deep within that dread realm. As the ruler of the Shadowfell, she dwells in a decayed, dark reflection of the world. Her ability to reach into the world is limited. Thus, she turns to mortals to serve her will. Her followers are expected to serve her will in the world. She watches over the world, anticipating each creature’s death and ensuring that it meets its end at the proscribed time and place, and bids her agents to defeat those who seek to cheat death through undeath or other imitations of immortality. She hates intelligent undead and expects her followers to strike them down.
<<<
---
!!Вороний жнец
| !Ранг |!Умения |
| !1 |Murderous Inspiration, Shadow Raven, Winter’s Raven |
| !2 |Disrupting Attack, Grave Chill, Raven Harrier |
| !3 |Bonded Raven, Drawn to Death, Fated Outcome |
| !4 |An Unkindness of Ravens, Call of Letherna |
---
!!!Предварительные условия:
* ''Владения навыками.'' религия.
* ''Заклинания.'' Способность сотворять заклинания 1 уровня или выше.
* ''Особое.'' Должен поклоняться Королеве Воронов или аналогичному божеству.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта, Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Murderous Inspiration
When you spend an inspiration and your shadow raven familiar is active, until the end of your turn, your magical spells and abilities can originate from the shadow raven’s space.
!!!Shadow Raven
You gain the service of a spirit sent by the Raven Queen to watch over you. The spirit assumes the form and game statistics of a raven, and it always obeys your commands, which you can give verbally.
While the raven is perched on your shoulder, you gain darkvision with a range of 60 feet (or it improves by 30 feet if you already possess darkvision), and a bonus to Wisdom (Perception) checks equal to your Charisma modifier. While perched on your shoulder, the raven can’t be targeted by any attack or other harmful effect; only you can cast spells on it; it can’t take damage; and it is incapacitated.
In combat, you roll initiative for the raven and control how it acts. The raven vanishes when it dies, if you die, or if the two of you are separated by more than 5 miles. At the end of a short or long rest, you can call the raven back to you—no matter where it is or whether it died—and it reappears within 5 feet of you.
!!!Winter’s Raven
<<<
As an enemy aims at you, your raven unfurls as a shroud of bitter wind that deflects the attack.
<<<
//Arcane Incantation • (Recharges on a Short or Long rest) //
As a reaction, when an enemy within 25 feet of you targets you with a ranged attack, you force the enemy to succeed on a Dexterity saving throw or take 2d10 cold damage.
Additionally, if your shadow raven is present and not perched on your shoulder, you can make it appear in an unoccupied space within 5 feet of the target. If you do so, the target suffers a -2 penalty to attack rolls until the end of your next turn (this penalty applies to the triggering attack).
The cold damage and attack penalty of this incantation increase when you reach 5th level (3d10 and -3), 11th level (5d10 and -4), and 17th level (8d10 and -6).
---
!!Ранг 2
!!!Disrupting Attack
<<<
The Raven Queen has blessed you as her Reaper.
<<<
You ignore necrotic resistance with your spells and magical abilities.
!!Grave Chill
<<<
When the dead fall, you speed their souls to the Shadowfell.
<<<
//Divine Prayer • (Recharges on a Short or Long rest) //
As a reaction, when an ally within 25 feet of you bloodies an enemy, you can move to a space within 5 feet of the triggering ally without provoking opportunity attacks. If you do so, each enemy within 5 feet of you must succeed on a Constitution saving throw or until the end of its next turn, its speed is reduced to 0 and it cannot take reactions.
!!!Raven Harrier
<<<
Your shadow raven flies shrieking into combat at your command, distracting a foe to grant you the advantage.
<<<
//Arcane Incantation • (Recharges on a Short or Long rest)//
As a bonus action, while your shadow raven is present and not perched on your shoulder, you can choose one creature you can see within 5 feet of your raven. The chosen creature grants advantage on attack rolls against itself until the end of your next turn.
---
!!Ранг 3
!!!Bonded Raven
You can now communicate with your raven telepathically while it is within 100 feet of you. You can also see through the raven’s eyes and hear what it hears while it is within 100 feet of you. Additionally, your raven gains a bonus to AC and saving throws equal to half of your proficiency bonus.
!!!Drawn to Death
Whenever a creature within 25 feet of you reduces another creature to 0 hit points, you can move up to 10 feet toward the triggering creature without provoking opportunity attacks (no action required)
!!!Fated Outcome
<<<
All has been forseen because each outcome has already unfolded in the Raven Queen's eyes.
<<<
//Divine Prayer • (Recharges on a Short or Long rest) //
As a reaction, when an ally within 50 feet of you fails an attack, saving throw, or ability check you can allow the triggering allow to reroll. The triggering ally gains a bonus to the reroll equal to your proficiency bonus and must use the new result.
---
!!Ранг 4
!!!An Unkindness of Ravens
<<<
Your shadow raven splinters into a dozen distinct shapes, attacking your enemies with deathly cold.
<<<
//Arcane Incantation • (Recharges on a Long rest) //
As an action, choose any number of creatures you can see within 20 feet of you. Each target must make a Dexterity saving throw. If a target is bloodied, they suffer a penalty to the saving throw equal to your proficiency bonus. On a failed save, a target takes 1d6 cold damage and 1d6 necrotic damage, and their speed is reduced to 0 for 1 minute. On a successful save, a target takes half as much damage, and their speed is reduced by 10 feet for 1 minute. While suffering a speed reduction from this incantation, a target can repeat the saving throw at the end of each of their turns, ending the effect on themselves on a success.
The damage of this incantation increase when you reach 5th level (2d6 cold and 2d6 necrotic), 11th level (3d6 cold and 3d6 necrotic), and 17th level (4d6 cold and 4d6 necrotic).
!!!Call of Letherna
<<<
Your shadow raven splinters into a dozen distinct shapes, attacking your enemies with deathly cold.
<<<
//Divine Prayer • (Recharges on a Long rest) //
As an action, choose any number of creatures you can see within a 30-foot radius centered you. Each target must make a Wisdom saving throw. On a failed save, a target takes 1d6 cold damage and 1d6 necrotic damage, and is pulled up to 20 feet closer to you. On a successful save, a target takes half as much damage and is not pulled.
The radius creates a zone of killing cold that lasts for 1 minute. Your enemy’s speed is halved in the area, and when an enemy enters the area for the first time on a turn or starts its turn there, it takes 1d4 cold damage and 1d4 necrotic damage. Until this prayer ends, you can use a bonus action on each of your turns to pull each enemy within the zone up to 5 feet closer to the origin space.
You must concentrate on this prayer as if concentrating on a spell.
The damage this incantation deals on a failed save increase when you reach 5th level (2d6 cold and 2d6 necrotic), 11th level (3d6 cold and 3d6 necrotic), and 17th level (4d6 cold and 4d6 necrotic).
The damage this incantation deals within the zone increases when you reach 5th level (1d6 cold and 1d6 necrotic), 11th level (1d8 cold and 1d8 necrotic), and 17th level (1d12 cold and 1d12 necrotic).
Если мертвого персонажа пытаются воскресить заклинанием или эффектом со временем сотворения дольше одного действия, начинается Испытание Воскрешения. Вклад в ритуал могут внести до трех персонажей. Мастер просит каждого из них совершить проверку характеристики, основанную на форме их вклада. Сл проверки определяется Мастер с учетом того, насколько весомым является вносимый вклад. Помеха или преимущество на такую проверку накладываются в зависимости от уместности вносимого вклада.
//Например, молитва богу, которому верно поклонялся мертвый персонаж, может потребовать проверку Интеллекта (Религия) легкой или средней Сл. В то время как настойчивое требование вернуть душу с Внешних Планов может потребовать проверку Харизмы (Запугивание) очень высокой или практически невыполнимой Сл. //
После того, как будет внесен весь вклад, Мастер совершает последнюю проверку Воскрешения без модификатора. Базовая Сл проверки равна 10 и увеличивается на 1 за каждое предыдущее успешное воскрешение персонажа. За каждый успешный вклад Сл уменьшается на 3, а каждый проваленный вклад увеличивает Сл на 1.
После успешной проверки Воскрешения душа персонажа (если она того желает) возвращается в тело, и ритуал успешно завершается. Персонаж получает один проваленный спасбросок от смерти, который нельзя снять никаким образом.
Если проверка провалена, душа не возвращается, а Сл его следующей проверки Воскрешения возрастает на 5.
* Если у вас есть воровские инструменты и вы владеете ими, совершите проверку Ловкости против Сл вскрытия замка, добавив к результату броска ваш бонус мастерства. При успехе вы вскрываете замок.
* Если у вас есть воровские инструменты, но вы не владеете ими, совершите успешную проверку Интеллекта Сл 10, чтобы понять как ими пользоваться, затем совершите проверку Ловкости против Сл вскрытия замка с помехой. При успехе вы вскрываете замок.
* Если у вас нет воровских инструментов, но вы владеете ими, вам необходимо раздобыть импровизированный аналог, при этом ваши знания позволяют понять, что именно вам нужно для создания кустарной отмычки. Совершите проверку Ловкости против Сл вскрытия замка с помехой, добавив к результату броска ваш бонус мастерства. При успехе вы вскрываете замок.
* Если у вас нет ни воровских инструментов, ни владения ими, вы не можете вскрыть замок.
//Стоимость перемещения:// половина вашей скорости.
Вы не можете встать, если у вас недостаточно перемещения или если скорость равна 0.
Некоторые виды ремесел чаще других пересекаются с потребностями приключенцев. Те, которые таковыми не являются, перечислены здесь как второстепенные. Они не менее важны для мира и экономики, но обеспечивают более базовые предметы первой необходимости, материалы и ценные товары. В основном эти виды ремесла используются для производства ценных товаров.
Чаще всего эти виды ремесел взаимодействуют с [[Зачаровыванием|Зачаровывание]] - магия отличается дорогим вкусом, и бывает трудно найти, например, сапоги стоимостью 250 см - это же шикарные сапоги! Вы можете использовать эти виды ремесел, чтобы изготовить или рассчитать, как можно изготовить такие вещи.
Ниже приведены инструменты и характеристики для каждого второстепенного ремесла, а также примеры материалов и предметов, но помните, что второстепенные ремесла существуют в первую очередь для создания добавленной стоимости, а приведенные примеры - это просто ориентиры (примеры) формулы добавленной стоимости.
<<tabs "[tag[Второстепенное ремесло]]" "" "$:/state/tab1" "tc-vertical">>
В отличие от многих магических предметов, которые изготавливаются, а затем зачаровываются магией, волшебная палочка создаётся специально для хранения магии, которую она будет содержать. Волшебные палочки изготавливаются из дерева и пропитываются магией в едином процессе, с различными тонкостями в зависимости от типа магии, которую они будут проявлять.
Волшебные палочки очень ценны для искателей приключений, и их силу никогда не следует недооценивать, поскольку они могут сэкономить драгоценные ресурсы. Хотя типичная волшебная палочка - это настраиваемый предмет, который может перезаряжаться, существует более слабая разновидность низших волшебных палочек, которые являются расходуемыми предметами, больше похожими на многоразовые свитки, которые легче изготовить.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления волшебной палочки в самой простой форме:
* Выберите волшебную палочку, которую вы хотите изготовить, из [[таблицы высших волшебных палочек|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=1278449789]], либо заклинание, на основе которого вы хотите изготовить низшую волшебную палочку.
* Приобретите предметы, перечисленные в колонке Материалы для этой волшебной палочки.
* Используйте свои [[инструменты резчика по дереву|Инструменты резчика по дереву]] для изготовления волшебной палочки в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Ловкости + ваш бонус мастерства [[инструментов резчика по дереву|Инструменты резчика по дереву]] (если вы владеете навыком Магия)).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении палочки сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Вырезание палочек основано на использовании [[инструментов резчика по дереву|Инструменты резчика по дереву]]. Попытка изготовить волшебную палочку без них невозможна. Вырезание палочек использует ваш модификатор Ловкости.
Несмотря на то, что заклинатели любого уровня могут создавать палочки с известными им заклинаниями, процесс заключается в систематическом применении магической теории, чтобы интегрировать заклинание в палочку в том виде, в котором оно впоследствии может быть использовано.
Кроме того, как и для родственных этому ремеслу [[Зачаровыванию|Зачаровывание]] и [[Начертанию свитков|Начертание свитков]], вам необходимо владение навыком Магия; без владения навыком Магия вы не сможете добавить к проверкам на вырезание палочек бонус владения инструментами.
---
!!!Материалы: древесина и эссенции
Материалами для вырезания палочек являются древесина и эссенции. Древесина, используемая в волшебных палочках, обычно покупается, и ниже приведена таблица ее стоимости. В волшебных палочках низкого уровня можно использовать обычную древесину, не подверженную магической обработке, но более мощная магия может привести к тому, что такая обычная древесина мгновенно расколется или загорится, поэтому необходимо использовать редкие и экзотические виды древесины.
Эссенции разнообразны по своей природе, но именно они питают волшебные палочки. Вы можете найти более подробную информацию о них в [[соответствующем разделе|Эссенции]].
Если материалы найдены среди сокровищ, они рассчитываются так же, как и любые другие ценные невалютные сокровища.
<<<
//''Что представляет собой редкая древесина? ''//
Наиболее распространенными примерами являются деревья из экзотических мест - древесина из Страны Фей или с Внешних Планов. Точная природа волшебных палочек может соответствовать заклинанию для колорита, но детали, выходящие за рамки редкости, по умолчанию не учитываются системой.
<<<
|!Древесина | !Цена|
|Обычная ветвь | 1 мм|
|Необычная ветвь | 25 см|
|Редкая ветвь | 80 см|
|Очень редкая ветвь | 800 см|
|Легендарная ветвь | 2000 см|
---
!!!Проверка ремесла
Когда вы хотите поработать над вырезанием палочек, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор вырезания палочек = бонус мастерства инструментов резчика по дереву (если вы владеете навыком Магия) + модификатор Ловкости
```
!!!Успех и провал
Для вырезания палочек, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Спасбросок вырезания палочек
Некоторые волшебные палочки требуют совершения спасброска. В таких случаях для расчета Сл спасброска используется следующая формула.
```
Сл спасброска волшебной палочки = 8 + бонус мастерства инструментов резчика по дереву (если вы владеете навыком Магия) + модификатор Интеллекта
```
Спасбросок рассчитывается в момент создания предмета на основе характеристик и бонуса мастерства создателя и не меняется после создания. Спасбросок не включает в себя компетентность и прочие бонусы к броску ремесла.
---
!!!Низшие и высшие волшебные палочки
Многим приключенцам лучше знакомы высшие волшебные палочки, изготовленные с таким мастерством и мощью, что их сила восстанавливается каждый день на рассвете, обеспечивая почти неограниченную способность применять магию. Их более слабые разновидности (низшие волшебные палочки) действуют аналогичным образом, но не перезаряжаются естественным образом, и для того, чтобы использовать их снова, их необходимо зарядить.
!!!Перезарядки низших волшебных палочек
Перезаряжать низшие волшебные палочки довольно просто: вы можете либо потратить 1 эссенцию той редкости, которая требуется для изготовления палочки, и провести ритуал, который занимает 2 часа, потратив эссенцию и восстановив все заряды в низшей палочке (это работает только с низшими палочками), либо вы можете потратить 2 ячейки заклинаний, равных уровню заклинания, которое может сотворить палочка (1 уровень для заговора), во время этого ритуала, чтобы перезарядить один заряд. Вы можете повторять этот ритуал, чтобы перезарядить палочку несколько раз, вплоть до максимального заряда.
---
!!!Магическая формула
Высшие волшебные палочки обладают известными формулами, которые можно вывести в процессе изготовления (как при зачаровании), и вам не нужно знать заклинание или эффект перед изготовлением палочки, хотя их обычно сложнее изготовить.
Чтобы изготовить низшую палочку, вы должны знать магическую формулу заклинания, на основе которого вы хотите создать волшебную палочку. Самый простой способ получить это знание - знать, как сотворить заклинание. Вам всегда доступны магические формулы известных вам заклинаний. В противном случае, чтобы создать свиток заклинания, необходимо обладать глубокими знаниями о нем. Ниже перечислены способы получения этих знаний:
* Заклинание записано в вашу книгу заклинаний волшебника.
* Заклинание записано в вашу ритуальную книгу ритуального залинателя.
* У вас есть свиток этого заклинания (Сл ремесла +2)
* Вы изучили магическую формулу и записали её. Для изучения заклинания таким способом требуется владение навыком Магия и 8 часов (1 день) изучения на каждый уровень заклинания, а также доступ к учителю или книге, в которой записано заклинание. Выучив формулу заклинания, вы можете записать её в книгу магических формул и впоследствии создавать из неё свитки.
!!!Вид эссенции низшей волшебной палочки
Вид эссенции определяется списком заклинаний, из которого взято заклинание; если оно находится в нескольких списках заклинаний, то определяется тем, каким образом вы получили доступ к заклинанию. Если у вас есть доступ к заклинанию через несколько списков или письменную форму заклинания, вы можете выбрать, какую эссенцию использовать для заклинаний, у которых есть несколько вариантов.
|!Вид эссенции | !Список заклинаний |
|Арканная | Бард, Волшебник, Изобретатель, Колдун, Чародей |
|Божественная | Жрец, Паладин |
|Первородная | Друид, Следопыт |
|Псионическая | Монах, Псион |
Захваченное существо может пытаться высвободиться. Для этого оно действием совершает проверку Силы (Атлетика) или Ловкость (Акробатика), противопоставленную проверке Силы (Атлетика) схватившего.
Высвобождение из других условий (например оков) может потребовать проверки Силы или Ловкости с обозначенной Сл.
[img class="centerme" [https://i.imgur.com/vnD2iSj.jpg]]
Поскольку вы — высший эльф, у вас острый ум и вы знакомы, по крайней мере, с основами магии. Во многих мирах D&D существует два вида высших эльфов. Один вид (который включает серых эльфов и эльфов долин Серого Ястреба, сильванести Саги о Копье и солнечных эльфов Забытых Королевств) высокомерен и замкнут, считая себя выше не-эльфов и даже других эльфов. Другой вид (включающий высших эльфов Серого Ястреба, квалинести из Саги о Копье и лунных эльфов из Забытых Королевств) более распространён и дружелюбен, и часто встречается среди людей и других рас.
У солнечных эльфов Фаэруна (также называемых золотыми эльфами или эльфами восхода) бронзовая кожа и волосы медного, чёрного или золотистого оттенка. У них золотые, серебристые или чёрные глаза. Лунные эльфы (также называемые серебряными или серыми эльфами) гораздо бледнее, с алебастровой кожей, имеющей иногда оттенок синего. У них часто серебристо-белые, чёрные или синие волосы, но и различные оттенки светлых, коричневых и рыжих тонов также не являются редкими. У них синие или зелёные глаза с золотыми вкраплениями.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Заговор |^Вам известен один заговор из списка заклинаний волшебника. Базовой характеристикой для его использования является Интеллект. |
|^Эльфийская боевая подготовка |^Вы владеете воинским лёгким и одноручным клинковым оружием, а также простыми и воинскими луками. |
|^Дополнительный язык |^Вы можете говорить, читать и писать на ещё одном языке, на ваш выбор. |
Пребывая в ярости, вы можете в свой ход бонусным действием [[сбить с ног|Сбитый с ног / Лежащий ничком]] существо, размер которого не превышает ваш больше чем на одну категорию, когда попадаете по нему рукопашной атакой оружием.
Пребывая в ярости, вы можете во время перемещения использовать бонусное действие, чтобы переместиться через пространство враждебного существа, размер которого не превышает ваш больше чем на одну категорию. Существо должно преуспеть в спасброске Силы (Сл 8 + мод. Силы + бонус мастерства), иначе получит 1к12 + мод. Силы дробящего урона и будет [[сбито с ног|Сбитый с ног / Лежащий ничком]].
Пока вы пребываете в ярости, все враждебные существа в пределах 1 м от вас совершают с помехой броски атак, нацеленных не на вас и не на другое существо с таким же свойством. Существа не подвержены этому эффекту, если не могут видеть или слышать вас, либо если они не могут быть [[испуганы|Испуганный]].
Пребывая в ярости, вы получаете скорость полёта, равную вашей скорости ходьбы. Вы способны перемещаться таким образом только короткими рывками; вы падаете, если завершаете свой ход в воздухе, и ничто другое вас не удерживает.
Пребывая в ярости, если вы перещаетесь как минимум на 4 м по прямой к цели, прежде чем совершить по ней рукопашную атаку оружием, вы можете совершить по ней ещё одну рукопашную атаку оружием бонусным действием.
Вы заключили договор с одним из самых редких видов гениев — благородным гением. Подобные существа правят просторами Стихийных Планов и обладают властью над младшими гениями и стихийными существами. У благородных гениев разные мотивы, однако каждый из них высокомерен и обладает силой, которая может соперничать с мощью младших богов. Они с радостью готовы подыграть смертным, которые желают связать себя узами служения с гениями, охотно вступая в соглашения ради расширения своего влияния на мультивселенную.
Вы сами выбираете вид своего покровителя или определяете его броском по таблице ниже.
| !к4 |!Вид |!Стихия |
| 1 |Дао |Земля |
| 2 |Джинн |Воздух |
| 3 |Ифрит |Огонь |
| 4 |Марид |Вода |
---
!!! [img[1.png]] Расширенный список заклинаний
Гений позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. Таблица ниже показывает общие заклинания гениев вместе их конкретными разновидностями, которые добавляются в ваш список заклинаний колдуна.
| !УЗ |!Заклинания гения |<|
| !1 |//обнаружение добра и зла// |<|
| !2 |//воображаемая сила// |<|
| !3 |//сотворение пищи и воды// |<|
| !4 |//воображаемый убийца// |<|
| !5 |//сотворение// |<|
| !9 |//исполнение желаний// |<|
| !УЗ |!Заклинания дао |!Заклинания джинна |
| !1 |//убежище// |//волна грома// |
| !2 |//шипы// |//порыв ветра// |
| !3 |//слияние с камнем// |//стена ветров// |
| !4 |//изменение формы камня// |//высшая невидимость// |
| !5 |//каменная стена// |//притворство// |
| !УЗ |!Заклинания ифрита |!Заклинания марида |
| !1 |//огненные ладони// |//туманное облако// |
| !2 |//палящий луч// |//размытый образ// |
| !3 |//огненный шар// |//метель// |
| !4 |//огненный щит// |//власть над водами// |
| !5 |//небесный огонь// |//конус холода// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Сосуд гения
Ваш покровитель дарует вам магический сосуд, содержащий частичку силы гения. Это сосуд Крошечного размера, который может быть использован в качестве заклинательной фокусировки для ваших заклинаний колдуна. Вы можете сами решить, что это за объект, или же сделать выбор с помощью таблицы ниже.
| !к6 |!Сосуд |
| 1 |Масляная лампа |
| 2 |Урна |
| 3 |Кольцо с отделением |
| 4 |Закупоренная бутылка |
| 5 |Статуэтка с пустотой внутри |
| 6 |Изысканный фонарь |
Когда вы прикасаетесь к сосуду гения, вы можете использовать его следующим образом:
''Передышка на дне бутылки.'' Действием вы можете магически исчезнуть и войти в сосуд, который остаётся на том месте, где вы его держали. Внутренности сосуда — это межпространственное измерение в форме цилиндра с радиусом в 6 м, 6 м высотой, напоминающее ваш сосуд. Интерьер обставлен удобными подушками и низкими столами, и в нём поддерживается комфортная температура. Пока вы находитесь внутри, вы можете слышать все, что происходит вокруг сосуда, как если бы вы были на его месте. Вы можете оставаться в сосуде количество часов, равное удвоенному значению вашего бонуса мастерства. Вы покидаете сосуд раньше этого времени, если используете бонусное действие, умираете или если сосуд уничтожается. Если вы покидаете сосуд, вы оказываетесь в незанятом пространстве максимально близко к сосуду. Любые предметы, принесенные внутрь сосуда, остаются в нём до тех пор, пока они не будут вынесены оттуда или сосуд не будет уничтожен, при этом любой объект, находящийся внутри сосуда, появляется невредимым в незанятом пространстве максимально близко к сосуду. Войдя в сосуд, вы не сможете войти в него повторно, пока не закончите продолжительный отдых.
''Гнев гения.'' Один раз в каждый свой ход, когда вы попадаете броском атаки, вы можете нанести дополнительный урон по цели, равный вашему бонусу мастерства. Тип этого урона определяется выбранной вами разновидностью гения: дробящий урон (дао), урон звуком (джинн), урон огнём (ифрит), урон холодом (марид).
Класс доспеха сосуда гения равен Сл спасброска ваших заклинаний. Его хиты равны вашему уровню колдуна + вашему бонусу мастерства. Сосуд также имеет иммунитет к урону психической энергией и ядом.
Если сосуд будет уничтожен или вы потеряете его, вы можете провести часовую церемонию, чтобы получить замену от покровителя. Эта церемония может быть проведена как часть короткого или продолжительного отдыха. По её окончании предыдущий сосуд уничтожается, если он до сих пор существует. Этот сосуд исчезает в вспышке стихийной силы, когда вы умираете.
---
!!! [img[6.png]] Стихийный дар
<<<
Вы начинаете перенимать отличительные черты своего покровителя.
<<<
Вы получаете сопротивление к типу урона, который соответствует разновидности вашего покровителя: дробящему урону (дао), урону звуком (джинн), урону огнём (ифрит), урону холодом (марид).
Помимо этого вы можете бонусным действием даровать себе скорость полёта, равную 6 м. Этот эффект длится 10 минут, и всё это время вы можете парить.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Спасительный сосуд
Когда вы входите в сосуд гения при помощи умения Передышка на дне бутылки, вы можете выбрать до пяти согласных существ, которых вы можете видеть в пределах 6 м от вас. Выбранные существа переносятся в сосуд вместе с вами.
Бонусным действием вы можете высвободить любое количество существ из сосуда. Они все покидают сосуд в том случае, если вы покидаете его или сосуд уничтожается.
Также кто угодно (включая вас), оставаясь в сосуде минимум 10 минут, получает все преимущества короткого отдыха. Помимо этого, кто угодно может добавить ваш бонус мастерства к количеству восстанавливаемых хитов, если тратит кости хитов во время этого короткого отдыха.
---
!!! [img[14.png]] Ограниченное желание
<<<
Вы упрашиваете своего покровителя исполнить ваше скромное желание.
<<<
Действием вы можете проговорить своё желание в сосуд гения, попросив эффект одного заклинания уровня не выше 6, имеющего время сотворения «1 действие». Это заклинание может находиться в списке заклинаний любого класса, вам также не требуются компоненты для его накладывания, включая материальные компоненты со стоимостью; заклинание просто срабатывает как часть вашего действия.
Вы не можете использовать это умение повторно, пока не завершите 1к4 продолжительных отдыхов.
Вы — член гильдии ремесленников, знаток в какой-то области, связанный с другими мастеровыми. Вы крепко стоите на ногах в этом торгашеском мире, отделённые своим талантом и богатством от оков феодального строя. Когда-то вы учились у мастера, под опекой гильдии, и вот вы сами стали таким умельцем.
* ''Владение навыками:'' Проницательность, Убеждение
* ''Владение инструментами:'' Один вид [[инструментов ремесленников|Инструменты ремесленников]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Инструменты ремесленника, которыми вы владеете, рекомендательное письмо из гильдии, комплект одежды ремесленника, кошель с 15 см
!!!Специализация гильдии
Обычно гильдии основывают в городах, достаточно больших для того, чтобы сразу несколько ремесленников занимались одним общим делом. Однако ваша гильдия может быть рассредоточенной сетью ремесленников, где каждый работает в своей деревне. Определите вместе с Мастером характер вашей гильдии. Можете выбрать специализацию гильдии из таблицы, а можете определить её случайным образом.
Будучи членом гильдии, вы знаете, как создавать готовые предметы из сырья (отражается вашим владением определённым инструментом), а также основы торговли и бизнеса. Вопрос лишь в том, отказались ли вы от торговли в пользу приключений или стараетесь успевать и там, и там.
| !к20 |!Специализация гильдии |
| 1 |Алхимики и аптекари |
| 2 |Гончары и мастера керамики |
| 3 |Жестянщики, проволочники и литейщики |
| 4 |Каллиграфы, писцы и нотариусы |
| 5 |Каменщики и камнерезы |
| 6 |Картографы, землемеры и чертёжники |
| 7 |Кожевенники, меховщики и дубильщики |
| 8 |Кузнецы и бронники |
| 9 |Металлурги и мастера обработки металла |
| 10 |Пивовары и виноделы |
| 11 |Плотники, кровельщики и штукатуры |
| 12 |Повара и пекари |
| 13 |Сапожники и чеботари |
| 14 |Стеклодувы и стекольщики |
| 15 |Столяры, бондари и лучных дел мастера |
| 16 |Судостроители и парусные мастера |
| 17 |Тележники и колёсных дел мастера |
| 18 |Ткачи и красильщики |
| 19 |Художники, иллюстраторы и маляры |
| 20 |Ювелиры и огранщики |
!!!Умение: Членство в гильдии
Будучи авторитетным и уважаемым членом гильдии, вы можете пользоваться особыми преимуществами, предоставляемыми этим членством. Ваши товарищи по гильдии при необходимости предоставят вам жилище и питание, и даже оплатят ваши похороны. В некоторых городах у гильдий есть место для сбора, и там можно потенциально встретить покровителей, союзников и наёмников.
Гильдии часто обладают значительной политической властью. Если вас обвинят в преступлении, гильдия может помочь, если существует вероятность оправдательного приговора. Благодаря гильдии вы получаете доступ к влиятельным политикам, если состоите в гильдии на хорошем счету. Для таких связей может потребоваться жертвование денег или магических предметов в казну гильдии.
Каждый месяц вы должны выплачивать гильдии 5 см. Если вы пропустите платёж, вы должны вначале оплатить все долги, и только тогда восстановите своё доброе имя в гильдии.
---
!!!Разновидность гильдейского ремесленника: Гильдейский купец
Вы можете состоять не в гильдии ремесленников, а в гильдии купцов, караванщиков и лавочников. Сами вы ничего не мастерите, но зарабатываете на жизнь, покупая и продавая творения чужих рук (или сырьё, необходимое ремесленникам). Ваша гильдия может быть большим торговым синдикатом (или семейством), с капиталовложениями по всему региону. Возможно, вы перевозите товары из одного места в другое, на корабле, в фургоне или караване, или покупаете их у бродячих торговцев и продаёте в своём маленьком магазинчике. В какой-то мере, жизнь странствующего торговца ближе к приключениям, чем жизнь ремесленника.
Вместо владения ремесленным инструментом вы можете овладеть инструментами навигатора или дополнительным языком. А вместо наличия комплекта одежды ремесленника и ремесленных инструментов вы можете начать игру с комплектом дорожной одежды, мулом и телегой.
---
!!!Персонализация
Гильдейские ремесленники мало чем отличаются от обывателей, пока они не откладывают свои инструменты в сторону и не начинают карьеру искателя приключений. Они понимают ценность тяжёлого труда и важность общности, но они так же как другие подвержены грехам жадности и алчности.
| !к8 |!Черта характера |
| 1 |Я считаю, что всё, что делается, должно делаться правильно. Ничего не могу с этим поделать — я перфекционист. |
| 2 |Я сноб, свысока смотрящий на тех, кто не может оценить изящное искусство. |
| 3 |Мне всегда нужно знать, как всё вокруг устроено, и как нужно обращаться с другими. |
| 4 |У меня много остроумных афоризмов и есть пословицы на любой случай. |
| 5 |Я груб с теми, у кого нет моей тяги к честному и справедливому труду. |
| 6 |О своей профессии я могу говорить часами. |
| 7 |Я не могу легко расставаться с деньгами, и могу сколь угодно долго торговаться. |
| 8 |Благодаря работе я прославился, и хочу, чтобы все это ценили. Меня всегда потрясает, когда другие говорят, что не слышали обо мне. |
| !к6 |!Идеал |
| 1 |''Сообщество.'' Все цивилизованные народы обязаны укреплять сообщество и обеспечивать безопасность цивилизации. |
| 2 |''Великодушие.'' Талант был вручён мне, чтобы я использовал его на благо всего мира. |
| 3 |''Свобода.'' Все должны быть свободны, чтобы жить так, как хочется им. |
| 4 |''Жадность.'' Я просто занимаюсь этим из-за денег. |
| 5 |''Народ.'' Я предан своему народу, а не идеям. |
| 6 |''Стремление.'' Я усердно работаю над тем, чтобы стать в своём деле лучшим. |
| !к6 |!Привязанность |
| 1 |Мастерская, где я учился ремеслу, для меня — самое важное место в мире. |
| 2 |Я создал кое для кого удивительную работу, но посчитал его недостойным. Я всё ещё ищу того, кто окажется достоин её. |
| 3 |Я по гроб жизни обязан гильдии за то, что она сделала меня тем, кто я есть. |
| 4 |Богатство мне нужно для завоевания сердца возлюбленной. |
| 5 |Когда-нибудь я вернусь в гильдию и докажу, что я лучший из всех. |
| 6 |Я мщу силам зла, которые уничтожили моё торговое дело и разрушили мою жизнь. |
| !к6 |!Слабость |
| 1 |Я сделаю всё что угодно, чтобы заполучить что-то редкое или очень ценное. |
| 2 |Мне всегда кажется, что меня пытаются обжулить. |
| 3 |Никто не должен знать, что я однажды украл деньги из казны гильдии. |
| 4 |Мне всегда мало того, что у меня есть — всегда нужно больше. |
| 5 |Я готов убить ради получения благородного титула. |
| 6 |Я ужасно завидую тем, кто может превзойти мой труд. Куда бы я ни пошёл, меня окружают конкуренты. |
[img width=450 class="centerme" [https://i.imgur.com/Dt0LOD9.png]]
<<tabs "[tag[Гит - описание]]" "Описание гитов" "$:/state/tab1">>
[img width=400 class="centerme" [https://i.imgur.com/7p2AbxB.png]]
В крепостях на плане Лимбо гитцераи оттачивают свой разум до остроты бритвы.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 2. |
|^Ментальная дисциплина |^Под руководством наставников гитцераи учатся управлять собственным разумом. Вы совершает спасброски с целью избежания или окончания состояний [[Испуганный]] и [[Очарованный]] на себе с преимуществом. |
|^Псионика гитцераев |^При достижении 3 уровня вы можете один раз сотворить заклинание //щит//. При достижении 5 уровня, вы также можете сотворить заклинание //видение невидимого//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, когда завершаете продолжительный отдых. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для их сотворения является Интеллект или Мудрость (на ваш выбор). Заклинания, сотворяемые с помощью данной особенности, не требуют материальных компонентов. |
|~|^Кроме того, вы можете выбрать Мудрость в качестве базовой характеристики для использования расовой особенности Псионика гитов и черты Раскрытая псионика. |
|^Психическая защита |^Если вы не носите ни доспех, ни щит, ваш КД равен 10 + мод. Ловкости + мод. Мудрости. |
[img class="centerme" [https://i.imgur.com/WciEakn.png]]
Гитъянки жестоки, их с детства воспитывают как воинов.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2. |
|^Воинское воспитание |^Вы владеете лёгкими и средними доспехами, а также простым и воинским клинковым оружием. |
|^Декадентское мастерство |^В вечном городе Ту’нарате у гитъянки полно времени чтобы чему-нибудь научиться. Вы изучаете один язык по вашему выбору и владеете одним навыком или инструментом по вашему выбору. |
|^Псионика гитъянки |^При достижении 5 уровня, вы можете сотворять заклинание //туманный шаг//. Вы восстанавливаете способность сотворять это заклинание с помощью этой особенности, когда завершаете продолжительный отдых. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для его сотворения является Интеллект. |
[img width=300 class="centerme" [https://i.imgur.com/JumdCDf.png]]
Глубинные гномы или свирфнеблины являются прагматичными и зачастую хмурыми соплеменниками гномов, живущие глубоко под землёй. Подземье полно опасностей, и поэтому глубинные гномы и проводят большую часть своего времени, всего-навсего стараясь выжить.
|!Особенность |!Описание |
|^Возраст |^Недолгоживущие по сравнению с другими гномами, глубинные гномы, как и люди, достигают зрелости и считаются взрослыми к 25 годам. Они живут от 200 до 250 лет, хоть и из-за тяжкого труда и опасностей Подземья, они зачастую умирают раньше времени. |
|^Размер |^В отличии от других гномов вес свирфнеблинов составляет от 35 до 55 кг. Ваш размер — Маленький. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Дар свирфнеблина |^При достижении 3 уровня вы можете один раз сотворить заклинание //маскировка//. При достижении 5 уровня, вы также можете сотворить заклинание //необнаружимость//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Интеллект. |
|^Камуфляж свирфнеблинов |^Когда вы совершаете проверку Ловкости (Скрытность), вы можете сделать это с преимуществом. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Дополнительный язык |^Вы можете говорить, читать, и писать на Подземном языке. |
[img [https://i.imgur.com/yomHRSX.png]]
<<tabs "[tag[Гном - описание]]" "Описание гномов" "$:/state/tab1">>
[img [https://i.imgur.com/w8fKzwt.png]]
<<tabs "[tag[Гоблин - описание]]" "Описание гоблинов" "$:/state/tab1">>
[img width=400 class="centerme" [https://i.imgur.com/k10B6bJ.png]]
<<tabs "[tag[Голиаф - описание]]" "Описание голиафов" "$:/state/tab1">>
В обычных условиях необходимо отслеживать только еду для персонажей. Предполагается, что вода легкодоступна в прудах и ручьях, а животные могут ежедневно пастись/охотиться самостоятельно.
Суровая местность, такая как пустыня, океан, горы, подземье или арктика, требует отслеживания пищи и воды как для персонажей, так и для животных.
Существа, которые не едят и не пьют, подвергаются эффектам [[истощения|Истощённый]]. [[Истощение|Истощённый]], вызванное голодом или жаждой, нельзя устранить, пока персонаж не поест и не попьёт в надлежащем объёме. Требования к еде и воде зависят от размера существа, как показано в таблице ниже.
|!Размер |!Еды в день |!Воды в день |
|Крохотное |0.25 кг |0.5 л |
|''Маленькое'' |''0.5 кг'' |''2 л'' |
|''Среднее'' |''1 кг'' |''4 л'' |
|Большое |4 кг |16 л |
|Огромное |16 кг |64 л |
|Громадное |64 кг |256 л |
!!!Голод
В конце каждого дня без еды существо должно преуспеть в проверке Телосложения (Выносливость) со Сл = 10 + 1 за каждый день без еды, иначе получит одну степень [[истощения|Истощённый]].
* Существо может растягивать рационы, употребляя половину пищи. Употребление половины требуемого количества еды в день считается как полдня без пищи.
* Употребление требуемого количества пищи снижает степень истощения на 1, полученную от голода, в конце дня.
* Счётчик дней без еды обнуляется, если у существа нет степеней истощения, полученных от голода.
!!!Жажда
В конце каждого дня без воды существо должно преуспеть в проверке Телосложения (Выносливость) со Сл = 15 + 5 за каждый день без воды, иначе получит одну степень [[истощения|Истощённый]]. Существо, уже имеющее как минимум одну степень истощения, вместо этого получает сразу две степени.
* Употребление половины требуемого количества воды в день считается как полдня без воды.
* Употребление требуемого количества воды снижает степень истощения на 1, полученную от жажды, в конце дня.
* Счётчик дней без воды обнуляется, если у существа нет степеней истощения, полученных от жажды.
* Потребность в воде удваивается, если стоит жаркая погода.
//Требование: 6 уровень//
Вы можете потратить 3 очка ци, чтобы сотворить заклинание //дребезги//.
[img width=210 class="centerme" [https://i.imgur.com/IpL9iK1.png]]
Будучи горным дварфом, вы являетесь сильным и выносливым, приспособленным к жизни в суровой местности. Вы довольно высоки (по дварфской мерке), и скорее светлокожи. Щитовые дварфы из северного Фаэруна, а также правящий клан хиларов и благородный клан деваров из Саги о Копье, всё это горные дварфы.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2. |
|^Владение доспехами дварфов |^Вы владеете лёгкими и средними доспехами. |
[img width=310 class="centerme" [https://i.imgur.com/Vj8IDgT.png]]
В глазах большинства цивилизованных рас горные орки являются очевидными воплощениями чудовищности. Их головы с крупными клыками, свиноподобными носами и глубоко посаженными глазами покоятся на широченных шеях, так что порой сложно понять, есть ли у них шея вовсе. Горные орки часто вплетают мелкие кости в свои косы жестких чёрных волос. Они не отличаются чистоплотностью, а их тела украшены шрамами и боевым раскрасом.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы или Телосложения на ваш выбор увеличивается на 1. |
|^Захват с разбега |^Если вы перемещаетесь с помощью особенности Прилив адреналина, вы можете частью того же бонусного действия попытаться совершить особую атаку [[Захват|Захват]] против существа на вашем пути. При успехе, вы врезаетесь в цель, она схвачена и вы оба падаете ничком. |
|^Прирождённый атлет |^Вы владеете навыком Атлетика. |
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Орёл |Скорость полёта |
| 0 |Козёл |— |
| 1/8 |Кровавый ястреб |Скорость полёта |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Птеранодон |Скорость полёта |
| 1/2 |Гигантский козёл |— |
| 1 |Гигантский орёл |Скорость полёта |
| 1 |Лев |— |
| 2 |Гигантский лось |— |
| 2 |Саблезубый тигр |— |
<<<
I am a healer and a defender, an inspiration to my allies and a fearful visage to my foes.
— Hospitaler Captain, Vaan the Blessed
<<<
Your spiritual path leads you to specialize in the healing arts. You increase the healing you provide to allies as you become a shining beacon of hope on the battlefield. You embody mercy and care, bringing aid to the wounded and cleansing life to those near death—especially when you turn damage against a foe into healing for a friend.
''Hospitalers in the World:'' Hospitalers are a fighting force of necessity, sworn to poverty, obedience, and the defense of those in their care. It is the duty of knights hospitaler to protect people traveling on religious pilgrimages. Over the years, this single duty has expanded to include the construction and administration of hospitals and refugee facilities.
Most hospitalers are paladins, though rangers, fighter/ clerics and even ranger/clerics often join the knights hospitaler as well.
NPC hospitalers often travel in groups, usually with pilgrims on their way to or from a site of particular importance to their faith. Hospitalers may be found running pilgrim hostels, defending temple hospitals, or standing vigil over religious relics and sites. They seldom go on quests or adventures except to rescue endangered pilgrims or to recover relics or sites from heretics and unbelievers.
''Adaptation: ''Hospitalers do battle against suffering and pain wherever they find it. In your campaign, large cities may house masses of beggars who are seen to by itinerant hospitalers. A small village may also house a hospitaler who serves as a doctor of sorts to those who need his attention. An entire force of hospitalers may gather together in order to fight an evil dragon and then remain afterwards to care for the local townsfolk injured during the battle.
<<<
''Code of Conduct ''
Hospitalers take an oath of poverty, obedience, and defense of those in their care. This does not mean that hospitalers live mean, penny-pinching lives. They share their wealth among themselves and give any excess to their order. Obedience is not related to character or social rank, but rather to position assigned within the order, and often changes with the situation. Regardless of their relative ranks, all hospitalers defer to the head of a facility while on the grounds. Hospitalers must be willing to lay down their lives to protect the pilgrims or hospitaler facilities under their care, but should not do so recklessly.
<<<
<<<
''Ex-Hospitalers''
A hospitaler who becomes evil or chaotic, who willfully commits an evil or chaotic act, or who grossly violates the hospitaler code of conduct loses all path features and may not progress down the path of the hospitaler. They regains their features if they atone for their violations.
<<<
---
!!Госпитальер
| !Ранг |!Умения |
| !1 |Hospitaler's Blessing, Warding Blow |
| !2 |Healing Touch, Lesser Restoration |
| !3 |Battlefield Triage, Healing Font |
| !4 |Hospitaler's Inspiration, Greater Restoration, Hospitaler's Care, Life-Giving Judgment |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое, кроме злого и хаотичного.
* ''Владение навыками.'' Медицина, Религия.
* ''Заклинания.'' Способность сотворять хотя бы одно заклинание 1 уровня или выше из списков заклинаний жреца и паладина.
---
!!Ранг 1
!!!Hospitaler's Blessing
When an enemy that you currently have marked makes an attack roll against one of your allies that does not include you as a target, whether the attack hits or misses, that ally regains hit points equal to your Hospitaler rank + your Wisdom modifier.
This feature has no effect on undead or constructs.
!!!Warding Blow
<<<
You strike a foe you have challenged, bringing hope and encouragement to nearby allies.
<<<
//Rank 1 Prayer (Recharges on a short or long rest)//
When you hit a creature marked by you with a melee attack using a weapon, the target takes an extra 1d10 damage, and each creature of your choice within 25 feet of you can make a saving throw against one effect that a save can end.
<<<
''Marking''
The marks referenced here refers to the combat variant of the same name from the Dungeon Master's Guide. If you don't want to use this combat variant, other options could include using a spell like hunter's mark, or a class feature like vow of emnity.
<<<
---
!!Ранг 2
!!!Healing Touch
<<<
Your blessed touch can heal wounds.
<<<
You have a pool of healing power that replenishes when you take a long rest. With that pool, you can restore a total number of hit points equal to your hospitaler rank x your Charisma modifier.
As an action, you can touch a creature and draw power from that pool to restore a number of hit points to that creature, up to the maximum amount remaining in your pool.
This feature has no effect on undead or constructs.
!!!Lesser Restoration
You learn //lesser restoration// and can cast it once without spending a spell slot or using material components. Once you cast the spell in this way, you must finish a short or long rest before doing so again.
---
!!Ранг 3
!!!Battlefield Triage
<<<
You are trained to provide support when your magic is drained.
<<<
When you use a healer's kit to stabilize a dying creature, that creature also regains 1d4 hit point.
!!!Healing Font
<<<
A short prayer imbues your weapons with healing power, so that whenever it strikes an enemy it heals an ally.
<<<
//Rank 3 Prayer (Recharges on a long rest)//
As a bonus action, you imbue your attacks with healing power for 1 minute. Until the effect ends, once per turn when you hit an enemy with a weapon attack, you heal an ally. Choose one ally you can see within 50 feet of you. That ally regains 2d8 hit points.
This prayer has no effect on undead or constructs.
You must concentrate on this prayer as if concentrating on a spell.
---
!!Ранг 4
!!!Hospitaler's Inspiration
When you spend an inspiration to gain advantage on an attack roll, choose any number of creatures within 25 feet of you. Each target who can see you regains hit points equal to 1d10 + your Charisma modifier.
This feature has no effect on undead or constructs.
!!!Greater Restoration
You learn //greater restoration// and can cast it once without spending a spell slot or using material components. Once you cast the spell in this way, you must finish a long rest before doing so again.
!!!Hospitaler's Care
<<<
Your mere presence makes your healing magic more effective.
<<<
Whenever you use a spell of 1st level (or a prayer of rank 1) or higher to restore hit points to a creature, the creature regains additional hit points equal to your Charisma modifier.
!!!Life-Giving Judgment
<<<
You imbue your weapon with radiant power, and as you strike at a foe the power of the attack heals an ally.
<<<
//Rank 5 Prayer (Recharges on a long rest)//
When you hit a creature with a melee attack using a weapon, the target takes an extra 7d10 radiant damage, and you can choose one allied creature you can see within 50 feet of you. The allied creature can spend a hit die to regain hit points plus an additional 1d12 hit points.
This feature has no effect on undead or constructs.
Изучая и осваивая силы, которые притягивают или отталкивают материи, ученики магической традиции Гравитургии учатся и дальше искривлять пространство и манипулировать могущественной энергией гравитации в свою пользу и в ущерб своим неприятелям.
---
!!! [img[2.png]] Расширенный список заклинаний
Ваше знание дюнамантии позволяет вам при изучении заклинаний волшебника выбирать из более широкого списка. В ваш список заклинаний волшебника добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !0 |//иссушающий укол// |
| !1 |//увеличение гравитации// |
| !2 |//благосклонность фортуны//, //наручный карман//, //недвижимый объект// |
| !3 |//гравитационная волна// |
| !4 |//гравитационная воронка// |
| !6 |//гравитационный разлом// |
| !7 |//связь сущностей// |
| !8 |//тёмная звезда// |
| !9 |//пожирающий вакуум// |
//УЗ - Уровень заклинания//
---
!!! [img[2.png]] Управление плотностью
Вы можете действием магическим образом изменить вес одного объекта или существа, которого вы можете видеть в пределах 6 м от вас. Объект или существо должно быть Большого или меньше размера. Вес цели уменьшается или увеличивается в 2 раза на 1 минуту или до тех пор, пока ваша концентрация не закончится (как если бы вы концентрировались на заклинании).
В то время как вес существа уменьшается вдвое, его скорость увеличивается на 2 м, расстояние прыжка этого существа увеличивается вдвое, и оно совершает проверки Силы и спасброски Силы с помехой.
В то время как вес существа увеличивается вдвое, его скорость уменьшается на 2 м, и оно совершает проверки Силы и спасброски Силы с преимуществом.
Достигнув 10 уровня в этом классе, вы можете выбрать целью объект или существо Огромного или меньше размера.
---
!!! [img[6.png]] Гравитационный колодец
<<<
Вы научились управлять гравитацией вокруг живого существа.
<<<
Каждый раз, когда вы сотворяете заклинание на существо, вы можете попытаться переместить цель на 1 м в незанятое пространство в любом направлении по вашему выбору. Цель перемещается, если согласна, если вы попали по цели атакой заклинанием или цель провалила спасбросок.
---
!!! [img[10.png]] Агрессивное притяжение
Когда другое видимое вами существо в пределах 12 м от вас, попадает атакой оружием, вы можете реакцией увеличить скорость удара, в результате чего цель этой атаки получает дополнительно 1к10 урона.
Кроме того, если существо в пределах 12 м от вас получает урон от падения, вы можете реакцией увеличить урон от падения на 2к10.
Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[14.png]] Горизонт событий
Вы можете действием магическим образом начать излучать мощное поле гравитационной энергии, которое воздействует на других существ в течение 1 минуты, либо пока вы не потеряете концентрацию (как если бы концентрировались на заклинании).
В течение этого времени, когда существо, враждебное вам, начинает свой ход в пределах 6 м от вас, оно должно совершить спасбросок Силы против Сл спасброска ваших заклинаний. При провале оно получает 2к10 урона силовым полем, а его скорость уменьшается до 0 до начала его следующего хода. При успехе оно получает вдвое меньше урона, но 1 фут перемещения для этого существа будет стоить 2 фута перемещения.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 3 уровня или выше на повторное использование этого умения.
Значение грузоподъёмности показывает, какой максимальный вес (в кг) вы можете переносить на себе, и напрямую зависит от вашего значения Силы. Для Средних существ грузоподъёмность = Сила x10. Для существ других размерных категорий грузоподъёмность увеличивается/уменьшается в 2 раза за каждую размерную категорию больше/меньше Средней.
Вы можете толкать, тянуть и отрывать от земли вес в кг, вдвое превышающий вашу грузоподъёмность. Если вы толкаете или тянете вес, превышающий грузоподъёмность, ваша скорость падает до 1 м.
Если вы несёте вес, превышающий ½ вашей грузоподъёмности, вы становитесь ''нагруженным'', что означает, что ваша скорость уменьшается на 2 м.
Если вы несёте вес, превышающий ¾ вашей грузоподъемности, вы становитесь ''сильно нагруженным'', что означает, что ваша скорость уменьшается ещё на 2 м, и вы совершаете с помехой проверки характеристик, броски атаки и спасброски, использующие Силу, Ловкость или Телосложение.
Вещи, надетые на персонажа, весят в два раза меньше для расчета нагрузки.
У большинства обычных народов есть одна общая черта: они проживают свою жизнь, никогда не путешествуя более чем на несколько миль от места, где они родились.
Вы не один из таких людей.
Вы родом из места столь отдаленного, что мало кто из простого люда знает, что оно вообще существует, и вполне возможно, что даже если некоторые люди, которых вы встретите, и слышали о вашей родине, то знают они лишь название и несколько спорных слухов. Вы пришли в эту часть мира по собственным причинам, которыми вы могли захотеть или не захотеть поделиться с другими.
Хотя вы, несомненно, найдете некоторые обычаи этих земель странными и сбивающими с толку, вы также можете быть уверены в том, что некоторые вещи, которые местные люди воспринимают, как должное, будут для вас невиданными чудесами. К тому же, к добру это или к худу, но куда бы вы ни отправились, вы - диковина, представляющая интерес для окружающих.
* ''Владение навыками:'' Внимательность, Проницательность
* ''Владение инструментами:'' Один [[музыкальный инструмент|Музыкальные инструменты]] или [[игровой набор|Игровой набор]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Комплект дорожной одежды, музыкальный инструмент или игровой набор, которым вы владеете, схематичная карта вашей родины, небольшое ювелирное украшение стоимостью 10 см, исполненное в стиле вашей родины, и кошель с 25 см
!!!Зачем вы здесь?
Далекий путешественник мог отправиться в путешествие по одной из многих причин, и отъезд с его или её родины мог быть добровольным или вынужденным. Чтобы определить, почему вы так далеко от дома, совершите бросок по таблице ниже или выберите один из предложенных вариантов.
| !к6 |!Причина | !к6 |!Причина |
| 1 |Беглец | 4 |Турист |
| 2 |Изгой | 5 |Скиталец |
| 3 |Паломник | 6 |Эмиссар |
!!!Умение: Притягивающий взгляды
Ваш акцент, манеры, обороты речи и, возможно, даже ваша внешность - все это выдаёт в вас иноземца. Куда бы вы ни пошли, любопытные взгляды устремлены в вашу сторону, что может быть неприятно, но вы также вызываете дружеский интерес ученых и других людей, которых заинтриговали далекие страны, не говоря уже о простых людях, которые жаждут услышать истории о вашей родине.
Вы можете пользоваться этим вниманием для получения доступа к людям и местам, которого в противном случае у вас не было бы, для вас и ваших попутчиков. Благородным лордам, ученым и зажиточным купцам, может быть интересно услышать о вашей далекой родине и её народе.
!!!Персонализация
| !к6 |!Черта характера |
| 1 |Мои представления о личном пространстве расходятся с таковыми окружающих. Нечаянно я вторгаюсь в личное пространство других, или, наоборот, реагирую на вторжение в моё собственное, что происходит из-за разницы обычаев. |
| 2 |Мои представления о том, что является едой, а что нет, расходятся с таковыми окружающих. Я нахожу трапезные традиции окружающих восхитительными, странными или возмутительными. |
| 3 |У меня строгий кодекс чести или чувство приличия, которые не легко понять окружающим. |
| 4 |Я выражаю привязанность или презрение не свойственным для окружающих образом. |
| 5 |Я выражаю почтение моим божествам, способами, которые кажутся чужими в этих землях. |
| 6 |Я начинаю или оканчиваю свой день традиционными ритуалами, которые незнакомы окружающим. |
| !к6 |!Идеал |
| 1 |''Открытость.'' Мне есть чему поучиться у добрых людей, которых я встречаю на своем пути. |
| 2 |''Сдержанность.'' Будучи новичком в этих странных землях, я веду себя осторожно и уважительно. |
| 3 |''Приключения. ''Я далеко от дома, и все это необычно и восхитительно! |
| 4 |''Хитрость. ''Хотя я могу не знать их путей, они не знают и моих, что может быть мне на руку. |
| 5 |''Любознательность.'' Все вокруг ново для меня, но я хочу учиться. |
| 6 |''Подозрительность.'' Я должен быть осторожен, потому что здесь у меня нет возможности отличить друга от врага. |
| !к6 |!Привязанность |
| 1 |Пока у меня есть этот талисман с моей родины, я могу столкнуться с любыми невзгодами в чужой стране. |
| 2 |Боги моего народа - утешение для меня вдали дома. |
| 3 |У меня нет большей цели, чем служение своему народу.|
| 4 |Моя свобода - моё самое драгоценное достояние. Я больше никому не позволю забрать её у меня. |
| 5 |Я очарован красотой и чудесами этой новой земли. |
| 6 |Хотя у меня не было выбора, я сожалею о том, что мне пришлось оставить своих любимых. Я надеюсь однажды увидеть их снова. |
| !к6 |!Слабость |
| 1 |Я тайно (или не очень) убежден в превосходстве моей собственной культуры над культурой этой чужой страны. |
| 2 |Я делаю вид, что не понимаю местного языка, чтобы избежать нежелательного общения. |
| 3 |У меня слабость к новым ощущениям и прочим искушениям этой земли. |
| 4 |Мне не нравятся некоторые действия и мотивы людей в этой стране, потому что эти люди отличаются от меня. |
| 5 |Я считаю приверженцев других богов обманутыми невинными в лучшем случае или невежественными глупцами в худшем случае. |
| 6 |Я питаю слабость к экзотической красоте жителей этих земель. |
При сотворении заклинания с дистанцией 1 м и более, вы можете потратить 1 очко чародейства, чтобы удвоить его дистанцию.
При совторении заклинания с дистанцией «касание», вы можете потратить 1 очко чародейства, чтобы увеличить его дистанцию до 6 м.
[img width=450 class="centerme" [https://i.imgur.com/eVmoUyq.jpg]]
<<tabs "[tag[Дампир - описание]]" "" "$:/state/tab1">>
Вы можете сотворить заклинание основным действием и другое заклинание бонусным действием за один ход, если одно из них не выше 2 уровня.
Данное правило никак не влияет на время сотворения заклинания. Вы все еще не можете сотворить два заклинания со временем сотворения “одно действие” в один и тот же ход (если не находитесь под эффектом, дающим вам дополнительное действие).
[img [https://i.imgur.com/QtMrJaj.png]]
<<tabs "[tag[Дварф - описание]]" "Описание дварфов" "$:/state/tab1">>
<<<
The wrath of Hell can't move me, but I can hammer you into place!
— Defender Korthack
<<<
Your people defied the titans and giants. Unity has sustained them, and tenaciousness has upheld them; traditions preserving these values serve them well. They stand unmoved and unconquered, like the mountains, against orcs and goblins and dragons.
Dwarf soldiers are unmatched in their fighting prowess and loyalty to one another. War stories hold that a single dwarf foot soldier is a match of any two warriors of another race and the same skill. Two such soldiers are worth five similarly skilled enemies. When the enemy forces are composed of little more than savages, dwarven armies break them like stone channels water.
All the institutions of dwarven society have solders loyal to the cause. Doughty fighters serve king or lord, guild or business, deity or church, or a simple creed. A few serve the almighty coin, selling their time and axes for wealth. Time-honored fighting techniques teach a dwarf warrior to use his or her racial abilities to the fullest and to use fine weapons and heavy armor. When the dogs of war are loosed, dwarf soldiers hold the line.
You are a master of dwarven fighting arts, relying on loyal allies as much as your own courage and resilience. Your expertise lies in defensive maneuvers and battle-line tactics. You know how to take advantage on holes in enemy lines. Allies come to rely on you as the center of the squad. They take heart in your steadfastness and your ability to break the defenses of your enemies.
''Dwarven Defenders in the World:'' The defender is a sponsored champion of a dwarven cause, a dwarf aristocrat, a dwarven deity, or the dwarven way of life. As the name might imply, this character is a skilled combatant trained in the arts of defense. A line of dwarven defenders is a far better defense than a 10-foot-thick wall of stone, and much more dangerous.
Most dwarven defenders are fighters, paladins, rangers, or clerics, although barbarians, druids, sorcerers, warlocks, and wizards can certainly all benefit from the defensive capabilities of this prestige path. Rogues, bards, and monks usually depend too heavily on mobility to use the abilities of the dwarven defender class to their fullest.
NPC dwarven defenders are usually soldiers in a dwarven citadel, segregated into their own units separate from regular warriors or fighters. Occasionally a lone, wandering dwarven defender can be encountered on some mission, although thye usually guard their words so closely that it’s difficult to learn what their quest actually entails.
---
!!Дварфский защитник
| !Ранг |!Умения |
| !1 |Stalwart Defense, Press Forward |
| !2 |Martial Mettle, Uncanny Dodge |
| !3 |Fighting Style, Forge Fire Heart |
| !4 |Defensive Inspiration, Pain Reduction, Roots of the Earth, Keystone Collapse |
---
!!!Предварительные условия:
* ''Расы.'' Дварф или полудварф.
* ''Мировоззрение.'' Любое законное.
* ''Умение класса.'' Дополнительная атака.
---
!!Ранг 1
!!!Stalwart Defense
<<<
You never fight harder than when your comrades are at your side.
<<<
Whenever you are within 5 feet of at least one ally, you and your allies within 5 feet of you gain a +1 bonus to AC, and all allies within 5 feet of you can reduce the distance of any forced movement by 5 feet.
!!!Press Forward
<<<
Knocking your enemies back, you step into the gap.
<<<
//Rank 1 Exploit (Recharges on a short or long rest) //
As an action, make a melee attack using a weapon against any number of creatures you can see within 5 feet of you, with a separate attack roll for each target. On a hit, a target suffers the attack's normal effects, and you can push the target up to 5 feet. If you hit at least one creature with this exploit, you also gain the benefits of the disengage action.
If you're wielding an axe, a hammer, or a pick, your attack deals an extra 1d6 damage on a hit.
---
!!Ранг 2
!!!Martial Mettle
<<<
Your body becomes as hearty as the mountain is strong.
<<<
When you are subjected to an effect that allows you to make a Constitution saving throw to take only half damage, you instead take no damage if you succeed on the saving throw, and only half damage if you fail.
!!!Uncanny Dodge
<<<
You gain the extraordinary ability to react to danger before your senses would normally allow you to be aware of it.
<<<
When an attacker that you can see hits you with an attack, you can use your reaction to halve the attack's damage against you.
---
!!Ранг 3
!!!Fighting Style
<<<
You adopt a particular style of fighting as your specialty.
<<<
Choose one of the options from the Fighter class feature of the same name. You can't take a Fighting Style option more than once, even if you later get to choose again.
!!!Forge Fire Heart
<<<
By looking to your own defense, you instill adjacent allies with mental fortitude.
<<<
//Rank 3 Exploit (Recharges on a short or long rest) //
As a bonus action, until the end of your next turn, you gain a +4 bonus to AC and saving throws, and your allies within 5 feet of you gain a +4 bonus on Wisdom saving throws and Charisma saving throws.
---
!!Ранг 4
!!!Defensive Inspiration
<<<
No matter the odds, you always seem to find a way to hold the line.
<<<
Whenever you spend an inspiration to gain advantage on an attack roll, you also gain a +5 bonus to AC, Strength saving throws, and Constitution saving throws until the end of your next turn.
!!!Pain Reduction
<<<
You gain the ability to shrug off some damage from each blow.
<<<
You reduce the damage you take from nonmagical bludgeoning, piercing, and slashing damage by 3 (this stacks with the heavy armor master feat and similar effects).
!!!Roots of the Earth
<<<
You become as resilient as the stone that your ancestors were created from.
<<<
You can reduce the distance of forced movement used on you by up to 25 feet and you cannot be knocked prone.
!!!Keystone Collapse
<<<
Your strike hammers your foe and causes them to flail about, toppling nearby adversaries in the confusion.
<<<
//Rank 5 Exploit (Recharges on a long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 4d10 damage, and you can push any number of creatures within 5 feet of you up to 5 feet and knock them prone.
If you made the triggering attack with an axe, a hammer, or a pick, your attack deals an extra 7d10 damage instead of 4d10.
Если вы перемещаетесь, вы можете тащить или нести [[схваченное|Схваченный]] существо вместе с собой, но ваша скорость уменьшается вдвое, если только существо не меньше вас как минимум на две категории.
При сотворении заклинания, целью которого является только одно существо, с дистанцией «касание» или 1 м и более, вы можете потратить очки чародейства в количестве равном уровню заклинания (1 для заговоров), чтобы выбрать целью второе существо в пределах дистанции этого заклинания.
Сотворяемое заклинание не может иметь возможности быть нацеленным на более чем одно существо на текущем уровне заклинания. Например, //волшебная стрела// и //палящий луч// не подходят для этого варианта Метамагии, а //луч холода// и //цветной шарик// - подходят.
Вы живёте в достатке и комфорте. Вы вращаетесь среди самых влиятельных членов общества. У вас превосходное жилище, возможно, особняк в лучшей части города или несколько комнат в отличной гостинице. Вы трапезничаете в лучших ресторанах, одеваетесь у модных портных, и у вас есть слуги на все случаи жизни. Вы получаете приглашения на сборы богатых и влиятельных, и вечерами собираетесь в компании политиков, глав гильдий, верховных жрецов и дворян. Вам угрожает ложь и предательство. Чем вы богаче, тем больше шанс, что вас затянут в политические интриги.
Если вы в свой ход совершаете действие, это может быть одно из описанных ниже действий, действие, дарованное классом или особым умением, или импровизированное действие.
Бонусные действия отмечены звёздочкой ''*''.
Если вы описываете действие, не упомянутое в правилах, Мастер сообщает, возможно ли это действие, и какие проверки нужно совершить для определения успешности.
<<tabs "[tag[Действия в бою]nsort[]]" "Атака" "$:/state/tab1" "tc-vertical">>
Термин "детали" используется для обозначения шестерёнок, проводов, пружин, заводных элементов, винтов, гвоздей и прочего. Детали могут быть либо найдены, либо извлечены, либо выкованы из металлических обрезков (или даже прямо из слитков кузнецом). Точная природа каждого предмета, входящего в эту группу, остается абстрактной.
Существуют также именные компоненты для более знаковых предметов снаряжения - например, ложа арбалета. Стоимость этих предметов можно найти в таблице обычных компонентов, и, как правило, она незначительна.
---
!!!Извлечение деталей
Другим основным способом получения деталей является их извлечение. Что можно извлечь, определяет Мастер, но как правило, обычные предметы приносят детали, необычные или дорогие предметы могут принести изысканные детали, а эзотерические детали можно найти только из эзотерических источников по усмотрению Мастера. Инструменты, транспортные средства и комплексные предметы обычно приносят 1к4 металлических обрезков и 1к4 деталей для Маленького или меньшего предмета, 2к6 металлических обрезков для предмета Среднего размера, 3к8 металлических обрезков для предмета Большого размера, и еще больше для больших предметов, хотя они могут приносить более редкие детали, но в меньшем количестве.
[img class="centerme" [https://i.imgur.com/eYj7eUD.png]]
<<tabs "[tag[Дженази - описание]]" "Описание дженази" "$:/state/tab1">>
[img width=270 class="centerme" [https://i.imgur.com/xkGSiaU.png]]
Плеск волн, брызги морской пены на ветру, океанские глубины — все эти вещи взывают к вашему сердцу. Вы странствуете свободно и гордитесь своей независимостью, хотя некоторые считают вас эгоистом.
Большинство дженази воды выглядит так, будто только что закончили купаться, с бисером влаги на волосах и коже. Они пахнут свежим дождём и чистой водой. Чаще всего их кожа синяя или зелёная, у большинства из них огромные глаза иссиня-чёрного цвета. Волосы дженази воды могут свободно раскачиваться и колебаться, как будто находятся под водой. Голос некоторых из них напоминает песнь кита или журчащий поток.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Всплеск воды |^Когда вы находитесь в воде или под сильным дождём, вы можете использовать действие Рывок бонусным действием. Сразу после использования этой особенности, вы можете выбрать существо в пределах 2 м от вас. Это существо также может совершить Рывок бонусным действием до конца своего следующего хода. |
|^Призыв волны |^Вам известен заговор //формирование воды//. При достижении 3 уровня, вы можете один раз сотворить заклинание //сотворение или уничтожение воды// При достижении 5 уровня, вы можете один раз сотворить заклинание //приливная волна//. Вы восстанавливаете способность накладывать это заклинание с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для сотворения этих заклинаний является Харизма. |
|^Сопротивление кислоте |^У вас есть сопротивление к урону кислотой. |
|^Тело амфибии |^Ваша стихийная кровь позволяет вам свободно перемещаться в воде. Вы можете дышать и на суше, и под водой, а ваша скорость плавания равна вашей скорости ходьбы. |
[img width=310 class="centerme" [https://i.imgur.com/QavdgBi.png]]
Будучи воздушным дженази, вы произошли от джинна. Как изменчива погода, так и ваше настроение очень быстро переходит от спокойного к буйному и жестокому, но эти бури не длятся долго.
Кожа, волосы и глаза дженази воздуха обычно светло-голубого цвета. Обычно их сопровождает слабый, но постоянный ветерок, взъерошивающий их волосы и колышущий одежду. Некоторые из дженази воздуха разговаривают хриплым голосом со слабым эхом. У некоторых на коже есть странные узоры, а на голове могут расти кристаллы.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Бесконечное дыхание |^Пока вы дееспособны, вы можете задерживать дыхание на неограниченное время. |
|^Объятия ветра |^Ваша базовая скорость ходьбы увеличивается до 7 метров. Дальность ваших прыжков удвоена. |
|^Порывистый ветер |^Вам известен заговор //шквал//. При достижении 3 уровня, вы можете один раз сотворить заклинание //падение пёрышком//. При достижении 5 уровня, вы можете один раз сотворить заклинание //защитный ветер//. Для сотворения этих заклинаний вам не требуются материальные компоненты. Вы восстанавливаете способность сотворять это заклинание с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для сотворения этих заклинаний является Харизма. |
|^Сопротивление электричеству |^У вас есть сопротивление к урону электричеством. |
[img width=210 class="centerme" [https://i.imgur.com/tkEvh7j.png]]
Будучи дженази земли, вы произошли от жестокого и жадного дао, хотя вам не обязательно быть злым. В некоторой мере вы унаследовали контроль над землёй, вас радует её прочность и твёрдость. Вы склонны избегать поспешных решений, делая длительную паузу, чтобы рассмотреть все варианты.
Стихия земли проявляется в разных дженази по разному. У некоторых с тела постоянно сыплются частички пыли, а к их одежде так и липнет грязь, как бы часто они её не чистили. Другие же блестящие и отполированные, как драгоценные камни, с тёмно-коричневой или чёрной кожей и глазами, сверкающими как агаты. Дженази земли также могут иметь гладкую металлическую плоть, тусклую кожу с пятнами ржавчины, галечно-грубую шкуру, а могут быть покрыты крошечными вкраплениями кристаллов. Самое невероятное — это трещины в их плоти, из которых исходит слабое свечение.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 1. |
|^Движение земли |^Вам известен заговор //лепка земли//. При достижении 5 уровня, вы можете один раз сотворить заклинание //бесследное передвижение//, без необходимости в материальном компоненте. Вы восстанавливаете способность сотворять это заклинание с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для сотворения этих заклинаний является Харизма. |
|^Каменная шкура |^Ваша кожа тверда как камень. Пока вы не носите доспехов, ваш КД равен 13 + ваш мод. Ловкости. Вы можете использовать КД своей каменной шкуры, если доспехи, которые вы носите, дают вам более низкий КД. При использовании каменной шкуры, эффект от щита применяется как обычно. Кроме того, вы имунны к состоянию [[Окаменевший]]. |
|^Твёрдая поступь |^Вы совершаете проверки характеристик и спасброски Силы против эффектов, нацеленных на то, чтобы сбить вас с ног, с преимуществом. |
|^Туннелепроходчик |^Вы можете, потратив действие, получить скорость копания 3 м до начала своего следующего хода. С помощью этой скорости вы можете перемещаться сквозь немагическую и необработанную землю или камень. Используяю эту скорость, вы можете оставлять за собой туннель, достаточный для беспрепятственного перемещения Средних или меньших существ. |
[img width=250 class="centerme" [https://i.imgur.com/zTrJera.png]]
Будучи огненным дженази, вы унаследовали изменчивое настроение и острый ум ифрита. Вы нетерпеливы и делаете поспешные выводы. Вместо того чтобы скрывать свой необычный вид, вы демонстрируете его.
Почти все дженази огня лихорадочно горячи, как будто внутри них горит огонь, а впечатление усиливает их пламенно-красного, угольно-чёрного или пепельного цвета кожа. Головы тех, что больше похожи на людей, покрыты огненно-рыжими волосами, которые извиваются при сильных эмоциях, но самые экзотичные те, у которых на головах танцует настоящее пламя. Голос огненного дженази может звучать как треск костра, а их глаза вспыхивают от злости. От некоторых из них исходит слабый запах серы.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Горящее прибежище |^Пока вы дееспособны, выбранные вами существа в пределах 2 м от вас (включая вас) совершают спасброски против эффектов чрезвычайной жары с преимуществом. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. Ваша связь со Стихийным Планом Огня сделала ваше ночное зрение особенным: всё, что находится в темноте, для вас выглядит как оттенки красного цвета. |
|^Обжигающий взгляд |^Действием вы можете взглядом поджечь горючий предмет в пределах 6 м от вас, который никто не несёт и не носит. |
|^Пылающее сердце |^Вам известен заговор //сотворение пламени//. При достижении 3 уровня, вы можете один раз сотворить заклинание //огненные ладони//. При достижении 5 уровня, вы можете один раз сотворить заклинание //раскалённый металл//, без необходимости в материальном компоненте. Вы восстанавливаете способность сотворять это заклинание с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для сотворения этих заклинаний является Харизма. |
|^Сопротивление огню |^У вас есть сопротивление к урону огнём. |
С помощью жеста, трюка или отвлекающих слов вы можете заставить существ обратить внимание на что-то другое.
Совершите действием проверку Харизмы (Обман). Мастер сравнивает результат вашей проверки Харизмы (Обман) с пассивным значением Мудрости (Проницательность) существ, которых вы пытаетесь отвлечь. При успехе вы становитесь [[скрытым|Скрытый]] от этих существ до конца этого хода. При провале существа понимают, что вы пытаетесь отвлечь их.
Независимо результата проверки, существа, которых вы пытались отвлечь, получают бонус +5 к пассивному значению Мудрости (Проницательность) против ваших попыток создать диверсию на 1 минуту.
Ваша магия исходит от диких сил хаоса, лежащих в основе мироздания. Вы, возможно, подверглись воздействию чистой магии в той или иной форме. Возможно, она просочилась через портал, ведущий в Лимбо, Стихийные Планы или таинственный Дальний Предел. Может быть, вы были благословлены могущественной феей или отмечены демоном. Или ваша магия может быть случайностью вашего рождения, без очевидной причины. Вне зависимости от её происхождения, хаотическая магия бурлит внутри вас, готовая вырваться наружу.
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Воплощения или Преобразования.
| !УЧ |!Заклинания |
| !1 |//власть над огнём//, //огонь фей//, //снаряд хаоса// |
| !3 |//корона безумия//, //раскалённый металл// |
| !5 |//мерцание//, //призыв низших демонов// |
| !7 |//Отилюков упругий шар//, //смятение// |
| !9 |//оживление вещей//, //создание прохода// |
//УЧ - Уровень чародея//
---
!!! [img[1.png]] Всплеск дикой магии
<<<
Ваши заклинания могут высвобождать всплески дикой магии.
<<<
Каждый раз, когда вы сотворяете заклинание 1 уровня или выше, совершите бросок к20. Если выпадает «1», совершите бросок по таблице «Всплеск дикой магии» для создания случайного магического эффекта. Каждый раз, когда выпадает другое значение, уменьшите кость, используемую для определения Всплеска дикой магии, на один шаг, в соответствии со следующей прогрессией:
```
к20 -> к12 -> к10 -> к8 -> к6 -> к4
```
Кость снова становится к20 каждый раз, когда вы совершаете бросок по таблице «Всплеск дикой магии», либо завершаете продолжительный отдых.
Всплеск может возникать только один раз в ход.
Если эффект всплеска является заклинанием, он слишком непредсказуем, чтобы его можно было модифицировать метамагией. Если это заклинание требует концентрации, то в данном случае она не требуется. Эффект заклинания действует на время его максимальной длительности.
---
!!! [img[1.png]] Течения хаоса
<<<
Вы научились манипулировать силами случая и хаоса в свою пользу.
<<<
Когда вы совершаете атаку, спасбросок или проверку характеристики, вы можете сделать это с преимуществом.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых, либо пока не совершите бросок по таблице «Всплеск дикой магии».
---
!!! [img[6.png]] Подчинение удачи
<<<
Вы способны преломлять судьбу с помощью дикой магии.
<<<
Когда другое видимое вами существо совершает бросок атаки, спасбросок или проверку характеристик, вы можете реакцией потратить 2 очка чародейства и совершить бросок к4. Полученный результат станет бонусом или штрафом (на ваш выбор) к броску существа. Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
---
!!! [img[14.png]] Управляемый хаос
<<<
Вы получаете толику контроля над всплесками своей дикой магии.
<<<
Каждый раз, когда вы совершаете бросок по таблице «Всплеск дикой магии», вы можете совершить два броска и использовать любой из двух результатов.
---
!!! [img[18.png]] Разрушительные заклинания
<<<
Разрушительная энергия ваших заклинаний увеличивается.
<<<
Когда вы совершаете бросок урона от заклинания, и на одной из костей выпадает максимально возможное значение, выберите одну из этих костей и бросьте её ещё раз. Добавьте выпавшее значение к урону. Вы можете использовать это умение только один раз в ход.
---
!!!Всплеск дикой магии
| !_к100_ |!Эффект |
| 01-02 |Совершайте бросок по этой таблице в начале каждого своего хода в течение следующей минуты, игнорируя результат «01–02». |
| 03-04 |В течение минуты вы можете видеть невидимых существ, если они находятся в прямой видимости от вас. |
| 05-06 |В свободном пространстве в пределах 1 м от вас появляется модрон, выбранный и контролируемый Мастером. Модрон исчезает через 1 минуту. |
| 07-08 |Вы сотворяете //огненный шар// как заклинание 3 уровня с центром на себе. |
| 09-10 |Вы сотворяете //волшебную стрелу// как заклинание 5 уровня. |
| 11-12 |Совершите бросок 3к10. Ваш рост изменяется на количество сантиметров, равное результату броска. Если бросок нечётный, вы уменьшаетесь. Если бросок чётный, вы растёте. |
| 13-14 |Вы сотворяете заклинание //смятение// с центром на себе. |
| 15-16 |В течение следующей минуты вы восстанавливаете по 5 хитов в начале каждого своего хода. |
| 17-18 |У вас вырастает длинная борода из перьев, которая остаётся, пока вы не чихнёте, и в этот момент перья разлетаются во все стороны. |
| 19-20 |Вы сотворяете заклинание //скольжение// с центром на себе. |
| 21-22 |Существа получают помеху к спасброскам от следующего заклинания, сотворённого вами в течение следующей минуты и требующего совершить спасбросок. |
| 23-24 |Ваша кожа окрашивается в ярко-синий цвет. Заклинание //снятие проклятья// оканчивает этот эффект. |
| 25-26 |На вашем лбу на минуту появляется глаз. В течение этого времени, вы совершаете с преимуществом проверки Мудрость (Внимательность), полагающиеся на зрение. |
| 27-28 |В течение следующей минуты все ваши заклинания со временем сотворения «1 действие» могут быть сотворены бонусным действием. |
| 29-30 |Вы телепортируетесь на расстояние до 12 м в видимое вами свободное пространство по вашему выбору. |
| 31-32 |Вы перемещаетесь на Астральный План до конца своего следующего хода, после чего вы вернётесь в пространство, ранее занимаемое, или ближайшее свободное пространство, если это пространство занято. |
| 33-34 |Урон от следующего заклинания, наносящего урон и сотворённого вами в течение следующей минуты, будет максимальным. |
| 35-36 |Совершите бросок к10. Ваш возраст изменяется на число лет, равное броску. Если бросок нечётный, вы молодеете (до минимального возраста 1 год). Если бросок чётный, вы стареете. |
| 37-38 |В пределах 12 м от вас в свободном пространстве появляются 1к6 фламфов, контролируемых Мастером, и испуганных вами. Они исчезают через 1 минуту. |
| 39-40 |Вы восстанавливаете 2к10 хитов. |
| 41-42 |Вы превращаетесь в растение в горшке до начала своего следующего хода. Будучи растением, вы недееспособны и уязвимы для всех видов урона. Если ваши хиты опускаются до 0, ваш горшок раскалывается, и вы возвращаетесь в свою форму. |
| 43-44 |В течение следующей минуты вы можете в каждый свой ход бонусным действием телепортироваться на расстояние до 4 м. |
| 45-46 |Вы сотворяете заклинание //левитация// на себя. |
| 47-48 |В пределах 1 м от вас появляется единорог, контролируемый Мастером. Он исчезает через 1 минуту. |
| 49-50 |Вы не можете говорить в течение следующей минуты. Всякий раз, когда вы пытаетесь говорить, из вашего рта вылетают розовые пузырьки. |
| 51-52 |В течение следующей минуты рядом с вами парит призрачный щит, предоставляющий бонус +2 к КД и иммунитет к //волшебной стреле//. |
| 53-54 |Вы получаете иммунитет к воздействию алкоголя на ваш организм в течение следующих 5к6 дней. |
| 55-56 |У вас выпадают все волосы, но отрастают обратно за 24 часа. |
| 57-58 |В течение следующей минуты все легковоспламеняющиеся предметы, не несомые и не носимые другим существом, которых вы касаетесь, загораются. |
| 59-60 |Вы восстанавливаете самую низкоуровневую ячейку заклинания, потраченную вами. |
| 61-62 |В течение следующей минуты вы должны кричать, когда говорите. |
| 63-64 |Вы сотворяете //туманное облако// с центром на себе. |
| 65-66 |До трёх существ на ваш выбор в пределах 6 м от вас получают 4к10 урона электричеством. |
| 67-68 |Вы испуганы ближайшим к вам существом до конца своего следующего хода. |
| 69-70 |Все существа в пределах 6 м от вас становятся невидимыми на 1 минуту. Невидимость прекращается, если существо атакует или сотворяет заклинание. |
| 71-72 |Вы получаете на 1 минуту сопротивление ко всем видам урона. |
| 73-74 |Случайное существо в пределах 12 м от вас становится отравленным на 1к4 часа. |
| 75-76 |Вы в течение минуты излучаете яркий свет в радиусе 6 м. Все существа, оканчивающие ход в пределах 1 м от вас, становятся ослеплёнными до конца своего следующего хода. |
| 77-78 |Вы сотворяете на себя заклинание //превращение//. Если вы проваливаете спасбросок, то на время действия заклинания превращаетесь в овцу. |
| 79-80 |В течение минуты в пределах 2 м от вас в воздухе порхают иллюзорные бабочки и лепестки цветов. |
| 81-82 |Вы можете немедленно совершить одно дополнительное действие. |
| 83-84 |Все существа в пределах 6 м от вас получают 1к10 урона некротической энергией. Вы восстанавливаете хиты, равные сумме нанесённого урона. |
| 85-86 |Вы сотворяете //отражения//. |
| 87-88 |Вы сотворяете //полёт// на случайное существо в пределах 12 м от вас. |
| 89-90 |Вы становитесь невидимым на 1 минуту. При этом другие существа не могут услышать вас. Невидимость оканчивается, если вы атакуете или сотворяете заклинание. |
| 91-92 |Если вы погибнете в течение следующей минуты, то мгновенно вернётесь к жизни, как если бы вас воскресили заклинанием //реинкарнация//. |
| 93-94 |Ваш размер на 1 минуту увеличивается на одну категорию. |
| 95-96 |Вы и все существа в пределах 6 м от вас получаете на 1 минуту уязвимость к колющему урону. |
| 97-98 |В течение следующей минуты вы окружены тихой неземной музыкой. |
| 99-00 |Вы восстанавливаете все потраченные очки чародейства. |
Длиннозубые шифтеры агрессивны и свирепы, но они формируют крепкие узы со своими друзьями. Многие длиннозубые шифтеры обладают собачьими чертами, которые становятся более выраженными во время обращения, но они могут происходить и от тигров, гиен или других хищников.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2, а значение Ловкости увеличивается на 1. |
|^Свирепость |^Вы владеете навыком Запугивание. |
|^Особенность обращения |^Когда вы обращаетесь и бонусным действием в последующие ходы, пока вы обращены, вы можете совершать безоружную атаку своими длинными клыками. Когда вы атакуете ими, вы наносите 1к6 + ваш мод. Силы колющего урона, вместо обычного для безоружной атаки дробящего урона. |
Добытчик обеспечивает путешествующую группу едой и водой. Если добытчик провалится, ваши припасы иссякнут задолго до окончания путешествия. Убедитесь в том, что заготовили достаточно припасов, если в вашей группе нет умелого добытчика.
Если вы взяли на себя роль добытчика, совершите проверку Мудрости (Сл броска установлена в приведенной таблице) в конце дня, чтобы определить сколько еды и воды вы добыли в течении дня. Наличие снаряжения для охоты и рыбалки или владение навыком Выживание позволят вам добавить бонус мастерства к броску.
''Успех''. Вы добыли 2к4 рациона еды или воды (вы можете разделить их по вашему усмотрению).
''Провал''. Вы не смогли ничего найти.
| !Сл |!Местность |
| 5 |Густой и богатый лес; еда и вода повсеместно |
| 10 |Лес; побережье; обилие еды и сичтой воды |
| 15 |Редкий лес или насаждение; добыча еды требует активной охоты, а воду сложнее найти |
| 20 |Сухая открытая равнина; малое количество еды или чистой воды |
| 25 |Пустыня; бесплодная или загрязнённая земля; еда крайне редка, а вода требует очистки |
| 30 |Токсичные или осквернённые мёртвые земли; еда несъедобна, а вода отравлена |
Ваш покровитель дарует вам гримуар, который называется «Книга Теней». Выберите 3 заговора из списков заклинаний любых классов. Пока книга с вами, вы можете сотворять эти заговоры неограниченно. Они не учитываются при подсчёте максимального числа заговоров, которые вы можете знать, и считаются для вас заклинаниями колдуна.
Если вы теряете книгу, вам нужно провести ритуал длительностью в 1 час, чтобы получить новую от своего покровителя. Вы можете провести этот ритуал во время короткого или продолжительного отдыха. Предыдущая книга при этом уничтожается.
Книга обращается в прах при вашей смерти.
Вы можете действием или при броске инициативы создать оружие договора в своей свободной руке. Вы сами выбираете форму этого простого или воинского оружия, не являющегося стрелковым, каждый раз, когда создаёте. Кроме того вы получаете следующие преимущества:
* вы получаете владение этим оружием, пока используете его;
* когда вы атакуете этим оружием, вы можете использовать для бросков атаки и урона свой модификатор Харизмы вместо модификатора Силы или Ловкости;
* это оружие считается магическим при определении преодоления сопротивления и иммунитета к немагическим атакам и урону;
* начиная с 5 уровня колдуна, если вы совершаете действие Атака, вы можете совершить две атаки этим оружием вместо одной.
Оружие договора исчезает, если оно в течении 1 минуты находилось дальше 1 м от вас, если вы используете это умение ещё раз, отзываете оружие (действие не требуется) или умираете.
Вы можете трансформировать одно магическое оружие в своё оружие договора, проведя специальный ритуал, держа это оружие. Ритуал совершается 1 час, и его можно провести во время отдыха. Впоследствии вы можете отозвать оружие, помещая его между измерениями. Оно будет появляться в руке, когда вы будете в дальнейшем создавать оружие договора.
Оружие перестаёт быть оружием договора, когда вы умираете, выполняете часовой ритуал с другим оружием или когда вы исполните ритуал длиной в час для того, чтобы разорвать связь. Оружие материализуется у ваших ног, если в момент разрыва связи оно находилось между измерениями.
Ваш покровитель дарует вам особый амулет - талисман, который может быть полезен вам или кому-то ещё, носящему его. Когда носитель талисмана проваливает проверку характеристик, он может совершить бросок к4 и добавить выпавшее число к результату.
Это умение может быть использовано количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
Если вы теряете талисман, вам нужно провести ритуал длительностью в 1 час, чтобы получить новый от своего покровителя. Вы можете провести этот ритуал во время отдыха. Предыдущий талисман при этом уничтожается.
Талисман обращается в прах при вашей смерти.
Вы узнаёте заклинание //поиск фамильяра// и можете сотворять его как ритуал. Это заклинание не учитывается при подсчёте числа известных вам заклинаний.
Когда вы сотворяете это заклинание, вы можете выбрать одну из обычных форм для вашего фамильяра, либо одну из особых форм: бес, квазит, псевдодракон или спрайт.
Если вы выбрали псевдодракона, он получает возможность использовать следующее действие:
<<<
''Невидимость.'' Псевдодракон магическим образом становится невидимым, пока не атакует, или пока не окончится его концентрация (как при концентрации на заклинании). Все снаряжение, которое псевдодракон несёт или носит, становится невидимым вместе с ним.
<<<
Кроме того, когда вы совершаете действие Атака, вы можете вместо одной своей атаки позволить атаковать один раз фамильяру. При этом он совершает свою атаку реакцией.
Вы неустанно ищете истину. Возможно, вами движет вера в закон и чувство всеобщей справедливости, а может быть, этот самый закон вас подвёл и и вы стремитесь всё исправить. Вы могли стать свидетелем чего-то удивительного или ужасного, и теперь вам необходимо узнать больше об этой скрытой правде. Или может быть, вы детектив по найму, раскрывающий секреты для хорошо оплачиваемых клиентов. В какие бы тайны вы ни были втянуты - в местные преступления или в заговоры, охватывающие всё королевство, вами движет личная потребность отыскивать даже самые неуловимые зацепки и раскрывать то, что другие прячут в тени.
* ''Владение навыками:'' Два на ваш выбор из следующих: Анализ, Внимательность или Проницательность
* ''Владение инструментами:'' [[Воровские инструменты|Воровские инструменты]], [[набор для грима|Набор для грима]]
* ''Экипировка:'' Увеличительное стекло, улика из прошлого дела, комплект одежды исследователя и кошель с 10 см
!!!Путь к тайнам
Ваше первое дело повлияло на типы тайн, которые вас интересуют. Почему это дело было таким важным, личным или травмирующим? На кого оно повлияло, кроме вас? Почему и как вы оказались вовлечены в это дело? Было ли оно раскрыто? Как оно натолкнуло вас на путь расследования других тайн? Совершите бросок или выберите из таблицы ниже, чтобы развить тайну, с которой началась ваша карьера дознавателя.
| !к8 |!Дело |
| 1 |Друг был несправедливо обвинен в убийстве. Вы выследили настоящего убийцу, доказав невиновность своего друга и начав свою карьеру детектива. |
| 2 |Вам сказали, что вы пропали на несколько недель. Когда вас нашли, вы ничего не помнили о своем исчезновении. Теперь вы пытаетесь выяснить, что с вами произошло. |
| 3 |Вы помогли духу обрести покой, найдя его пропавший труп. С тех пор другие призрачные клиенты обращаются к вам, чтобы вы помогли им обрести покой. |
| 4 |Вы узнали, что монстры, терроризирующие ваш дом, были иллюзией, созданной жестоким магом. Маг сбежал, но вы продолжаете раскрывать магические мистификации. |
| 5 |Вас несправедливо обвинили и осудили за преступление. Вам удалось бежать и помочь другим избежать того, что выпало на вашу долю, даже несмотря на преследование со стороны закона. |
| 6 |Вы пережили разрушительное применение магического устройства, которое уничтожило ваш дом. Вас нашли члены секретной организации. Теперь вы работаете с ними, выслеживая опасные сверхъестественные явления и не давая им причинить вред. |
| 7 |Вы обнаружили доказательства заговора, лежащего в основе общества. Вы пытались разоблачить этот таинственный заговор, но вам никто не поверил. Вы до сих пор пытаетесь доказать, что все, что вы знаете, правда. |
| 8 |Вы получили работу в агентстве, которое расследует преступления, которые не могут раскрыть местные правоохранительные органы. Вы часто задаетесь вопросом, что вам дороже - правда или зарплата. |
!!!Умение: Официальный запрос
Вы обладаете опытом получения доступа к людям и местам, чтобы раздобыть нужную вам информацию. Благодаря сочетанию быстрой речи, решительности и официальной документации вы можете получить доступ к месту или человеку, имеющему отношение к расследуемому вами преступлению. Те, кто не участвует в вашем расследовании, не станут препятствовать вам или передадут ваши просьбы. Кроме того, местные правоохранительные органы имеют стойкое мнение о вас, рассматривая вас либо как помеху, либо как одного из своих.
!!!Персонализация
| !к12 |!Черта характера |
| 1 |У меня была встреча, которая, как я считаю, дает мне особое родство со сверхъестественным существом или событием. |
| 2 |Особенная одежда или необычное оружие служат отражением того, кто я есть. |
| 3 |Я никогда не признаю, что я не в своей тарелке. |
| 4 |Я должен знать разгадку каждой тайны. В моем присутствии ни одна дверь не остается незакрытой. |
| 5 |Я позволяю людям недооценивать меня, открывая всю свою компетентность только близким людям.|
| 6 |Я навязчиво стремлюсь собирать трофеи своих путешествий и побед. |
| 7 |Неважно, что весь мир против меня. Я всегда буду делать то, что считаю правильным. |
| 8 |У меня нездоровые интересы и мрачная внешность. |
| 9 |У меня есть личный ритуал, мантра или метод релаксации, который я использую для борьбы со стрессом. |
| 10 |Нет ничего важнее жизни, и я никогда не оставляю никого в опасности. |
| 11 |Я быстро перехожу к экстремальным решениям. Зачем рисковать тем, что меньший вариант не сработает? |
| 12 |Меня легко испугать, но я не трус. |
| !к12 |!Идеал |
| 1 |''Адреналин. ''Я испытал такие странности, что теперь чувствую себя живым только в экстремальных ситуациях. |
| 2 |''Баланс.'' Я стремлюсь противостоять поступкам того, за кого чувствую ответственность. |
| 3 |''Привязанность.'' Я причинил кому-то зло и должен исполнить его волю, чтобы избежать его проклятия. |
| 4 |''Бегство.'' Я верю, что есть что-то за пределами известного мне мира, и мне нужно это найти. |
| 5 |''Наследие.'' Я должен совершить что-то великое, чтобы меня запомнили, а мое время на исходе. |
| 6 |''Заблуждение.'' Я прилагаю все усилия, чтобы другие не узнали о моих недостатках или проступках. |
| 7 |''Одержимость.'' Я живу таким образом настолько долго, что не могу представить себе другого пути. |
| 8 |''Обязательство.'' Я обязан перед своим народом, верой, семьей или учителем продолжать унаследованное дело. |
| 9 |''Обещание.'' Моя жизнь больше не принадлежит мне. Я должен исполнить мечту того, кого уже нет. |
| 10 |''Откровение.'' Мне нужно знать, что лежит за пределами тайн смерти, мира или Тумана. |
| 11 |''Убежище.'' Я знаю, какие силы действуют в мире, и стремлюсь создать островок в стороне от них. |
| 12 |''Истина.'' Истина для меня превыше всего, даже если она никому не приносит пользы. |
| !к12 |!Привязанность |
| 1 |Мне отчаянно нужно вернуться к кому-то или куда-то, но я потерял их в тумане. |
| 2 |Все, что я делаю, служит могущественному хозяину, которого я должен держать в секрете от всех. |
| 3 |Я многим обязан своему исчезнувшему наставнику. Я стремлюсь продолжить их дело, даже когда ищу их самих. |
| 4 |Я видел великую тьму, и я намерен быть светом против нее - светом всех светов. |
| 5 |Кто-то, кого я люблю, стал монстром, убийцей или другой угрозой. Я должен спасти его. |
| 6 |Мир был убежден в ужасной лжи. Я должен открыть правду. |
| 7 |Я сильно скучаю по кому-то и быстро принимаю людей, которые напоминают мне о нем. |
| 8 |Во мне живет великое зло. Я буду бороться с ним и другими пороками мира до тех пор, пока смогу. |
| 9 |Я отчаянно ищу лекарство от недуга или проклятия, либо для кого-то из моих близких, либо для себя. |
| 10 |Духи притягиваются ко мне. Я делаю все возможное, чтобы помочь им обрести покой. |
| 11 |Я использую свой хитрый ум, чтобы разгадать тайны и добиться правосудия для тех, кого постигла несправедливость. |
| 12 |Я потерял близкого человека, но до сих пор вижу его в видениях, повторяющихся снах или в виде духа. |
| !к12 |!Слабость |
| 1 |Я верю, что рок преследует меня и что любого, кто приблизится ко мне, ждет трагический конец. |
| 2 |Я убежден, что что-то преследует меня, появляясь в зеркалах, снах и местах, где никто не мог бы появиться. |
| 3 |Я особенно суеверен и веду жизнь, стараясь избежать невезения, злых духов или тумана. |
| 4 |Я совершил невыразимое зло и сделаю все, чтобы об этом не узнали другие. |
| 5 |Я исключительно доверчив и сразу верю любой истории или легенде. |
| 6 |Я скептик и не верю в силу ритуалов, религии, суеверий или духов. |
| 7 |Я знаю, что мое будущее предопределено и что любой мой поступок приведет к предначертанному пророчеством концу. |
| 8 |Я должен находить лучшее во всех и во всем, даже если это означает отрицание очевидной злобы. |
| 9 |Я видел зло в каком-то месте, например, в лесу, городе или на кладбище, и не хочу туда идти. |
| 10 |Я исключительно осторожен, тщательно планирую и разрабатываю бесчисленные запасные варианты. |
| 11 |У меня репутация человека, победившего великое зло, но это ложь, и злая сила знает об этом. |
| 12 |Я знаю, что цель всегда оправдывает средства, и быстро иду на жертвы ради достижения своих целей. |
[img width=330 class="centerme" [https://i.imgur.com/iWdcmCg.png]]
Долговязые полурослики - представители рода, среди предков которого замешалась эльфийская кровь. Они чуть выше своих собратьев - их средний рост немного превышает 120 см. Они стройны и худощавы, но обычно весят чуть больше, чем легконогие. Долговязым полуросликам нравится общество эльфов, и многие из их деревень можно найти рядом с крупными эльфийскими поселениями. Эти деревни процветают благодаря торговле, связывая людские и эльфийские народы.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Обострённые чувства |^Вы владеете навыком Внимательность. |
|^Отменный метатель |^Вы владеете простым и воинским метательным оружием. Кроме того, совершение вами атаки в пределах максимальной дальности не вызывает помеху к броску атаки метательным оружием или пращами. |
|^Эльфийское наследие |^Долговязые полурослики проводят годы, изучая эльфийские труды. Вы можете говорить, читать и писать на Эльфийском. |
<div class="tc-table-of-contents">
<<toc-selective-expandable "Домашние правила">>
</div>
Боги, чьи портфолио включают Домен Бури — в том числе Талос, Амберли, Корд, Зебоим, Поглотитель, Зевс и Тор — правят бурями, морями и небесами. К ним относятся боги грома и молний, боги землетрясений, отдельные боги огня и некоторые боги насилия, физической силы и бесстрашия. В некоторых пантеонах боги этого домена правят другими божествами, и известны скорым судом, осуществляемым ударом молнии. В пантеонах мореходов боги этого домена являются божествами океана и покровителями моряков. Боги бури отправляют своих жрецов внушать страх простым смертным, либо чтобы удержать их на пути праведности, либо чтобы побудить их приносить жертвы для избежания божественного гнева.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//волна грома//, //туманное облако// |
| !3 |//дребезги//, //порыв ветра// |
| !5 |//метель//, //призыв молнии// |
| !7 |//власть над водами//, //град// |
| !9 |//нашествие насекомых//, //разрушительная волна// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами и воинским оружием.
---
!!! [img[1.png]] Гнев бури
<<<
Вы способны громогласно покарать обидчиков.
<<<
Когда видимое вами существо в пределах 1 м от вас попадает по вам атакой, вы можете реакцией заставить его совершить спасбросок Ловкости. Существо получает 2к8 урона звуком или электричеством (на ваш выбор) при провале, и половину этого урона при успехе.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[2.png]] Божественный канал: Разрушительный гнев
<<<
Вы можете использовать свой Божественный канал, чтобы овладеть могуществом бури с необузданной свирепостью.
<<<
Когда вы совершаете бросок урона звуком или электричеством, вы можете использовать Божественный канал, чтобы нанести максимальный урон вместо совершения броска.
---
!!! [img[6.png]] Удар грома
Когда вы наносите урон электричеством существу Большого или меньшего размера, вы также можете оттолкнуть его на расстояние до 2 м от себя.
---
!!! [img[17.png]] Бурерождённый
Вы получаете скорость полёта равную вашей скорости ходьбы, пока вы находитесь под открытым небом.
Война имеет множество проявлений. Она может сделать героев из обычных людей. Она может быть отчаянной и ужасающей, с проявлениями жестокости и трусости, затмевающими примеры мастерства и бесстрашия. В любом случае, боги войны следят за воинами и вознаграждают за великие свершения. Жрецы таких богов отличаются в битве, вдохновляя остальных сражаться или совершая акты жестокости в качестве подношений. Среди богов войны есть чемпионы чести и рыцарства (такие как Торм, Хиронеус и Кири-Джолит), а также боги разрушения и мародёрства (такие как Эритнул, Ярость, Груумш и Арес), и боги завоеваний и покорения (такие как Бэйн, Хекстор и Маглубиет). Другие боги войны (такие как Темпус, Ника и Нуада) занимают более нейтральную позицию, содействуя войне во всех её проявлениях и поддерживая воинов в любых обстоятельствах.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//божественное благоволение//, //щит веры// |
| !3 |//божественное оружие//, //магическое оружие// |
| !5 |//духовные стражи//, //мантия крестоносца// |
| !7 |//каменная кожа//, //свобода перемещения// |
| !9 |//небесный огонь//, //удержание чудовища// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами и воинским оружием.
---
!!! [img[1.png]] Боевой священник
<<<
Ваш бог наделяет вас воодушевлением, когда вы вступаете в битву.
<<<
Когда вы совершаете действие [[Атака|Атака]], вы можете бонусным действием совершить одну атаку оружием.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[2.png]] Божественный канал: Направленный удар
<<<
Вы можете использоватьсвой Божественный канал, чтобы нанести удар со сверхъестественной точностью.
<<<
Когда вы совершаете бросок атаки, вы можете использовать Божественный канал, чтобы получить бонус +10 к броску. Вы можете принять решение об использовании этой способности после объявления результата броска атаки, но до вступления его эффекта в силу.
---
!!! [img[6.png]] Божественный канал: Благословение бога войны
Если существо в пределах 6 м от вас совершает бросок атаки, вы можете реакцией предоставить этому существу бонус +10 к броску, использовав Божественный канал. Вы можете принять решение об использовании этой способности после объявления результата броска атаки, но до вступления его эффекта в силу.
---
!!! [img[17.png]] Воплощение битвы
Вы получаете сопротивление дробящему, колющему и рубящему урону от немагических атак.
Домен Жизни сосредоточен на трепещущей позитивной энергии — одной из фундаментальных сил вселенной, которая поддерживает всё живое. Боги жизни поощряют заботу о жизнеспособности и здоровье через исцеление больных и раненых, заботу о нуждающихся, и изгнание нежить и сил смерти. Почти любое незлое божество может претендовать на влияние в этом домене, особенно божества земледелия (такие как Чонтиа, Аравай и Деметра), боги солнца (такие как Латандер, Пелор и Ра-Хорахти), боги исцеления и выносливости (такие как Ильматер, Мишакаль, Аполлон и Диан Кехт) и боги домашнего очага и общин (такие как Гестия, Хатор и Болдрей).
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//благословение//, //лечение ран// |
| !3 |//божественное оружие//, //малое восстановление// |
| !5 |//возрождение//, //маяк надежды// |
| !7 |//защита от смерти//, //страж веры// |
| !9 |//множественное лечение ран//, //оживление// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами.
---
!!! [img[1.png]] Послушник жизни
<<<
Ваши исцеляющие заклинания становятся более эффективными.
<<<
Каждый раз, когда вы используете заклинание 1 уровня или выше, восстанавливающее хиты существу, цель дополнительно восстанавливает хиты в количестве равном 2 + уровень заклинания.
---
!!! [img[2.png]] Божественный канал: Сохранение жизни
<<<
Вы можете использовать свой Божественный канал для исцеления тяжелораненых.
<<<
Вы можете действием продемонстрировать свой священный символ и испустить целительную энергию, которая может восстановить хиты в количестве равном вашему пятикратному уровню жреца. Выберите любых существ в пределах 6 м от вас и распределите эти хиты между ними. Это умение не может восстановить существу хиты выше половины от его максимума. Вы не можете использовать это умение на нежить или конструктов.
---
!!! [img[6.png]] Благословенный целитель
<<<
Исцеляющие заклинания, которые вы сотворяете на других, также лечат и вас.
<<<
Когда вы сотворяете заклинание 1 уровня или выше, которое восстанавливает хиты другому существу, вы восстанавливаете себе хиты в количестве равном 2 + уровень заклинания.
---
!!! [img[17.png]] Высшее исцеление
Когда вы должны совершить бросок одной или нескольких костей, чтобы восстановить заклинанием хиты, вы можете использовать максимальное значение костей вместо совершения броска.
Боги знания — в том числе Огма, Боккоб, Гилеан, Ауреон и Тот — ценят обучение и понимание превыше всего. Некоторые учат, что знания нужно собирать и делать их доступными в библиотеках и университетах. Некоторые божества копят знания и держат их секреты при себе. А некоторые обещают своим последователям огромную власть, если те раскроют тайны мультивселенной. Последователи этих богов изучают эзотерические сказания, собирают старинные фолианты, исследуют тайные уголки земли, и изучают всё, что смогут. Некоторые боги знания поощряют развитие ремёсел и изобретательность, в том числе боги-кузнецы Гонд, Реоркс, Онатар, Морадин, Гефест и Гоибниу.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//опознание//, //приказ// |
| !3 |//внушение//, //гадание// |
| !5 |//необнаружимость//, //разговор с мёртвыми// |
| !7 |//магический глаз//, //смятение// |
| !9 |//знание легенд//, //наблюдение// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Благословение знаний
Вы получаете владение двумя из следующих навыков на ваш выбор: История, Магия, Природа или Религия. Ваш бонус мастерства для проверок этих навыков удваивается.
Вы также можете говорить, читать и писать на двух языках на ваш выбор.
---
!!! [img[2.png]] Божественный канал: Знание веков
<<<
Вы можете использовать свой Божественный канал, чтобы получить доступ к источнику знаний.
<<<
Вы можете действием выбрать один навык или [[инструмент|Инструменты]]. На следующие 10 минут вы получаете владение выбранным навыком или [[инструментом|Инструменты]].
---
!!! [img[6.png]] Божественный канал: Чтение мыслей
<<<
Вы можете использовать свой Божественный канал, чтобы читать мысли существ. Затем вы можете использовать доступ к разуму существа, чтобы командовать им.
<<<
Вы можете действием выбрать одно видимое вами существо в пределах 12 м от вас. Это существо должно совершить спасбросок Мудрости. При успехе вы не можете использовать это умение на нём, пока не завершите продолжительный отдых.
При провале вы можете читать его поверхностные мысли (то, что у него на уме, его текущие эмоции и то, о чём оно активно думает), пока оно находится в пределах 12 м от вас. Этот эффект длится 1 минуту.
В течение этого времени вы можете действием окончить этот эффект и сотворить на цель заклинание //внушение//, не тратя ячейку заклинаниё. Цель автоматически проваливает спасбросок от этого заклинания.
---
!!! [img[17.png]] Видения прошлого
<<<
Вы способны вызывать видения прошлого, связанные с предметом, который вы держите, или находящимся вокруг вас окружением.
<<<
Вы можете провести как минимум 1 минуту в медитации и молитве, и получить призрачные туманные видения недавних событий. Вы можете медитировать таким образом количество минут, равное вашему значению Мудрости, и должны поддерживать концентрацию в течение этого времени (как если бы концентрировались на заклинании).
//''Чтение предмета.''// Удерживая предмет во время медитации, вы получаете видение предыдущего владельца этого предмета. После 1 минуты медитации вы узнаёте, как владелец приобрёл и потерял предмет, а также самое последнее значимое событие с участием предмета и его владельца. Если предмет принадлежал другому существу в недавнем прошлом (в пределах количества дней, равного вашему значению Мудрости), вы можете потратить по ещё 1 дополнительной минуте на каждого владельца, чтобы узнать ту же информацию о нём.
//''Чтение местности.''// Пока вы медитируете, вы наблюдаете видения последних событий, произошедших в непосредственной близости (комната, улица, туннель, поляна и тому подобное в пределах куба с ребром 10 м) на протяжении количества прошедших дней, равного значению вашей Мудрости. За каждую минуту медитации вы узнаёте об одном значимом событии, начиная с самого последнего. Значимые события обычно связаны с сильными эмоциями, например, битвами и предательствами, свадьбами и убийствами, родами и похоронами. Однако они могут также включать в себя более обыденные события, которые, тем не менее, важны в текущей ситуации.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
Боги кузницы – покровители ремесленников, работающих с металлом, от скромного кузнеца, который обеспечивает деревню подковами и лезвиями плугов, до великого эльфийского мастера, чьи стрелы с алмазным наконечником из мифрила валили лордов демонов.
Боги кузницы учат, что с терпением и упорным трудом даже самый трудно обрабатываемый металл может быть превращен из куска руды в прекрасное изделие. Жрецы этих божеств ищут потерянные силами тьмы предметы, освобождают шахты от орков и открывают редкие и чудесные материалы, необходимые для создания мощных магических предметов.
Последователи этих богов очень гордятся своей работой, и они готовы создавать и использовать тяжелую броню и мощное оружие для их защиты. Божествами этого домена являются Гонд, Реоркс, Онотар, Морадин, Гефест и Гойбхну.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//опознание//, //палящая кара// |
| !3 |//магическое оружие//, //раскалённый металл// |
| !5 |//защита от энергии//, //стихийное оружие// |
| !7 |//изготовление//, //огненная стена// |
| !9 |//оживление вещей//, //сотворение// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Благословение кузницы
<<<
Вы получаете способность наделять магией оружие или доспехи.
<<<
В конце продолжительного отдыха вы можете коснуться одного немагического предмета, который является доспехами или оружием. До конца вашего следующего продолжительного отдыха или до тех пор пока вы не умрёте, этот объект считается магической вещью дающей бонус +1 к КД, если это броня, или бонус +1 к броскам атаки и урона, если это оружие.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами и [[инструментами кузнеца|Инструменты кузнеца]].
---
!!! [img[2.png]] Божественный канал: Благословение ремесленника
<<<
Вы можете использовать свой Божественный канал для создания простых предметов.
<<<
Вы проводите ритуал длительностью в час, который создает немагический предмет, содержащий немного металла: простое или боевое оружие, доспехи, десять боеприпасов, набор инструментов или другой металлический предмет. Создание завершается через час, предмет появляется в незанятом пространстве по вашему выбору на поверхности в пределах 1 м от вас.
То, что вы создаете, может быть чем-то, что стоит не более 100 см. В рамках этого ритуала вы должны выложить металл (им могут быть монеты) стоимостью создаваемого предмета. По завершению ритуала металл безвозвратно сливается и превращается в создаваемый предмет, магически формируя даже неметаллические его части. Ритуал может создать дубликат немагического предмета, который содержит металл, такой как ключ, если вы обладаете оригиналом во время ритуала.
---
!!! [img[6.png]] Душа кузни
Ваше мастерство жреца кузни предоставляет вам особые способности:
* Вы получаете сопротивление к урону огнём.
* Когда вы носите тяжёлый доспех, то получаете +1 к КД
---
!!! [img[17.png]] Святой кузни и огня
Ваше благословенное сходство с огнём и металлом становится более мощным:
* Вы получаете иммунитет к урону огнём.
* Когда вы носите тяжёлые доспехи, вы получаете сопротивление дробящему, колющему и рубящему урону от немагических атак.
Магия — это энергия, наполняющая мультивселенную и способствующая как разрушению, так и созиданию. Боги Домена Магии обладают глубокими знаниями о секретах и потенциале магии. Для некоторых подобных богов знание магии – великая ответственность, приходящая с особым пониманием природы реальности. Другие боги Магии видят в ней чистую силу, которая может использоваться владельцем по своему разумению.
Боги этого домена часто связаны со знаниями, поскольку обучение и магические силы идут рука об руку. В Королевствах к богам этого домена относятся Азут и Мистра, наряду с Кореллоном Ларетианом из эльфийского пантеона. В иных мирах к этому домену причастны Геката, Мат Матонви и Изис; троица лунных богов – Солинари, Лунитари и Нуитари в Кринне; Боккоб, Векна и Ви Джас в мире Серого Ястреба.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//волшебная стрела//, //обнаружение магии// |
| !3 |//магическое оружие//, //Нистулова ложная магия// |
| !5 |//магический круг//, //рассеивание магии// |
| !7 |//Леомундов потайной сундук//, //магический глаз// |
| !9 |//круг телепортации//, //планарные узы// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Посвящённый в аркану
Вы получаете владение навыком Магия и изучаете два заговора из списка заклинаний волшебника на ваш выбор. Эти заговоры считаются для вас заговорами жреца, и не учитываются в общее количество известных вам заговоров.
---
!!! [img[2.png]] Божественный канал: Арканное ограждение
<<<
Вы можете использовать свой Божественный канал, чтобы оградиться от существ из иных миров.
<<<
Вы действием демонстрируете свой священный символ и один выбранный вами небожитель, элементаль, фея или исчадие, которое может видеть или слышать вас в пределах 6 м, должно совершить спасбросок Мудрости. Если существо провалило спасбросок, оно изгоняется на 1 минуту, или пока не получит урон.
Изгнанное существо должно тратить свои ходы, пытаясь уйти от вас как можно дальше, и не может добровольно переместиться в пространство, находящееся в пределах 6 м от вас. Оно также не может совершать реакции. В качестве действия существо может использовать только [[Рывок|Рывок]] или пытаться освободиться от эффекта, препятствующего его передвижению. Если двигаться некуда, существо может использовать действие [[Уклонение|Уклонение]].
Начиная с 5 уровня в этом классе, если существо проваливает спасбросок от этого умения и родом не с этого плана существования, оно возвращается на свой родной план на 1 минуту. Его показатель опасности не должен превышать значения указанного в таблице ниже.
| !Ур. жреца |!ПО нежити |
| 5 | 1/2 |
| 8 | 1 |
| 11 | 2 |
| 14 | 3 |
| 17 | 4 |
---
!!! [img[6.png]] Разрушитель заклинаний
Когда вы восстановливаете хиты союзнику с помощью заклинания 1 уровня или выше, вы можете так же прекратить действие одного заклинания (на ваш выбор) на этом существе. Уровень отменяемого заклинания должен быть равен или ниже уровня ячейки исцеляющего заклинания.
---
!!! [img[17.png]] Мастерство арканы
Выберите четыре заклинания из списка заклинаний волшебника, по одному с каждого из следующих уровней: 6, 7, 8 и 9. Эти заклинания всегда считается подготовленными для вас, они считаются для вас заклинаниями жреца и не учитывается в количестве подготовленных заклинаний.
Бальзам мира живет в сердце здоровых общин, между дружественными народами и в душах добросердечных людей. Божества мира вдохновляют людей всех мастей разрешать конфликты и противостоять тем силам, которые пытаются помешать процветанию мира. Список некоторых богов, связанных с этим доменом, приведен в таблице ниже.
Жрецы Домена Мира председательствуют при подписании договоров, и их часто просят выступить арбитрами в спорах. Благословения этих жрецов объединяют людей и помогают им нести бремя друг друга, а их магия помогает тем, кто готов сражаться за мирный путь.
|!Пример божества |!Пантеон |
|Ангаррадх |Эльфийский |
|Берронар Истинное Серебро |Дварфийский |
|Болдрей |Эберрон |
|Сирроллали |Полуросликов |
|Эльдат |Забытые королевства |
|Гаэрдал Железная Рука |Гномий |
|Паладайн |Сага о Копье |
|Рао |Серый Ястреб |
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//героизм//, //убежище// |
| !3 |//охраняющая связь//, //подмога// |
| !5 |//маяк надежды//, //послание// |
| !7 |//аура очищения//, //Отилюков упругий шар// |
| !9 |//высшее восстановление//, //ментальная связь Рэри// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Воплощение мира
Вы получаете владение навыком Выступление, Проницательность или Убеждение (на ваш выбор).
---
!!! [img[1.png]] Узы примирения
<<<
Вы способны создать укрепляющую связь между людьми, которые находятся в мире друг с другом.
<<<
Действием вы можете выбрать количество согласных существ в пределах 6 м от вас (включая вас), равное вашему бонусу мастерства. Вы создаете магическую связь между ними на 10 минут или пока не используете это умение снова. Пока любое связанное существо находится в пределах 6 м от другого, раз в ход оно может совершить бросок к4 и добавить полученный результат к броску атаки, проверке характеристик или спасброску.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[2.png]] Божественный канал: Бальзам мира
<<<
Вы можете использовать свой Божественный канал, чтобы превратить само свое присутствие в смягчающий бальзам.
<<<
Действием вы можете переместиться на расстояние, не превышающее вашу скорость. Это перемещение не провоцирует атак, а когда вы перемещаетесь в пределах 1 м от любого другого существа во время этого действия, вы можете восстановить ему хиты в количестве, равном 2к6 + ваш модификатор Мудрости (минимум 1 хит). Существо может получить это лечение только один раз за это действие.
---
!!! [img[6.png]] Защитные узы
<<<
Узы, которыми вы связываете людей, помогают им защищать друг друга.
<<<
Когда существо, связанное вашими Узами примирения, получает урон, другое связанное существо в пределах 6 м от него может реакцией телепортироваться в незанятое пространство в пределах 1 м от первого существа. При этом второе существо получает весь урон, спровоцировавший реакцию, вместо первого.
---
!!! [img[17.png]] Расширяющиеся узы
Преимущества ваших Уз примирения и Защитных уз теперь действуют, когда связанные существа находятся в пределах 12 м друг от друга. Кроме того, когда существо использует Защитные узы, чтобы получить чужой урон, оно получает сопротивление к этому урону.
Боги обмана, такие как Тимора, Бешаба, Олидаммара, Странник, Гарл Златоблеск и Локи — интриганы и подстрекатели, которые постоянно бросают вызов принятому порядку среди богов и смертных. Они покровительствуют ворам, негодяям, азартным игрокам, бунтарям и мятежникам. Их жрецы - разрушительная сила в мире, уязвляющая гордость, высмеивающая тиранов, крадущая у богатых, освобождающая пленных и попирающая бессмысленные традиции. Прямому противостоянию они предпочитают уловки, проделки, обман и воровство.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//маскировка//, //очарование личности// |
| !3 |//бесследное передвижение//, //отражения// |
| !5 |//мерцание//, //рассеивание магии// |
| !7 |//переносящая дверь//, //превращение// |
| !9 |//изменение памяти//, //подчинение личности// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Благословение обманщика
Вы можете действием коснуться согласного существа, отличного от вас, и дать ему преимущество на проверки Ловкости (Скрытность). Это благословение длится 1 час, или пока вы не используете это умение повторно.
---
!!! [img[2.png]] Божественный канал: Раздвоенность
<<<
Вы можете использовать свой Божественный канал, чтобы создать свою иллюзорную копию.
<<<
Вы можете действием создать идеальную иллюзию себя, которая существует в течение 1 минуты, либо пока вы не потеряете концентрацию (как если бы концентрировались на заклинании). Иллюзия появляется в видимом вами свободном пространстве в пределах 6 м от вас. Бонусным действием вы можете переместить иллюзию на расстояние до 6 м в видимое вами пространство, но иллюзия должна оставаться в пределах 24 м от вас.
Пока иллюзия существует, вы можете сотворять заклинания, как если бы вы находились в пространстве иллюзии, но вы должны использовать собственные чувства. Кроме того, когда и вы, и ваша иллюзия находитесь в пределах 1 м от существа, которое может видеть иллюзию, вы совершаете броски атаки по нему с преимуществом, так как иллюзия отвлекает его.
---
!!! [img[6.png]] Божественный канал: Плащ теней
<<<
Вы можете использовать свой Божественный канал, чтобы исчезнуть.
<<<
Вы можете действием стать [[невидимым|Невидимый]] до конца вашего следующего хода. Вы перестаёте быть [[невидимым|Невидимый]], если атакуете или сотворяете заклинание.
---
!!! [img[17.png]] Улучшенная раздвоенность
Вы можете создать до четырёх иллюзий себя, вместо одной, когда вы используете Божественный канал: Раздвоенность. Бонусным действием вы можете переместить любое количество иллюзий на расстояние до 6 м в видимое вами пространство, но иллюзии должны оставаться в пределах 24 м от вас.
Домен Порядка символизирует дисциплину, а также преданность обществу или институту и строгое повиновение законам, управляющим им. В Равнике этот домен почитают жрецы Сената Азориуса, которые поддерживают и обеспечивают соблюдение законов, и Синдиката Оржова, который использует закон и порядок в своих корыстных целях. В других мирах доступ к этой области предоставляют такие боги, как Бейн, Тир, Маджере, Эратис, Фолтус, Ви Джас, Ауреон, Маглубиет, Нуада, Афина, Анубис, Форсети и Асмодей.
Идеалом порядка является повиновение закону, а не конкретному человеку, мимолетному влиянию эмоций или народной власти. Жрецов порядка, как правило, волнует то, как совершаются поступки, а не то, справедливы ли их результаты. Следование закону и подчинение его предписаниям крайне важно, особенно если это выгодно этим жрецам и их гильдиям или божествам.
Закон устанавливает иерархию. Необходимо повиноваться тем, кто выбран законом для руководства. Те, кто подчиняется, должны делать это максимально эффективно. Таким образом, закон создает сложную сеть обязательств, которая позволяет обществу поддерживать порядок и безопасность в хаотичной мультивселенной.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//героизм//, //приказ// |
| !3 |//область истины//, //удержание личности// |
| !5 |//замедление//, //множественное лечащее слово// |
| !7 |//поиск существа//, //принуждение// |
| !9 |//общение//, //подчинение личности// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами. Кроме того, вы получаете владение навыком Запугивание или Убеждение (на ваш выбор).
---
!!! [img[1.png]] Голос власти
<<<
Вы можете призвать силу закона, чтобы побудить союзника к атаке.
<<<
Если вы сотворяете заклинание, используя ячейку 1 уровня или выше, и нацеливаете его на союзника, этот союзник может использовать свою реакцию сразу после сотворения заклинания, чтобы совершить одну атаку оружием против видимого вами существа по вашему выбору.
Если целью заклинания являются несколько союзников, вы выбираете одного из них.
---
!!! [img[2.png]] Божественный канал: По требованию закона
<<<
Вы можете использовать свой Божественный канал, чтобы оказывать устрашающее воздействие на других.
<<<
Действием вы можете продемонстрировать свой священный символ, и существа в пределах 6 м от вас по вашему выбору, которые могут видеть или слышать вас, должны преуспеть в спасброске Мудрости или будут [[очарованы|Очарованный]] вами до конца вашего следующего хода, либо пока не получат урон. Вы также можете заставить любое из очарованных существ выронить то, что оно держит в руках, когда оно проваливает спасбросок.
---
!!! [img[6.png]] Олицетворение закона
<<<
Вы становитесь удивительно искусным в использовании магической энергии для принуждения других.
<<<
Если вы сотворяете заклинание школы очарования, используя ячейку 1 уровня или выше, вы можете изменить время сотворения этого заклинания на 1 бонусное действие, если его обычное время сотворения - "1 действие".
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[17.png]] Гнев порядка
<<<
Враги, которых вы намереваетесь уничтожить, ослабевают под совместными усилиями вас и ваших союзников.
<<<
Раз в ход, если вы нанесли урон существу Благословенным ударом, вы можете проклясть это существо до начала вашего следующего хода. В следующий раз, когда один из ваших союзников попадёт атакой по проклятому существу, цель получит дополнительно 2к8 урона психической энергией, и проклятие окончится.
Боги природы столь же разнообразны, как и сама дикая природа: от непостижимых богов глубоких лесов (таких как Сильванус, Обад-Хай, Числев, Балинор и Пан) до дружелюбных божеств, отождествляемых с родниками и рощами (таких как Эльдат). Друиды, почитающие природу в целом, могут служить одному из этих божеств, практикуя таинственные обряды и читая почти забытые молитвы на собственном тайном языке. Но у многих из этих богов есть также и жрецы - поборники, которые принимают более активное участие в продвижении интересов конкретного бога природы. Эти жрецы могут охотиться на злых чудовищ, портящих лесные угодья, благословлять урожай верующих, или иссушать посевы тех, кто прогневал их богов.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//дружба с животными//, //разговор с животными// |
| !3 |//дубовая кора//, //шипы// |
| !5 |//рост растений//, //стена ветров// |
| !7 |//подчинение зверя//, //цепкая лоза// |
| !9 |//древесный путь//, //нашествие насекомых// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами. Вы также получаете владение одним из следующих навыков на ваш выбор: Выживание, Природа или Уход за животными.
---
!!! [img[1.png]] Поборник природы
Вы изучаете один заговор из списка заклинаний друида на ваш выбор. Этот заговор считается для вас заговором жреца, и он не учитывается в общее количество известных вам заговоров.
---
!!! [img[2.png]] Божественный канал: Очарование животных и растений
<<<
Вы можете использовать свой Божественный канал, чтобы очаровывать животных и растения.
<<<
Вы действием демонстрируете свой священный символ и произносите имя своего божества. Все звери и растительные существа, которые могут видеть вас, и находящиеся в пределах 6 м от вас, должны совершить спасбросок Мудрости. Если существо проваливает спасбросок, оно становится [[очарованным|Очарованный]] вами на 1 минуту, или пока не получит урон. Пока существо [[очаровано|Очарованный]] таким образом, оно дружелюбно к вам и другим указанным вами существам.
---
!!! [img[6.png]] Сдерживание стихий
Когда вы или существо в пределах 6 м от вас получает урон звуком, кислотой, огнём, холодом или электричеством, вы можете реакцией предоставить существу сопротивление к этому виду урона.
---
!!! [img[17.png]] Хозяин природы
<<<
Вы научились повелевать животными и растительными существами.
<<<
Пока существа [[очарованы|Очарованный]] вашим умением Очарование животных и растений, вы можете бонусным действием в свой ход устно указать каждому из них, что оно должно делать в свой следующий ход.
Боги света — в том числе Хельм, Латандер, Фолтус, Бранчала, Серебряное Пламя, Беленус, Аполлон и Ра-Хорахти — представляют идеалы возрождения и обновления, истины, бдительности и красоты, часто используя символ солнца. Некоторые из этих богов изображаются в виде самого солнца или возницы, который ведет солнце по небу. Другие — в виде неутомимых часовых, чьи глаза пронзают любую тень и видят любой обман. Некоторые являются божествами красоты и артистизма, которые учат, что искусство — это средство совершенствования души. Жрецы бога света — просветлённые души, наделённые сиянием и силой проницательности своего божества, которым поручено отгонять прочь ложь и испепелять тьму.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//огненные ладони//, //огонь фей// |
| !3 |//палящий луч//, //пылающий шар// |
| !5 |//дневной свет//, //огненный шар// |
| !7 |//огненная стена//, //страж веры// |
| !9 |//наблюдение//, //небесный огонь// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительный заговор
Вам известен заговор //свет//. Этот заговор не учитывается в общее количество известных вам заговоров.
---
!!! [img[1.png]] Защищающая вспышка
<<<
Вы можете создать божественный свет между собой и атакующим противником.
<<<
Если вы атакованы видимым вами существом, находящимся в пределах 6 м от вас, вы можете реакцией создать помеху на его бросок атаки, вызывая перед атакующим вспышку света, до того как он попадёт или промахнётся. Существа, которые не могут быть ослеплены, обладают иммунитетом к этому умению.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[2.png]] Божественный канал: Сияние рассвета
<<<
Вы можете использовать свой Божественный канал, чтобы призывать свет, прогоняющий тьму и причиняющий урон излучением врагам.
<<<
Вы действием демонстрируете свой священный символ, и вся магическая тьма в пределах 6 м от вас рассеивается. Кроме того, все враждебные существа в пределах 6 м от вас должны совершить спасбросок Телосложения. Существа получают 2к10 + уровень жреца урона излучением в случае провала и половину этого урона в случае успеха. Существа, находящиеся за полным укрытием от вас, не подвержены этому эффекту.
---
!!! [img[6.png]] Улучшенная вспышка
Вы можете использовать умение Защищающая вспышка, когда видимое вами существо в пределах 6 м от вас, атакует не вас, а другое существо.
---
!!! [img[17.png]] Корона света
Вы можете действием создать ауру солнечного света, которая существует 1 минуту или пока вы не рассеете её еще одним действием. Пока аура действует, вы испускаете яркий свет в пределах 12 м и тусклый свет в пределах ещё 12 м. Враждебные существа, находящиеся в ярком свете ауры, совершают с помехой спасброски от любых заклинаний, наносящих урон огнём или излучением.
Домен Смерти связан с силами, причиняющими смерть, а также негативной энергией, создающей нежить. Такие божества как Чемош, Миркул и Ви Джас — покровители некромантов, рыцарей смерти, личей, владык мумий и вампиров. Боги Домена Смерти также воплощают убийство (Анубис, Баал и Пайремиус), боль (Иуз и Ловиатар), болезни и яды (Инкабулос, Талона и Моргион), и подземный мир (Аид и Хель).
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//луч болезни//, //псевдожизнь// |
| !3 |//глухота/слепота//, //луч слабости// |
| !5 |//восставший труп//, //прикосновение вампира// |
| !7 |//защита от смерти//, //усыхание// |
| !9 |//облако смерти//, //преграда жизни// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Дополнительное владение
Вы получаете владение воинским оружием.
---
!!! [img[1.png]] Жнец
Вы изучаете один заговор, принадлежащий к школе Некромантии, из списка заклинаний любого класса на ваш выбор. Этот заговор считается для вас заговором жреца, и он не учитывается в общее количество известных вам заговоров.
Когда вы сотворяете заговор, принадлежащий к школе Некромантии, который не может иметь возможности быть нацеленным на более чем одно существо на текущем уровне, вы может нацелиться на двух существ, находящихся в пределах дистанции и не дальше, чем в 1 м друг от друга.
---
!!! [img[2.png]] Божественный канал: Касание смерти
<<<
Вы может использовать свой Божественный канал для уничтожения чужой жизненной силы своим касанием.
<<<
Когда вы попадаете по существу рукопашной атакой, вы может использовать Божественный канал, чтобы нанести цели дополнительный урон некротической энергией, равный 5 + ваш удвоенный уровень жреца.
---
!!! [img[6.png]] Неизбежное разрушение
<<<
Ваша способность проводить негативную энергию улучшается.
<<<
Урон некротической энергией, наносимый вашими заклинаниями жреца и Божественным каналом, игнорирует сопротивление к урону некротической энергией.
---
!!! [img[17.png]] Улучшенный жнец
Когда вы сотворяете заклинание, принадлежащее к школе Некромантии, которое не может иметь возможности быть нацеленным на более чем одно существо на текущем уровне заклинания, вы может нацелиться на двух существ, находящихся в пределах дистанции и не дальше, чем в 1 м друг от друга. Если заклинание расходует материальные компоненты, жрец должен предоставить их для каждой цели.
Сумеречный переход от света к темноте часто приносит спокойствие и даже радость, поскольку дневные хлопоты прекращаются и наступают часы отдыха. Темнота также может принести ужасы, но божества сумерек защищают от ужасов ночи.
Жрецы, служащие этим божествам - примеры которых приведены в таблице ниже, - приносят спокойствие тем, кто ищет покоя, и защищают их, отправляясь в наступающий мрак, чтобы темнота была утешением, а не ужасом.
|!Пример божества |!Пантеон |
|Болдрей |Эберрон |
|Селестиан |Серый Ястреб |
|Дол Арра |Эберрон |
|Хельм |Забытые Королевства |
|Ильматер |Забытые Королевства |
|Мишакаль |Сага о Копье |
|Селунэ |Забытые Королевства |
|Йондалла |Полуросликов |
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//огонь фей//, //усыпление// |
| !3 |//видение невидимого//, //лунный луч// |
| !5 |//аура живучести//, //Леомундова хижина// |
| !7 |//аура жизни//, //высшая невидимость// |
| !9 |//круг силы//, //фальшивый двойник// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Благословение бдительности
<<<
Ночь научила вас быть бдительным.
<<<
Действием вы можете коснуться одного существа (включая себя), и дать ему преимущество на следующую проверку инициативы. Это преимущество заканчивается сразу после проверки, или если вы используете эту способность снова.
---
!!! [img[1.png]] Глаза ночи
<<<
Вы способны видеть сквозь кромешный мрак.
<<<
У вас есть ночное зрение с радиусом 100 м. На этом расстоянии вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение.
Действием вы можете магическим образом поделиться этим ночным зрением с видимыми вами согласными существами в пределах 2 м от вас в количестве, не превышающем ваш модификатор Мудрости (минимум 1). Это ночное зрение длится 1 час и, поделившись им, вы не можете сделать этого снова пока не завершите продолжительный отдых, либо потратите ячейку заклинаний любого уровня, чтобы поделиться им повторно.
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение тяжёлыми доспехами и воинским оружием.
---
!!! [img[2.png]] Божественный канал: Сумеречное убежище
<<<
Вы можете использовать свой Божественный канал, чтобы освежить союзников успокаивающим полумраком.
<<<
Действием вы можете продемонстрировать свой священный символ, и выпустить сферу сумерек вокруг вас. У сферы радиус 6 м, она заполнена тусклым светом и перемещается вместе с вами, оставаясь с центром на вас. Сфера длится 1 минуту, либо пока вы не станете [[недееспособным|Недееспособный]] или умрёте. Каждый раз, когда существо (включая вас) заканчивает свой ход в сфере, вы можете дать этому существу одно из следующих преимуществ:
* Вы даёте ему временные хиты в количестве 1к6 + ваш уровень жреца.
* Вы оканчиваете один эффект на цели, делающий её [[очарованным|Очарованный]] или [[испуганным|Испуганный]].
---
!!! [img[6.png]] Ступени ночи
<<<
Вы можете использовать мистическую силу ночи, чтобы подняться в воздух.
<<<
Бонусным действием, когда вы находитесь в тусклом свете или темноте, вы можете магически наделить себя скоростью полета, равной вашей скорости ходьбы, на 1 минуту.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[17.png]] Сумеречный саван
<<<
Сумерки, которые вы вызываете, обеспечивают защитные объятия.
<<<
Вы и ваши союзники получаете укрытие на половину, находясь в сфере, созданной вашим Сумеречным убежищем.
Боги упокоения следят за границей между жизнью и смертью. Для этих божеств смерть и загробная жизнь являются фундаментальной частью мультивселенной. Нарушение покоя мёртвых, для них, – ужасный грех.
Божества упокоения: Келемвор, Ви Джас, духи предков Неумирающего Двора, Аид, Анубис и Осирис.
Последователи этих божеств стремятся упокоить блуждающих духов, уничтожить нежить и облегчить страдания умирающих. Их магия также позволяет им временно отсрочить смерть, особенно для человека, у которого еще есть неоконченные, великие дела. Это отсрочка смерти, а не её отрицание, потому что смерть в конечном итоге заберёт всех.
---
!!! [img[1.png]] Заклинания домена
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
На каждом указанном уровне жреца вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УЖ |!Заклинания |
| !1 |//порча//, //псевдожизнь// |
| !3 |//луч слабости//, //нетленные останки// |
| !5 |//возрождение//, //прикосновение вампира// |
| !7 |//защита от смерти//, //усыхание// |
| !9 |//оживление//, //преграда жизни// |
//УЖ - Уровень жреца//
---
!!! [img[1.png]] Круг смертности
<<<
Вы получаете возможность манипулировать гранью между жизнью и смертью.
<<<
Если обычно должны вы бросить одну или несколько костей, чтобы заклинанием восстановить хиты существу с 0 хитов, то вместо этого вы используете максимально возможное значение, для каждой кости.
Кроме того, вы изучаете заговор //уход за умирающим//, который не учитывается при подсчёте известных вам заговоров жреца. Для вас он имеет дистанцию 6 м, и вы можете сотворять его бонусным действием.
---
!!! [img[1.png]] Глаза могилы
<<<
Вы получаете возможность иногда ощущать присутствие нежити, существование которой является оскорблением естественного цикла жизни.
<<<
Действием вы можете открыть свой разум, чтобы магическим образом обнаружить нежить. До конца вашего следующего хода вы знаете местоположение любой нежити в пределах 12 м от вас, которая не находится за полным укрытием и не защищена от магии прорицания. Это чувство ничего не позволяет вам узнать о возможностях существа или идентифицировать его.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[2.png]] Божественный канал: Путь к могиле
<<<
Вы можете использовать свой Божественный канал, чтобы пометить жизненную силу другого существа как подлежащую уничтожению.
<<<
Действием вы выбираете одно видимое вами существо в пределах 6 м от вас, проклиная его до конца вашего следующего хода. Когда в следующий раз вы или ваш союзник попадает атакой по цели, она получает уязвимость ко всему урону от этой атаки, а проклятие заканчивается.
---
!!! [img[6.png]] Часовой у порога смерти
Вы получаете возможность препятствовать смерти.
Реакцией, когда вы или существо, которое вы видите в пределах 6 м от вас, подвергаются критическому удару, вы можете превратить этот удар в обычный. Любые эффекты, вызванные критическим ударом, будут отменены.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[17.png]] Хранитель душ
<<<
Вы можете захватить остатки жизненной силы умирающего и использовать её для исцеления живых.
<<<
Когда враг, видимый вами, умирает в пределах 12 м от вас, вы или одно существо по вашему выбору, находящееся в пределах 12 м от вас, восстанавливает количество хитов, равное числу Костей Хитов врага. Вы можете использовать это умение, только если вы дееспособны. Использовав это умение, вы не можете использовать его снова до начала вашего следующего хода.
* Вы не можете совершать с помощью этого умения более двух атак, если только оно не позволяет прямо это делать (как в случае с версией Дополнительной атаки у воина).
* Если у вас есть уровни классов, имеющих доступ на 5 уровне к умению Дополнительная атака, сложите эти уровни. Вы можете использовать полученную сумму уровней для получения этого умения.
//Например, если вы Воин 3/Паладин 2, вы получаете умение Дополнительная атака, не смотря на то, что у вас нет 5-го уровня ни в одном из этих классов.//
* Если вы получили подкласс, имеющий доступ к умению Дополнительная атака, вы можете прибавить к уровню его класса, уровни других ваших классов, имеющих доступ к этому умению. Если эти классы получают умение Дополнительная атака на разных уровнях, вы должны достигнуть требования с большим уровнем.
//Например, если вы Бард Коллегии мечей 3/Воин 3, то вы получаете умение Дополнительная атака, т. к. сумма ваших уровней Барда и Воина удовлетворяет требованию умения Дополнительная атака Барда Коллегии мечей (6 уровень).//
//Если вы Бард Коллегии мечей 3/Воин 2, вы не получаете умение Дополнительная атака, так как, хоть сумма уровней этих классов и удовлетворяет требованию умения Дополнительная атака Воина (5 уровень), она не удовлетворяет требованию умения Дополнительная атака Барда Коллегии мечей (6 уровень).//
//Если вы Бард 2/Воин 3, вы не получаете умение Дополнительная атака, так как лишь подклассы Барда имеют доступ к этому умению. В этом случае вы не можете использовать сумму уровней.//
* Вы не можете использовать сумму уровней для получения умения, позволяющего совершать более двух атак (как в случае с версией Дополнительной атаки у воина).
* Договор клинка колдуна не предоставляет вам дополнительную атаку, если у вас есть умение Дополнительная атака.
Таблица ниже приводит характеристики самых распространённых доспехов, разделённых на три категории: лёгкие, средние и тяжёлые. Многие воители дополняют доспехи щитом.
//''Владение доспехами.''// Кто угодно может напялить доспех или пристегнуть щит к руке. Но только тот, кто знает, как носить доспех, может носить его эффективно. Ваш класс даёт владение некоторыми видами доспехов. Если вы носите доспех, которым не владеете, вы совершаете с помехой все проверки характеристик, спасброски и броски атаки, использующие Силу или Ловкость, и вы не можете сотворять заклинания.
//''Класс Доспеха (КД).''// Доспех защищает владельца от атак. Надетый доспех (и щит) определяет базовый Класс Доспеха.
//''Скрытность.''// Если в колонке доспеха написано «Помеха», владелец совершает проверки Ловкости (Скрытность) с помехой.
//''Вес. ''//Указанные значения веса используются для доспехов рассчитанных на существо Среднего размера. Доспехи Маленьких существ весят вдвое меньше, а доспехи Больших - вдвое больше. Владение доспехом вдвое уменьшает его вес, пока он надет на вас (не относится к щитам).
//''Щиты.''// Щиты чаще всего изготавливаются из нескольких слоев древесины, обшиты кожей и укреплены металлическими полосами. Щит удерживается одной рукой, и вы получаете преимущество только от одного щита одновременно.
Вы можете ударить противника щитом, как оружием в неосновной руке. Таким образом щит считается лёгким воинским дробящим оружием. Используя щит в качестве оружия, вы теряете его бонус к КД до начала вашего следующего хода.
|!//Лёгкий доспех// |!Цена |!Класс Доспеха (КД) | !Скрытность | !Вес|
|Дублет |15 см |11 + мод. ЛОВ | | 3 кг|
|Кожаный |45 см |12 + мод. ЛОВ | | 6 кг|
|Баклер |5 см |+ 1 | | 1 кг|
|!//Средний доспех// |!Цена |!Класс Доспеха (КД) | !Скрытность | !Вес|
|Ламеллярный |30 см |12 + мод. ЛОВ (макс. 2) | | 8 кг|
|Кольчужная рубаха |50 см |13 + мод. ЛОВ (макс. 2) | Помеха | 8 кг|
|Чешуйчатый |70 см |14 + мод. ЛОВ (макс. 2) | Помеха | 16 кг|
|Бригантина |150 см |14 + мод. ЛОВ (макс. 2) | Помеха | 10 кг|
|Кираса |250 см |14 + мод. ЛОВ (макс. 2) || 8 кг|
|Полулаты |450 см |15 + мод. ЛОВ (макс. 2) | Помеха | 18 кг|
|Средний щит |10 см |+2 | | 3 кг|
|!//Тяжёлый доспех// |!Цена |!Класс Доспеха (КД) | !Скрытность | !Вес|
|Кольчуга |100 см |16 | Помеха | 20 кг|
|Наборный |300 см |17 | Помеха | 25 кг|
|Латы |900 см |18 | Помеха | 30 кг|
|Ростовой щит |15 см |+3| Помеха | 6 кг|
|Павеза |25 см |+3| Помеха | 8 кг|
<<tabs "[tag[Категории доспехов]]" "Лёгкий доспех" "$:/state/tab1">>
---
!!!Надевание и снятие доспехов
Время, нужное для надевания и снятия доспехов, зависит от их вида.
//''Надевание''//. Столько времени требуется для надевания доспеха. Вы получаете КД от доспеха только если потратили нужное время на его надевание.
//''Снимание''//. Столько времени требуется на снятие доспеха. Если вам помогают, уменьшите время вдвое.
|!Вид|!Надевание|!Снятие|
|Лёгкий доспех|1 минута|1 минута|
|Средний доспех|3 минуты|1 минута|
|Тяжёлый доспех|10 минут|5 минут|
|Лёгкий щит| свободное действие |<|
|Средний щит| бонусное действие |<|
|Тяжёлый щит| действие |<|
---
!!!Подгонка доспеха
Доспех, изготовленный под одного человека, не подойдёт другому без значительных изменений, и униформа стражника может выглядеть заметно чужеродной, если искатель приключений оденет её для маскировки.
Когда искатели приключений находят доспех, одежду или другой похожий предмет, предназначенный для носки, им нужно посетить изготовителя доспехов, портного, кожевника или другого специалиста, который подгонит этот предмет для них. Стоимость этой работы составляет от 10 до 40 процентов от рыночной стоимости предмета.
[img width=320 class="centerme" [https://i.imgur.com/PSVgeVR.png]]
<<tabs "[tag[Драконорождённый - описание]]" "Описание драконорождённых" "$:/state/tab1">>
Ваша врождённая магия происходит от магии драконов, смешавшейся с вашей кровью или кровью ваших предков. Чаще всего, чародеи с таким источником силы могут проследить свою родословную до могучих чародеев древности, заключавших сделки с драконами или даже являющихся потомками драконов. Некоторые из таких наследственных ветвей хорошо известны в мире, но большинство из них скрыты. Любой чародей может являться родоначальником такой ветви, получив силу в результате договора или других исключительных обстоятельств.
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Очарования или Прорицания.
| !Ур. |!Заклинания |
| !1 |//опознание//, //приказ//, //фокусы// |
| !3 |//дыхание дракона//, //поиск предмета// |
| !5 |//полёт//, //стена ветров// |
| !7 |//кабинет Морденкайнена//, //принуждение// |
| !9 |//знание легенд//, //призыв драконьего духа// |
---
!!! [img[1.png]] Дракон-предок
Вы выбираете вид вашего дракона-предка из таблицы ниже. Вид урона используемый вашими умениями источника чародейства определяется выбранным видом дракона.
|!Дракон |!Вид урона |
|Белый или Серебряный |Холод |
|Бронзовый или Синий |Электричество |
|Зелёный |Яд |
|Золотой, Красный или Латунный |Огонь |
|Медный или Чёрный |Кислота |
|Аметистовый |Силовое поле |
|Изумрудный |Психическая энергия |
|Кристальный |Излучение |
|Сапфировый |Звук |
|Топазный |Некротическая энергия |
---
!!! [img[1.png]] Драконья речь
Вы можете говорить, читать и писать на Драконьем языке или на одном другом языке на ваш выбор. Кроме того ваш бонус мастерства для проверок Харизмы, совершаемых при взаимодействии с драконами, удваивается (если он применим к этой проверке).
---
!!! [img[1.png]] Драконья устойчивость
<<<
Магия, струящаяся через ваше тело, проявляет физические черты ваших предков драконов.
<<<
Максимум ваших хитов увеличивается на 1 на 1 уровне и ещё на 1 каждый раз, когда вы получаете уровень в этом классе.
Кроме того, некоторые участки вашей кожи покрываются тонкой драконьей чешуёй. Если вы не носите доспехов, ваш Класс Доспеха равен 13 + модификатор Ловкости.
---
!!! [img[6.png]] Стихийное родство
Когда вы сотворяете заклинание, наносящее урон вида, связанного с вашим драконом-предком, вы можете добавить свой модификатор Харизмы к одному броску урона этого заклинания. В то же время вы можете потратить 1 очко чародейства, чтобы получить сопротивление к этому виду урона на 1 час.
---
!!! [img[14.png]] Драконьи крылья
Вы можете бонусным действием расправить драконьи крылья у себя за спиной и получить скорость полёта, равную вашей скорости ходьбы. Крылья существуют, пока вы не убрёте их бонусным действием.
Ваши доспехи должны быть специально подогнаны под ваши крылья. Подгонка доспеха требует двух часов работы опытного ремесленника и оплату в размере четверти стоимости доспеха. Вы не можете расправить крылья, если носите неподогнанные доспехи, а одежда не приспособленная для крыльев, может быть разрушена при их проявлении.
---
!!! [img[18.png]] Влияние дракона
<<<
Вы способны проявить грозное присутствие своего дракона-предка, вызывая у окружающих благоговение или страх.
<<<
Вы можете действием потратить 5 очков чародейства, чтобы окружить себя аурой страха или трепета (на ваш выбор) с радиусом 12 м. В течение 1 минуты, либо пока вы не потеряете концентрацию (как если бы концентрировались на заклинании), все враждебные существа, начинающие ход в этой ауре, должны преуспеть в спасброске Мудрости, иначе они станут [[очарованными|Очарованный]] (если вы выбрали трепет) или [[испуганными|Испуганный]] (если вы выбрали страх) до окончания действия ауры. Существо, преуспевшее в спасброске, получает иммунитет к эффекту этого умения на 24 часа.
Обычно доступная в самом низком качестве (дрова), древесина более высокого качества часто встречается в довольно экзотических местах. Деревянные ветви (включая древесные обрезки) считаются полезной древесиной, которую можно обрабатывать, в то время как дрова охватывают все остальное, а более полезная древесина попадает в такие категории, как "качественные ветви" или более редкие варианты. Предполагается, что древесные обрезки - это обрезки обычной качественной древесины, и, следовательно, их нельзя получить из дров.
Принято считать, что каждая деревянная ветвь весит 1 кг.
---
!!Повторное использование древесины
По большей части, древесина не может быть легко использована повторно. Резьба по дереву - не всегда обратимый процесс, а древесину нельзя переплавить.
Деревянное изделие можно переработать в древесные обрезки, в количестве, равном четырёхкратному количеству ветвей, использованных для его создания.
<<<
//''Качественная ветвь''//
//Качественная ветвь - это ветвь, из которой можно изготавливать более ценные предметы, в частности, луки. Она имеет немагическую природу, но обычно это тис, когда речь идет о луке, хотя ясень, шелковица, вяз, дуб, гикори, орешник и клен могут использоваться в более широких целях. //
<<<
Ваш покровитель - могущественный Древний дракон. В песнях и сказаниях говорится либо о его долголетней благосклонности, либо о терроре, который он навел на смертные расы. Независимо от его склонности к добру или злу, во всех историях упоминаются его огромные сокровища, знания и сила. В результате собственных интриг, любопытства или, возможно, лени он выбрал вас в качестве проводника своих желаний. Это обоюдоострый меч, поскольку Древний дракон наделяет вас силой для достижения собственных целей, но волю дракона нелегко согнуть или отбросить.
---
!!! [img[1.png]] Расширенный список заклинаний
Древний дракон позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//героизм//, //приказ// |
| !2 |//дыхание дракона//, //поиск предмета// |
| !3 |//быстрые друзья//, //стена ветров// |
| !4 |//кабинет Морденкайнена//, //принуждение// |
| !5 |//знание легенд//, //призыв драконьего духа// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Дополнительные владения
Вы получаете владение средними доспехами и воинским оружием.
---
!!! [img[1.png]] Драконья речь
<<<
Ваша глубокая связь с родом драконов дарует вам понимание и усиливает ваше влияние.
<<<
Вы получаете следующие преимущества:
* Вы можете говорить, читать и писать на Драконьем языке или на одном другом языке на ваш выбор.
* Вы изучаете заговор //чудотворство//, который считается для вас заговором колдуна, но не учитывается в общее количество известных вам заговоров.
---
!!! [img[1.png]] Последователь дракона
Выберите вид дракона, являющегося вашим покровителем, из таблицы ниже. Вид урона используемый вашими умениями покровителя определяется выбранным видом дракона.
|!Дракон |!Вид урона |
|Белый или Серебряный |Холод |
|Бронзовый или Синий |Электричество |
|Зелёный |Яд |
|Золотой, Красный или Латунный |Огонь |
|Медный или Чёрный |Кислота |
|Аметистовый |Силовое поле |
|Изумрудный |Психическая энергия |
|Кристальный |Излучение |
|Сапфировый |Звук |
|Топазный |Некротическая энергия |
При сотворении заговора //мистический заряд// или заклинания колдуна, наносящего урон кислотой, огнём, холодом, электричеством или ядом, вы можете изменить его вид урона на вид, определённый выбранным видом дракона.
Кроме того, сразу после того как вы сотворяете заклинание, используя ячейку колдуна, вы можете сохранить часть затраченной на него силы. Ваша следующая атака до конца вашего следующего хода наносит дополнительно 1к6 урона, определённого выбранным видом дракона.
Дополнительный урон увеличивается, когда вы достигаете определенных уровней в этом классе: до 2к6 на 6 уровне и 3к6 на 10 уровне.
---
!!! [img[6.png]] Стихийный аспект
<<<
Ваш покровитель-дракон наделяет вас исключительным родством с собственной стихией.
<<<
Вы получаете сопротивление к виду урона, определённому выбранным вами ранее видом дракона.
Кроме того, вы можете действием магическим образом выпустить призрачные драконьи крылья, состоящие из энергии, соответствующей виду вашего покровителя, и получить скорость полёта 12 м на 1 минуту. Когда крылья появляются, а также действием в последующие ходы, вы можете ударить ими. Все существа в пределах 2 м от вас должны преуспеть в спасброске Ловкости со Сл ваших заклинаний колдуна, иначе получат 2к6 урона вида, определённого выбранным вами видом дракона.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Дух дракона
<<<
Вы приобретаете мастерство и самообладание дракона.
<<<
Вы получаете иммунитет к состоянию [[Испуганный]]. Кроме того, когда существо получает урон от удара крыльев вашего умения Стихийный аспект, оно должно преуспеть в спасброске Мудрости со Сл ваших заклинаний колдуна, иначе станет [[испугано|Испуганный]] вами на 1 минуту. Существо может повторять этот спасбросок в конце каждого своего хода, оканчивая это состояние при успехе и получая иммунитет к эффекту этого умения на следующие 24 часа.
---
!!! [img[14.png]] Дыхание древнего
<<<
Вы были благословены отличительной чертой дракона: его разрушительным дыханием.
<<<
Действием вы можете магическим образом выдохнуть стихийную энергию 12-метровым конусом или 18-метровой линией шириной 1 м (на ваш выбор). Все существа в этой области должны совершить спасбросок Ловкости со Сл ваших заклинаний колдуна, получая 6к8 урона, определённого выбранным вами видом дракона, при провале, или половину этого урона при успехе.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
<<<
With every attack I make, I grow stronger and more confident.
— Jagnnash the Unstoppable, dragonborn hero
<<<
You become a vision of physical perfection, mighty in body and ruthless in your pursuit of victory. No one defends the front line of battle batter than you do, easily taking ground and pushing the enemy to and from.
World-shaking battles were fought between the tieflings of Bael Turath and the dragonborn of Arkhosia. The deeds and exploits of these conflicts resound still in epic story and song. One such anthem is Lament of the Iron Dreadnought, a somber song that recounts the final mark of Jagnnash the Unstoppable, a great dragonborn hero.
A doughty warrior famed for his ability to fight on no matter the unjuries he sustained. Jagnnash accumulated a number of legends. He withstood the full fury of an angry blue dragon, shrugged off the lashes of a pit fiend's whip, and even killed a tiefling warlock who had hurled him through Hell. The Lament, though, speaks of this final battle and all he achieved in the last offensive against the tiefling empire. Jagannash felled a full legion of devils, strangled their succubus sorceress commander with his bare hands, and hammered his way through the walls of a fortress. He was climbing the tower that housed the tiefling war room when the earth rebelled and swallowed the citadel and all within it. It is whispered that Jagannash fights there still, despite the centuries. Such is his resilience.
As an Iron Dreadnought, you are an inexorable force of destruction. You turn aside weapons with nothing more than your force of will. Fire cannot touch you; lightning cannot blind you. The core of your might grows from your ability to detatch your mind from your body, to disassociate yourself from the pain of your wounds and press onward to keep fighting when others would succumb. You attain this state through discipline and a commitment. All who attempt to stand against you are bound to fall.
''Iron Dreadnoughts in the World:'' If it from Jagannash's example that the other warriors who follow a similar creed take inspiration. The mind-body practices of these warriors are kept and taught by a few masters, dragonborn and otherwise. Some even develop these talents without formal training.
''Adaptation:'' Every world in the multiverse has some hero of legend that could have been seen as an Iron Dreadnought. Someone with songs sung and tales told about them. An icon for other warriors to look up to and aspire to be like.
---
!!Дредноут
| !Ранг |!Умения |
| !1 |Dreadnaught Inspiration, Enduring Warrior, Frontline Surge |
| !2 |Inexorable Shove, Unfailing Resources |
| !3 |Critical Hardening, Inexorable Advance, Iron Blood |
| !4 |Trample the Fallen, Indomitable Strength, Line-Breaker Assault |
---
!!!Предварительные условия:
* ''Минимальные значения характеристик.'' Сила 16 и Телосложение 16.
* ''Владение навыками.'' Атлетика.
* ''Умение класса.'' Дополнительная атака.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Dreadnaught Inspiration
When you spend an inspiration for any reason, you can choose to either gain resistance to all damage until the start of your next turn or gain a +4 bonus to AC and saving throws until the start of your next turn.
!!!Enduring Warrior
<<<
The sight of your fallen foe invigorates you.
<<<
When you reduce an enemy to 0 hit points, you regain hit points equal to your Constitution modifier.
!!!Frontline Surge
<<<
You beat back your enemy, allowing you and your allies to seize new ground.
<<<
//Martial Exploit (Recharges on a short or long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 1d10 damage, and you can push the target up to 5 feet. You can then move up to 5 feet toward the target. If you do so, each of your allies within 10 feet of you can move up to 5 feet (no action required). The movement granted to you and your allies does not provoke opportunity attacks.
The extra damage this exploit deals on a hit increases when you reach 5th level (2d10), 11th level (3d10), and 17th level (5d10).
---
!!Ранг 2
!!!Dagger Precision
!!!Inexorable Shove
<<<
You can use your superior positioning to knock back enemies with ease.
<<<
You can take the Shove action as a bonus action on your turn.
!!!Unfailing Resources
You have reserves of endurance that lesser warriors only dream of. Your hit point maximum increases by an amount equal to your level when you gain this feature. Whenever you gain a level thereafter, your hit point maximum increases by an additional 1 hit point.
Additionally, whenever you fail a saving throw, you can use your reaction to take 10 damage and turn the failure into a success. You must have at least 10 hit points to use this ability, and you cannot reduce this damage by any means.
---
!!Ранг 3
!!!Critical Hardening
When you score a critical hit with an attack using a weapon, until the end of your next turn, whenever you take damage, you take half as much damage.
!!!Inexorable Advance
You relentlessly pound and shove past your foes. You can add your Constitution modifier as a bonus on damage rolls made with weapon attacks using two hands.
!!!Iron Blood
<<<
Detatching your mind from your injuries, you ignore minor wounds for the rest of the battle.
<<<
//Martial Exploit (Recharges on a long rest) //
As a reaction, when you are bloodied, you can gain resistance to all damage for 1 minute.
---
!!Ранг 4
!!!Trample the Fallen
When you push a creature or knock a creature prone, it takes damage equal to your Constitution modifier.
!!!Indomitable Strength
<<<
You heave your enemy backward, sending it to the ground reeling. The momentary opening gives you a chance to catch your breath.
<<<
//Martial Exploit (Recharges on a long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 2d10 damage, and you can push the target up to 5 feet and knock it prone. Additionally, you can spend a hit die to regain hit points.
The extra damage this exploit deals on a hit increases when you reach 5th level (3d10), 11th level (4d10), and 17th level (6d10).
!!!Line-Breaker Assault
<<<
Your hammering strike knocks your foe where you want it and leaves it staggering.
<<<
//Martial Exploit (Recharges on a long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 1d10 damage, and the target must make a Strength saving throw. On a failed save, you can move the target up to 15 feet to a space within 5 feet of you, and the target is incapacitated for 1 minute. While incapacitated, the target can repeat the saving throw at the end of each of its turns, ending the effect on a success.
Additionally, you gain resistance to all damage until the start of your next turn.
The extra damage this exploit deals on a hit increases when you reach 5th level (2d10), 11th level (3d10), and 17th level (5d10).
[img width=270 class="centerme" [https://i.imgur.com/fPkYiKo.png]]
<<tabs "[[Описание друидов]] [[Классовые умения друидов]] [[Круги друидов]] [[Таблицы Дикого облика]]" "" "$:/state/tab1">>
<<<
As the sturdy oak stands strong against the ravages of unnatural forces, I do the same against those who threaten the wilderness.
— Elkhazel Faerieth, Oak Shield of the Summer Court
<<<
For centuries, the Oak Shields have guarded the wild areas of the world. Oak Shields, like their namesake trees, are known for longevity, hardiness, and loyalty. Legends claim that Mielikki personally trained the first members of the order, providing them with the secrets of using everspring groves and standing stones. Ancient sites such as these might hold information on how Mielikki's faithful can benefit from them.
''Oak Shields in the World:'' Each aspiring Oak Shield studies under a master. Together, the student and the master meditate beneath a sacred oak, seeking enlightenment about the natural world. The student learns to interpret the whispers of the primal spirits and to understand the wisdom of the changing seasons. During this time, they come to appreciate when to stand tall against the wind and when to bend when the wind is too strong. In addition, the student learns about the complexity of the world, how something as simple as a tree can have multiple aspects to its nature. An Oak Shield applies these lessons to their life's work as a guardian of the natural order, remaining steadfast in the face of adversity and providing shelter during the storm.
''Oak Shields in the Game:'' A person doesn't decide to become an Oak Shield so much as they are chosen by Mielikki. These individuals are usually Paladins or Rangers who have taken an oath to serve nature, but some also are devout and proven knights of a fey court, such as Summer or even the Unseelie. On occasion, zealous barbarians, clerics of nature, or even warlocks sworn to an archefey also find themselves chosen, but it's rare. Once chosen, the student either travels to the master, which usually involves travel or or from the Feywild, or the master visits the student in their dreams.
''Adaptation:'' In Faerûn, Mielikki is the primary deity who raises Oak Shield's, but Eilistraee has been known to as well. While in Wildmount, someone like Melora is probably the deity who founded the order. No matter your setting, choose a nature deity that values the natural order of the world and wishes to keep that world from being despoiled of its beauty.
<<<
''Welcome to the Feywild''
The Feywild, also sometimes called the land of Faerie, is a place bright with magic. Those who wander its enchanted roads discover miracles and wonders undreamed of in the mortal world. In the Feywild, the laws of science, logic, and reason defer to the arts of magic, story, and rhyme. Ordinary animals and objects converse as eloquently as any worldly mortal. Enchanted forests wander across the landscape like herds of roving sheep. Glorious castles perch on mountain spires that touch the starry heavens, and a bold traveler can board a vessel to a fey palace on the moon. Fairies anoint the dewdrops on morning flowers, and in the evening, satyrs play their gentle pipes to lull the world to sleep.
Yet for all its dreamlike splendor, the plane can be as perilous as the Elemental Chaos with its random explosions of stone and fire, and as deadly as the life-sapping Shadowfell. Here wicked hags place everlasting curses on their enemies, change mortals into toads, and blacken the moon in their flight across the midnight sky. Capricious fey play careless games with mortal lives. Underground caverns sprawl the length of the world above, and in these dark places, fomorian tyrants, brutal cyclopses, and hateful drow await the day when they will overthrow the surface dwellers. Those who are drawn to this realm of enchantment and danger must take care, for wonders and horrors beyond imagining lie around every bend in the woodland road.
<<<
---
!!Дубовый щит
| !Ранг |!Умения |
| !1 |Steadfast Resolve, Weather the Storm |
| !2 |Sheltering Boughs, Whirling Leaves |
| !3 |Deep Roots |
| !4 |Renewing Vines |
---
!!!Предварительные условия:
* ''Особое.'' Должен поклоняться божеству природы законного мировоззрения, либо заключить пакт с могущественным фейским созданием.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Steadfast Resolve
<<<
Your prayers to your god strengthen your resolve, allowing you to stand your ground.
<<<
//Oak Shield • Divine, Enchantment, Offensive, Weapon (Recharges on a short or long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 2d10 damage, and you push the target up to 10 feet.
In addition, you or one ally within 30 feet of you becomes immune to forced movement until the end of your next turn.
The extra damage increases when you reach 9th level (3d10), 13th level (4d10), and 17th level (5d10).
!!!Weather the Storm
You gain resistance to lightning or thunder damage (your choice). Whenever you take damage from your chosen damage type, one or two allies who are within 30 feet of you and who did not take damage from the effect each gain 1d10 + 5 temporary hit points.
At level 13, you gain resistance to the other damage type as well, and the temporary hit points increase to 2d10 + 10.
---
!!Ранг 2
!!!Sheltering Boughs
You can spend an inspiration on your turn (no action required) to grant yourself and any number of creatures you choose within 30 feet of you a +2 bonus to AC, Strength saving throws, and Constitution saving throws, until the start of your next turn.
!!!Whirling Leaves
<<<
Your prayer takes the form of leaves in a strong wind, obscuring you and your allies.
<<<
//Oak Shield • Conjuration, Divine (Recharges on a short or long rest)//
As a bonus action, you and each creature of your choice within 30 feet of you becomes heavily obscured until the end of your next turn.
---
!!Ранг 3
!!!Deep Rooots
You gain 30 feet of tremorsense while you are in contact with the ground. If you already have tremorsense, it instead increases by 30 feet.
---
!!Ранг 4
!!!Renewing Vines
<<<
When you raise your weapon, vines launch from the ground, piercing your enemies with poisonous thorns and refreshing your allies.
<<<
//Oak Shield • Divine, Offensive, Poison, Transmutation, Weapon (Recharges on a long rest) //
As an action, choose any number of creatures within 10 feet of you. Each target must succeed on a Strength saving throw or take 4d6 piercing damage, 4d6 poison damage, and become restrained. While restrained by this exploit, the target can repeat the saving throw at the end of each of its turns, ending the effect on itself on a success.
In addition, you and each creature of your choice within 10 feet of you gain 4d6 + 14 temporary hit points, and advantage on a single saving throw, ability check, or attack roll of their choice within the next 10 minutes.
<<<
Дух единорога дарует свою защиту тем, кто находится рядом.
<<<
Вы и ваши союзники получаете преимущество на все проверки характеристик, совершаемые для обнаружения существ в ауре духа. Кроме того, если вы сотворяете заклинание, используя ячейку заклинания, которое восстанавливает хиты любого существа внутри или вне ауры, каждое существо по вашему выбору, находящееся в ауре, также восстанавливает хиты в количестве, равном вашему уровню друида.
<<<
Дух медведя наделяет вас и ваших союзников своей силой и выносливостью.
<<<
Каждое существо по вашему выбору, находящееся в ауре в момент появления духа, получает временные хиты в количестве, равном 5 + ваш уровень друида. Кроме того, вы и ваши союзники получаете преимущество на проверки Силы и спасброски Силы, пока находитесь в ауре.
<<<
Дух ястреба – непревзойденный охотник, помогающий вам и вашим союзникам своим острым зрением.
<<<
Когда существо совершает бросок атаки по цели, находящейся в ауре духа, вы можете использовать свою реакцию, чтобы дать преимущество на этот бросок. Кроме того, вы и ваши союзники получаете преимущество на проверки Мудрости (Внимательность), пока находитесь в ауре.
Пока вы держите рукопашное оружие в одной руке, и не используете другого оружия, вы получаете бонус +2 к броскам урона этим оружием.
[img width=410 class="centerme" [https://i.imgur.com/CdSejpy.png]]
В глубоких городах Подземья живут дуэргары, или серые дварфы. Они совершают скрытные и жестокие налёты на поверхность, а пленных рабов продают другим расам Подземья. Серые дварфы обладают врождённой способностью становиться невидимыми и временно приобретать гигантские размеры.
Дуэргары, что становятся приключенцами, почти всегда оказываются изгнанниками из своего общества. У дуэргаров нет терпения к тем, кто не может держать свои амбиции и жестокость на достаточном уровне.
Любые серые дварфы, что были воспитаны среди своего собственного рода и впоследствии решившие стать искателями приключений, оказываются параноиками, ожидающими возможное предательство среди собственной группы приключенцев. К примеру, они могут настоять на том, чтобы они спали отдельно от остальной группы, никогда не показывать или не делится добытыми трофеями, попытаться накопить трофеи, которые помогут их выживанию, наподобие зелий, предметов или заклинаний, которые позволят им телепортироваться в безопасное место.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 1. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Псионическая стойкость |^Вы совершает спасброски с целью избежания или окончания состояний [[Очарованный]] или [[Ошеломлённый]] на себе с преимуществом. |
|^Дуэргарская магия |^При достижении 3 уровня, вы можете сотворять на себя заклинание //увеличение/уменьшение//, однако, применяя эту способность, вы можете выбирать только вариант увеличения. Когда вы достигаете 5 уровня, вы можете сотворять на себя заклинание //невидимость//. Для сотворения этих заклинаний вам не требуются материальные компоненты, и вы не сможете сотворять их, находясь под прямыми солнечными лучами, впрочем, солнечные лучи не влияют на них, если вы ранее сотворили заклинание. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Интеллект. |
|^Чувствительность к солнечному свету |^Вы совершаете броски атаки и проверки Мудрости (Внимательность), которые полагаются на зрение, с помехой, когда вы, цель вашей атаки или то, что вы пытаетесь увидеть, находится под прямым солнечным светом. Вы можете отказаться от этой особенности, заменив свое Ночное зрение на [[Сумеречное зрение|Зрение и свет]]. |
|^Дополнительный язык |^Вы можете говорить, читать и писать на Подземном. |
//Требование: 17 уровень//
Вы можете потратить 6 очков ци, чтобы сотворить заклинание //конус холода//.
Вы изучаете два заговора на ваш выбор из списка заклинаний друида. Они считаются для вас заклинаниями следопыта, а Мудрость - базовая характеристика для их использования. Когда вы получаете новый уровень в этом классе, вы можете заменить один из них на другой заговор из списка друида.
Живопись - это художественное занятие по созданию картин и портретов, как правило, на холсте. Она может быть использована для широкого спектра других целей, например, для изготовления знаков, маскировки и иллюстраций. Некоторые магические предметы требуют ценных произведений искусства в качестве основы.
```
Модификатор живописи = бонус мастерства инструментов художника + модификатор Мудрости
```
[img width=460 class="centerme" [https://i.imgur.com/Drx9qwD.png]]
<<tabs "[[Описание жрецов]] [[Классовые умения жрецов]] [[Божественные домены]]" "" "$:/state/tab1">>
[img width=320 class="centerme" [https://i.imgur.com/UNa5zwp.png]]
|!Особенность |!Описание |
|^Закалённая чешуя |^Вы получаете бонус +1 к КД, если не носите тяжёлых доспехов. Пока вы не носите доспехов, ваш КД равен 12 + ваш мод. Ловкости. Вы можете использовать КД своей закалённой чешуи, если доспехи, которые вы носите, дают вам более низкий КД. При использовании закалённой чешуи, эффект от щита применяется как обычно. |
<div class="tc-table-of-contents">
<<toc-selective-expandable "Заклинания">>
</div>
| !УД |!Заклинания |
| !3 |//Мельфова кислотная стрела//, //тьма// |
| !5 |//зловонное облако//, //хождение по воде// |
| !7 |//поиск существа//, //свобода перемещения// |
| !9 |//наблюдение//, //нашествие насекомых// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//паук//, //шипы// |
| !5 |//молния//, //слияние с камнем// |
| !7 |//изменение формы камня//, //каменная кожа// |
| !9 |//каменная стена//, //создание прохода// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//дубовая кора//, //паук// |
| !5 |//призыв молнии//, //рост растений// |
| !7 |//предсказание//, //свобода перемещения// |
| !9 |//древесный путь//, //общение с природой// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//бесследное передвижение//, //невидимость// |
| !5 |//дневной свет//, //ускорение// |
| !7 |//предсказание//, //свобода перемещения// |
| !9 |//вещий сон//, //нашествие насекомых// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//отражения//, //туманный шаг// |
| !5 |//подводное дыхание//, //хождение по воде// |
| !7 |//власть над водами//, //свобода перемещения// |
| !9 |//наблюдение//, //призыв элементаля// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//паук//, //паутина// |
| !5 |//газообразная форма//, //зловонное облако// |
| !7 |//высшая невидимость//, //изменение формы камня// |
| !9 |//нашествие насекомых//, //облако смерти// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//размытый образ//, //тишина// |
| !5 |//защита от энергии//, //сотворение пищи и воды// |
| !7 |//мираж//, //усыхание// |
| !9 |//каменная стена//, //нашествие насекомых// |
//УД - Уровень друида//
| !УД |!Заклинания |
| !3 |//удержание личности//, //шипы// |
| !5 |//замедление//, //метель// |
| !7 |//град//, //свобода перемещения// |
| !9 |//конус холода//, //общение с природой// |
//УД - Уровень друида//
Вы можете действием совершить по одной дальнобойной атаке одним и тем же оружием по любому количеству видимых вами существ, находящихся в пределах 2 м от одной точки и в пределах дальности вашего оружия.
Вы можете попытаться [[скрыться|Скрытый]] от существа, находясь за [[полным укрытием|Укрытие]] от него, в [[сильно заслонённой|Зрение и свет]] местности, либо будучи [[невидимым|Невидимый]]. Вы не можете прятаться от существа, которое видит вас.
Когда вы пытаетесь спрятаться, совершите проверку Ловкости (Скрытность). Мастер сравнивает результат вашей проверки с пассивным значением Мудрости (Внимательность) существ от которых вы прячетесь. При успехе вы становитесь [[скрытым|Скрытый]] от этих существ.
Вы можете при помощи этой особой рукопашной атаки попытаться схватить и обезвредить цель.
Цель вашего захвата должна находиться в пределах вашей досягаемости, а её размер не должен превышать ваш больше чем на одну категорию. Используя как минимум одну свободную руку, вы пытаетесь схватить цель, совершая проверку захвата: проверку Силы (Атлетика), противопоставленную проверке Силы (Атлетика) или Ловкости (Акробатика) цели (цель сама выбирает, какую характеристику использовать). Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше. Вы автоматически преуспеваете, если цель [[недееспособна|Недееспособный]]. При успехе цель становится [[схваченной|Схваченный]].
---
!!!Скручивание
Вы можете повторно совершить эту особую атаку по [[схваченному|Схваченный]] вами существу с целью скрутить его. При успехе цель становится [[опутанной|Опутанный]]. При провале цель высвобождается из захвата.
//''Живой щит.''// Вы можете использовать [[опутанное|Опутанный]] вами существо в качестве живого щита. Для этого потратьте половину своей скорости и совершите проверку захвата. При успехе вы получаете [[укрытие на половину|Укрытие]], если [[опутанное|Опутанный]] существо вашего размера, или [[укрытие на три четверти|Укрытие]], если опутанное существо больше вас.
//''Удушение.''// Вы можете попробовать задушить [[опутанное|Опутанный]] вами существо. Для этого повторно совершите эту особую атаку. При успехе цель начинает [[задыхаться|Удушье]].
В начале своего хода вы должны повторять эту особую атаку, чтобы продолжать душить цель.
Удушение оканчивается, если цель перестаёт быть [[опутанной|Опутанный]] вами. Вы можете прекрать душить цель досрочно в любое время (действие не требуется).
Эта атака не имеет эффекта на существ, которым не нужно дышать, или обладающих формой, непригодной к физическому удушению. По усмотрению Мастера, доспех существа может защищать его от этой атаки.
---
!!!Сковывание
Вы можете повторно совершить эту особую атаку, используя вторую свободную руку, по [[схваченному|Схваченный]] и [[опутанному|Опутанный]] вами существу, размер которого не больше вашего, с целью прижать его к твёрдой поверхности и обездвижить его конечности. При успехе цель становится [[скованной|Скованный]], а вы становитесь [[опутанным|Опутанный]]. При провале цель высвобождается из захвата.
В начале своего хода, вы должны повторять эту особую атаку, чтобы удерживать цель в [[скованном |Скованный]] состоянии.
После успешного совершения этой особой атаки с целью [[сковать|Скованный]] существо, вы можете совершить особую атаку [[Обезоруживание|Обезоруживание]] бонусным действием.
---
Вы в любой момент можете отпустить цель (действие не требуется).
//''Высвобождение из захвата.''// Схваченное существо может пытаться высвободиться. Для этого оно действием совершает проверку Силы (Атлетика) или Ловкость (Акробатика), противопоставленную вашей проверке Силы (Атлетика).
//''Перемещение схваченного существа.''// Если вы перемещаетесь, вы можете тащить или нести схваченное существо вместе с собой, но ваша скорость уменьшается вдвое, если только существо не меньше вас как минимум на две категории.
//''Изменение размера.''// Если ваш размер уменьшается, или размер схваченного существа увеличивается, вы должны преуспеть в проверке Силы (Атлетика), противопоставленной проверке Силы (Атлетика) или Ловкости (Акробатика) цели (цель сама выбирает, какую характеристику использовать), иначе цель высвободится из захвата.
//''Атака по схватившему существу.''// Если другое существо схватило вас, вы можете атаковать конечность, которую оно использовало для захвата, а не само существо (это может быть полезно, если схвативший находится вне пределов вашей досягаемости). У этой конечности те же характеристики, что и у ее владельца, если только характеристики конечности не указаны отдельно. Когда вы атакуете придаток схватившего вас существа вместо самого существа, наносимый вами урон уменьшается вдвое.
* Вы не можете перемещаться, а также совершать действия и реакции.
Зачарование - сложная и дорогая профессия, но многие жаждут ее освоить. Создатели чудес, мастера удивительного, никакая другая профессия не привлекает искателей приключений так, как Зачарователь, ведь их сфера деятельности охватывает большинство магических предметов.
Зачарователь может превратить даже самый обычный и заурядный предмет в нечто чудесное и могущественное, а если ему дать фору в работе с уже отлично изготовленным предметом, он может создать вещь, о которой сложат легенды. Это своего рода шаблоны, поэтому умение создавать свитки часто является самым востребованным умением для зачарователя.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления магического предмета в самой простой форме:
* Выберите магический предмет, который вы хотите изготовить, из таблицы Зачаровывание.
* Приобретите предметы, перечисленные в колонке Материалы для этого предмета.
* Используйте свой навык Магия для изготовления предмета в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку навыка Интеллект (Магия).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Зачаровывание основано на использовании навыка Магия и использует ваш модификатор Интеллекта. Хотя магия существует во многих формах (арканная, первородная, божественная), способность систематически связывать её в магические предметы требует глубокого понимания её внутренней работы, которое может быть достигнуто только путем тщательного изучения и познания.
<<<
//''Псионические предметы''//
//Предметы, перечисленные в таблице "Псионические предметы", являются исключением из этого правила. Это предметы, наделенные псионической силой, и вместо нее они используют навык "Псионика" - навык, которым может владеть любой персонаж-псионик, если вы не используете особые правила псионики.//
//Эти предметы являются чем-то вроде подтипа зачарования, и могут не существовать в вашем сеттинге, если псионика не включена в него. Проконсультируйтесь с вашим Мастером. //
<<<
---
!!!Материалы: эссенции и компоненты
Материалами для зачарования являются эссенции и компоненты. [[Эссенции]] Они бывают четырёх видов: ''арканные'', ''божественные'', ''первородные'' и ''псионические'', а также пяти редкостей: обычная, необычная, редкая, очень редкая и легендарная. Что именно представляют собой эссенции, может сильно варьироваться, поскольку они являются элементами внутренней магии, которые используются для питания творений зачарователя. Это могут быть органы магических монстров (например, сердце дракона, которое представляет собой редкую первородную эссенцию), или синтезированные из [[реагентов|Реагенты]] магические соединения.
Компоненты - это широкая категория предметов, начиная от базового предмета, который вы зачаровываете, и заканчивая любыми дополнительными элементами, которые необходимо добавить. Одним из уникальных компонентов, присутствующим во многих зачарованиях, является //свиток заклинания//, который определяет основу магии, заключённой в предмет.
---
!!!Проверка ремесла
Когда вы хотите поработать над зачаровыванием, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор зачаровывания = бонус мастерства навыком Магия + модификатор Интеллекта
```
!!!Успех и провал
Для зачаровывания, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
Если существо, которое вы видите, атакует не вас, а другое существо, находящееся в пределах 1 м от вас, вы можете реакцией создать помеху его броску атаки. Для этого вы должны использовать щит.
Если у вас уже есть умение Защита без доспехов, вы не можете получить его ещё раз от другого класса.
Если существо попадает по вам атакой, вы получаете бонус +4 к КД против всех последующих атак этого существа до конца этого хода.
<<<
Вы способны создавать кратковременный щит из телекинетической силы.
<<<
Когда вы или другое видимое вами существо в пределах 6 м от вас, получает урон, вы можете реакцией потратить одну Кость Псионической энергии, чтобы уменьшить урон на величину, равную броску вашей Кости Псионической энергии + ваш модификатор Интеллекта (минимум на 1).
//Требование: 17 уровень//
Вы можете потратить 6 очков ци, чтобы сотворить заклинание //каменная стена//.
Когда вы совершаете дальнобойную атаку оружием, вы можете потратить 1 очко ци, чтобы игнорировать помеху на атаки эти оружием по целям, находящимися за пределами эффективной дальности, до конца этого хода.
Основные задачи в приключениях — заметить опасность, найти спрятанные предметы, попасть по врагу, нацелить заклинание — сильно зависят от способности персонажа видеть. Темнота и прочие эффекты, мешающие зрению, вызывают большие затруднения.
---
Область может быть слабо или сильно заслонённой. В ''слабо заслонённой'' области, например, в области тусклого света, в тумане, листве, существа совершают проверки Мудрости (Внимательность), полагающиеся на зрение, с помехой.
''Сильно заслонённая'' местность — такая как тьма, густой туман или густая листва — полностью блокирует зрение. Существа, находящиеся в такой местности, фактически считаются [[ослеплёными|Ослеплённый]], а также [[невидимыми|Невидимый]] для существ, пытающихся рассмотреть их.
---
Наличие или отсутствие света создаёт три категории освещения: яркий свет, тусклый свет и тьму.
''Яркий свет'' позволяет большинству существ видеть хорошо. Даже пасмурный день предоставляет яркий свет, равно как факелы, фонари, костры и прочие источники света в определённом радиусе.
''Тусклый свет'', также называемый тенью, создаёт ''слабо заслонённую'' местность. Область тусклого света обычно находится между источником яркого света, таким как факел, и окружающей тьмой. На рассвете и закате свет тоже тусклый. Яркая луна в полнолуние освещает землю тусклым светом.
''Темнота'' создаёт ''сильно заслонённую'' местность. Персонажи оказываются в темноте по ночам (когда не светит луна), в коридорах подземелий и в областях магической тьмы.
---
!!!Сумеречное зрение
Существа с сумеречным зрением при тусклом освещении могут видеть так, как будто это яркое освещение.
!!!Ночное зрение
Существа с ночным зрением при тусклом освещении могут видеть так, как будто это яркое освещение, а в темноте так, как будто это тусклое освещение. Ночное зрение не позволяет различать цвета, только оттенки серого, если не сказано обратное.
!!!Слепое зрение
Существо со слепым зрением может воспринимать своё окружение в определённом радиусе, не полагаясь на зрение. Этим чувством обладают существа без глаз, такие как слизь, и существа с эхолокацией или обострёнными чувствами, такие как летучие мыши и драконы.
!!!Истинное зрение
Существа с истинным зрением могут в определённом радиусе видеть в обычной и магической темноте, видеть невидимые существа и предметы, автоматически обнаруживать зрительные иллюзии и преуспевать в спасбросках от них, и видеть истинный облик перевёртышей и существ, превращённых магией. Кроме того, зрение таких существ простирается на Эфирный План.
|!Игровой набор |!Цена | !Вес|
|Драконьи шахматы |1 см | 0.25 кг|
|Карты |5 мм | -|
|Кости |1 мм | -|
|Ставка трёх драконов |1 см | -|
Владение игровым набором применяется к одному виду игры, например, к ставке трёх драконов или к азартным играм, использующим кости. В таблице указаны примеры игр, но есть и другие наборы.
//''Компоненты.''// Игровой набор включает в себя всё необходимое для конкретной игры или группы игр, как, например, полная колода карт или доска и фигуры.
//''История.''// Ваше мастерство в игре включает в себя знания о её истории, а также знания о важных событиях и известных исторических фигурах, связанных с игрой.
//''Проницательность.''// Сыграть с кем-то – это отличный способ понять его характер и что он из себя представляет, что в свою очередь позволяет вам лучше распознавать ложь и определять его настроение.
//''Ловкость рук.''// Ловкость рук – это полезный навык для мухлежа в игре, поскольку позволяет вам менять местами фигуры, прятать карты или менять неудачный результат броска кости. С другой стороны, увлечь цель игрой, требующей совершения ловких движений – хорошее отвлечение при карманной краже.
|!Действие| !Сл |
|Поймать игрока на мухлеже | 15 |
|Понять характер оппонента | 15 |
<div class="tc-table-of-contents">
<<toc-selective-expandable "Игровой процесс">>
</div>
<<<
Вы используете магию ограждения, чтобы попытаться временно изгнать свою цель в безвредное место в Стране Фей.
<<<
Существо, по которому попал выстрел, должно преуспеть в спасброске Харизмы, иначе будет изгнано. Будучи изгнанным существо становится [[недееспособным|Недееспособный]], а его скорость равна 0. В конце своего следующего хода, цель возвращается в пространство, из которого исчезла, или ближайшее свободное пространство, если то место занято.
После достижения вами 18 уровня в этом классе, этот выстрел наносит дополнительно 2к6 урона силовым полем при попадании.
<<<
//Для использования более глубокой системы изготовления предметов обратитесь к разделу [[Ремесло]].//
<<<
Персонаж, у которого есть время, деньги и необходимые инструменты, во время простоя может изготовить броню, оружие, одежду или другое немагическое снаряжение.
//''Ресурсы и определение результата.''// Помимо инструментов для создания предмета персонажу требуются материалы, цена которых равна половине цены продажи предмета. Чтобы определить, сколько рабочих недель на это потребуется, разделите эту цену в серебре на 50. Персонаж может изготовить несколько предметов в течение рабочей недели, если их общая цена не превышает 50 см. Для изготовления предметов, цена которых превышает 50 см, требуется потратить больше времени, а также требуется место, где можно безопасно оставить незаконченную работу.
Несколько персонажей могут объединить усилия. Разделите время работы на количество персонажей, которые занимаются созданием предмета. Мастер решает, сколько персонажей могут одновременно работать над предметом. Над маленьким предметом, например, кольцом, могут работать один или два персонажа, большой могут создавать 4 или больше персонажей.
Персонаж должен иметь владение инструментами, необходимыми для создания предмета, и иметь доступ к соответствующему оборудованию. Если персонажи изготавливают предмет совместно, каждый из них должен владеть соответствующими инструментами. В таблице ниже приведено несколько примеров.
|!Владение |!Предметы |
|Набор травника |Противоядие, зелье лечения |
|Инструменты кожевника |Кожаная броня, ботинки |
|Инструменты кузнеца |Оружие, броня |
|Инструменты ткача |Плащи, робы |
Если все вышеперечисленные требования выполнены, персонаж изготавливает предмет. Персонаж может продать предмет, изготовленный таким образом, по полной цене.
//''Изготовление магических предметов''//. Создание магического предмета требует не только времени, усилий и материалов. Это долгий процесс, включающий в себя одно или несколько приключений для поиска редких материалов и необходимых для создания предмета знаний.
//Зелья лечения //и //свитки заклинаний// – исключение из этого правила. Более подробно об этом читайте в разделах «Создание зелья лечения» и «Создание свитка заклинания».
Чтобы начать работу, персонажу необходима формула магического предмета, по которой он создаётся. Формула похожа на рецепт. В ней перечислены необходимые материалы и операции, необходимые для создания предмета.
Для завершения предмета обязательно требуется экзотический материал. Он может быть самым различным – от кожи йети до пузырька воды из водоворота на Стихийном плане Воды. Поиск этого материала может стать частью приключения.
Таблица «Ингредиенты для магических предметов» содержит показатель опасности существа, которое персонажи должны одолеть, чтобы получить материал для предмета. Обратите внимание, что одолеть существо – не обязательно означает собрать ингреди- ент с его тела. Более вероятно, что существо может охранять место или ресурс, который персонажи должны получить.
|!Редкость предмета |!Диапазон показателя опасности (ПО)|
|Обычный |1–3|
|Необычный |4–8|
|Редкий |9–12|
|Очень редкий |13–18|
|Легендарный |19+|
Помимо того, что герои встретятся с могучим существом, создание предмета требует больших денежных затрат, которые уйдут на прочие материалы, инструменты и многое другое, в зависимости от редкости предмета. Для любых расходуемых предметов уменьшите стоимость и затраченное время вдвое.
|!Редкость предмета |!Рабочие недели |!Цена|
|Обычный |1 |50 см|
|Необычный |2 |200 см|
|Редкий |10 |2000 см|
|Очень редкий |25 |20000 см|
|Легендарный |50 |100000 см|
Для создания магического предмета, персонаж должен владеть соответствующими инструментами (как и при создании обычного предмета) или навыком Магия. Если все вышеперечисленные требования выполнены, персонаж изготавливает магический предмет.
//''Осложнения''//. Большинство осложнений, связанных с созданием чего-либо, особенно магических предметов, связаны со сложностью поиска редких ингредиентов или компонентов, необходимых для завершения работы. Осложнения, с которыми персонаж может столкнуться в процессе создания, наиболее интересны. Когда персонаж работает над магическим предметом, на каждые 5 недель работы по созданию предмета с вероятностью 10% может возникнуть осложнение.
| !к6 |!Осложнение|
| 1 |Расходятся слухи о том, что вы работаете над чем-то нестабильным и угрожающим поселению.|
| 2 |У вас крадут инструменты, заставляя вас приобрести новые.|
| 3 |Местный волшебник проявляет сильнейшую заинтересованность в вашей работе и настаивает на том, чтобы понаблюдать за вашей работой.|
| 4 |Могущественный дворянин предлагает внушительную сумму за результат вашей работы и не желает принимать отказ.|
| 5 |Дварфийский клан обвиняет вас в краже тайных знаний, на которых основана ваша работа.|
| 6 |Соперник распускает слухи, что ваши изделия низкого качества и часто ломаются.|
//''Изготовление зелий лечения''//. Зелья лечения вынесены в отдельную категорию по созданию предметов. Персонаж, владеющий набором травника, может их изготовить. Время и серебро, необходимые для создания, указаны в таблице ниже.
|!Тип |!Время |!Цена|
|Зелье лечения |1 день |25 см|
|Зелье большого лечения |1 неделя |100 см|
|Зелье отличного лечения |3 недели |1,000 см|
|Зелье превосходного лечения |4 недели |10,000 см|
[img width=315 class="centerme" [https://i.imgur.com/K3y0h8S.png]]
<<tabs "[[Описание изобретателей]] [[Классовые умения изобретателей]] [[Специализации изобретателей]]" "" "$:/state/tab1">>
Ваш персонаж может совершать действия, не описанные в правилах, такие как выламывание дверей, запугивание врагов, поиски брешей в магической обороне или призывы к переговорам с врагами. Единственным ограничением будет ваше воображение и значения характеристик.
Когда вы описываете действие, не упомянутое в правилах, Мастер сообщает, возможно ли это действие, и какие проверки нужно совершить для определения успешности.
Когда вы хотите совершить движение, не описанное в правилах, Мастер решает возможно ли это и назначает Сл проверки.
Инженерное дело - это академическое искусство превращения рабочей силы и материалов в грандиозные творения. В самых малых масштабах оно используется в практических целях, например, для создания осадных орудий, но может достигать масштабов строительства мостов, зданий и даже кораблей. Инженер - очень востребованный ресурс для любого правителя или королевства, но он обладает знаниями, которые смекалистые приключенцы иногда могут применить с пользой.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги создания инженерного проекта в самой простой форме:
* Выберите проект, который вы хотите создать, из таблицы [[Инженерное дело|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=15402725]].
* Если в этом есть потребность, соберите рабочую силу.
* Приобретите предметы, перечисленные в колонке Материалы для этого проекта.
* Используйте свои [[инструменты плотника|Инструменты плотника]] для создания проекта в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Интеллекта + ваш бонус мастерства [[инструментов плотника|Инструменты плотника]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Инженерное дело основано на использовании [[инструментов плотника|Инструменты плотника]]. Попытка создать инженерный проект без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на создание таких проектов. Инженерное дело использует ваш модификатор Интеллекта.
---
!!!Материалы
Инженерное дело использует материалы в большем количестве, чем другие виды ремесел. Они представлены в "единицах" материалов. Они могут быть непосредственно собраны оптом или представлять собой наборы похожих отдельных материалов.
|!Материал | !Цена |
|Единица древесины | 1 см |
|Единица камня | 1 см |
|Единица строительного раствора | 1 мм |
!!!Заготовка древесины
Вы можете превратить деревья высотой не менее 6 м в единицы древесины. Дерево высотой 6 м даст 1 единицу древесины, и еще по единице древесины за каждые 3 м высоты дерева. По усмотрению Мастера некоторые деревья могут быть непригодны для производства древесины. Для переработки деревьев в единицы древесины требуется 4 часа работы одного рабочего.
Единицу древесины можно перевести в 10 обычных ветвей.
!!!Добыча камня
Добыча камня значительно сложнее и находится на границе того, что пытается задать эта система. Как правило, если есть каменоломня, в которой можно добывать камень, 1 рабочий может добыть 1 единицу камня за 8 часов работы (1 единица в день). Рабочий с показателем характеристики Сила 18 или выше может добыть вдвое больше камня за тот же период времени.
Создание каменоломни выходит за рамки этой системы, но займет несколько дней или недель.
---
!!!Проверка ремесла
Когда вы хотите поработать над инженерным делом, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор инженерного дела = бонус мастерства инструментов плотника + модификатор Интеллекта
```
!!!Успех и провал
Для инженерного дела, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Рабочая сила
В отличие от большинства ремесел, инженерное дело может включать в себя крупные проекты, для которых требуются дополнительные рабочие руки. Рабочим может быть любое существо с показателем Силы 12 или выше, которое может понимать вас, поднимать и переносить предметы и готово работать на вас в течение всего времени. Вы можете стать своим собственным рабочим, если соответствуете требованиям. Существо с Силой 18 или выше или владеющее инструментами плотника может считаться квалифицированным рабочим и считается за двух рабочих. Два существа с недостаточным показателем Силы, но с показателем Силы 8 или выше, работающие вместе, могут считаться за одного рабочего, но только в течение 4 часов в день, после чего дальнейший труд влечет за собой одну степень истощения.
Дополнительная рабочая сила не ускоряет проект, хотя Мастер может решить, что это возможно в отдельном случае. Проверки могут быть выполнены при недостаточном количестве рабочей силы, если у вас есть половина необходимого количества рабочей силы, но в этом случае каждая проверка ремесла занимает 16 часов (2 дня).
Количество необходимых рабочих зависит от масштаба проекта, согласно следующей таблице:
|!Масштаб проекта | !Необходимо рабочих |
|Маленький | 0 |
|Средний | 0 |
|Большой | 1 |
|Огромный | 2 |
|Громадный (10x10 м) | 3 |
|Колоссальный (12x12+ м) | 4+ |
!!!Колоссальные проекты
Для колоссальных проектов требуется по одному рабочему на каждый дополнительный квадрат 6 на 6 м проекта, свыше 12 на 12 м. Например, чтобы построить мост длиной 60 м и шириной 12 м, вам потребуется в пять раз больше рабочих (20 рабочих), чтобы обеспечить 8-часовую проверку ремесла.
Каждому рабочему требуется свой набор инструментов для ремесла, хотя владение ими не обязательно. По усмотрению ГМа, инструменты каменщика или резчика по дереву могут заменить инструменты плотника для рабочих, если это уместно.
<<<
Three things cannot be long hidden: the sun, the moon, and the truth.
— Buddha
<<<
No force stands in greater opposition to the world's evils than the Church of the Silver Flame. Its holy warriors are embroiled in an eternal war against demons, devils, lycanthropes, and undead. Foremost among the Silver Flame's divine servants are the inquisitors of the Silver Flame. These individuals travel the world, devoting their lives to deeds that exemplify the faith's precepts.
As an inquisitor of the Silver Flame, you enjoy a powerful connection to the Silver Flame and have become a living vessel for the power that underpins the Church. The Voice of the Flame specifically selected you for this service, and it falls to you to uncover corruption and purge it from this world. You have hardened yourself against the grisly deeds you must preform to eliminate evil. You unleash the power of your faith upon your enemies, scorching them with flames that purify the iniquitous and bolster the righteous.
Whenever you use your prayers, a small silver flame appears above your head to identify the holiness of your cause and the stature of your position within the Church.
''Inquisitors in the World:'' While many champions of good are dedicated to fighting forces of evil that are external to them and their church—as clerics and paladins of the Silver Flame are devoted to destroying followers of the Devourer— the inquisitor of the Silver Flame is at least as concerned about evil and corruption within. When greed eats away at a church hierarchy, when devils infiltrate a knightly order and seduce its leaders to evil, when high clerics succumb to evil enchantments and fall from the path of their deities, it is usually a church inquisitor who uncovers this kind of taint and cuts it away.
Inquisitor of the Silver Flame specialize in seeking out evil and corruption and protecting themselves and others from evil magic. They are most often drawn from the clerics or paladins of a lawful church or order.
Player characters might encounter NPC inquisitors of the Silver Flame if they are involved in a lawful church or order— perhaps even as subjects of the inquisitor’s investigations. Inquisitor of the Silver Flame are particularly likely to appear after incidents involving demons or devils, since they combat the widespread corruption these creatures tend to leave in their wake.
''Adaptation:'' As written, this prestige class is specific to Eberron—but in your campaign it certainly could be associated with any lawful church or order. Perhaps a particular church has an “Order of the Watchful Eye” that functions as an internal-affairs department for the paladins and clerics in other orders. Or a theocracy might have an FBI- style organization full of inquisitors that investigate demon- spawned crimes across the nation. Or in a specific example, clerics and paladins of Heironeous are devoted to destroying followers of Hextor.
---
!!Инквизитор
| !Ранг | !Звание |!Умения |
| !1 | Investigator |Warmth of Flame, Flame of Censure |
| !2 | Interrogator |Purity of Silver, Purity of Spirit |
| !3 | Questioner |Bolstered by Flame, Warding Flame |
| !4 | Inquisitor |Silver Flame Inspiration, Pierce Magic, Silver Inquisition, Silver Brand |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Законно-доброе или законно-нейтральное.
* ''Владение навыками.'' Магия, Религия.
* ''Особое.'' Должен быть членом законно-доброй церкви или религиозного ордена.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Warmth of Flame
You gain a bonus on saving throws against spells equal to one half your rank in the Order of the Silver Flame rounded up.
!!!Flame of Censure
<<<
You unleash a wave of flames that incinerates the unrighteous.
<<<
//Rank 1 Prayer (Recharges on a short or long rest)//
As an action, each enemy in a 15-foot cone originating from you must succeed on a Constitution saving throw or take 1d6 fire damage and 1d6 radiant damage. Also, on a failed save, the target is blinded until the end of your next turn.
If the target is a demon, a devil, a shapechanger, or an undead, on a failed save, it takes a total of 2d6 fire damage and 2d6 radiant damage and until the end of your next turn, all attack rolls against the target have advantage.
---
!!Ранг 2
!!!Purity of Silver
When you finish a long rest, you can anoint one weapon you are proficient with. Your chosen weapon counts as silvered and magical for the purposes of overcoming damage reduction. When you deal damage with this weapon, the DC of any Constitution saving throw to maintain concentration is increased by 5.
You can only have one weapon anointed at a time. When you anoint a new weapon, the old one fades. Only you can benefit from the special bonuses of your anointed weapon.
!!!Purity of Spirit
Beginning at rank 2, your spirit becomes pure and radiant. You gain immunity to charm and dominate as long as you are in good standing with the Church.
---
!!Ранг 3
!!!Bolstered by Flame
Starting at rank 3, whenever you deal fire damage, you and one ally within 25 feet of you gain temporary hit points equal to your Wisdom modifier (minimum 1).
!!!Warding Flame
<<<
You summon a silver flame that bolsters allies and punishes foes.
<<<
//Rank 3 Prayer (Recharges on a long rest) //
As an action, you create a 15-foot radius sphere of silver flame centered on a point you can see within 50 feet of you. The sphere creates a zone that lasts for up to 1 minute, you must concentrate on this effect as if concentrating on a spell.
You and your allies within the zone gain resistance to fire damage, radiant damage, and gain a +2 bonus to AC and saving throws.
Whenever any enemy within the zone takes fire damage or radiant damage, they take an extra 1d8 damage of that type. Additionally, enemies within the zone suffer a -2 penalty to AC and saving throws.
---
!!Ранг 4
!!!Silver Flame Inspiration
When you spend an inspiration to gain advantage on an attack, all of your attacks deal an extra 1d10 fire damage and 1d10 radiant damage until the end of your next turn.
!!!Pierce Magic
You gain the ability to pierce through the magic of those who would stand against the righteous. You can add dispel magic to your list of known or prepared spells. This does not count against the number of spells you can know or prepare. You can cast it once without expending a spell slot and it never costs material components. You must finish a long rest before you can cast it again in this way.
Additionally, you gain advantage on any ability checks to dispel magic, and on saving throws and ability checks against illusions.
!!!Silver Inquisition
When you deal damage to a fiend, shapechanger, or undead with fire or radiant damage, you can reroll any damage die roll of 1 or 2. You must use the die roll even if the new roll is a 1 or a 2.
!!!Silver Brand
<<<
A tongue of fire erupts on your foe's brow.
<<<
//Rank 5 Prayer (Recharges on a long rest) //
As an action, one creature you can see within 50 feet of you must make a Constitution saving throw. On a failed save, the target takes 4d10 fire damage and 4d10 radiant damage, and the target is branded for 1 minute. On a successful save, the target takes half as much damage, and is branded until the end of your next turn.
While branded, the target is blind and incapable of taking reactions. Additionally, if the target is a fiend, shapechanger, or undead, it also takes 2d12 fire damage and 2d12 radiant damage at the start of each of its turns. The target can make a Constitution saving throw at the end of each of its turns, ending this brand on a success.
Ваши раса, класс, предыстории и черты могут давать владение некоторыми инструментами. Владение инструментом позволяет добавлять бонус мастерства к проверкам характеристик, совершенным при использовании этих инструментов. Использование инструментов не привязано к какой-то одной характеристике, так как владение инструментом отражает широкие познания в его использовании. Например, Мастер может попросить вас совершить проверку Ловкости для вырезания мелких деталей инструментом резчика по дереву, или проверку Силы для вырезания чего-то из очень твёрдого дерева.
---
!!!Описания инструментов
//''Компоненты.''// В этом абзаце приводится информация о том, из чего состоит набор инструментов. Персонаж, владеющий набором, знает, как пользоваться всеми его составными частями.
//''Навыки.''// Каждый инструмент может предоставить преимущество на проверку, когда используется совместно с соответствующим навыком, при условии, что персонаж владеет как инструментом, так и навыком.
//''Особое применение.''// Владение инструментом обычно представлено со специфической полезностью в виде особого применения, приведённого в этом абзаце.
//''Примеры Сл.''// Таблица в конце каждого раздела приводит действия, для выполнения которых может быть использован инструмент, и примерную Сл для необходимых проверок характеристик.
---
<<tabs "[tag[Виды инструментов]]" "" "$:/state/tab1">>
''Цена'': 25 см. ''Вес'': 2 кг.
Инструменты алхимика позволяют персонажу создавать полезные варева, такие как кислота или алхимический огонь.
//''Компоненты.''// Инструменты алхимика включают в себя две стеклянные мензурки, металлический каркас, удерживающий мензурку над открытым пламенем, стеклянную палочку для размешивания, небольшие ступку и пестик, мешочек обычных алхимических ингредиентов, включающих в себя соль, измельчённое железо и дистиллированную воду.
//''Магия.''// Владение инструментами алхимика позволяет вам раскрыть больше информации при проверках Магии, связанных с зельями и подобными веществами.
//''Анализ.''// Когда вы осматриваете область в поиске улик, владение инструментами алхимика даёт дополнительные знания о том, какие химикаты и прочие вещества использовались в области.
//''Алхимическое ремесло.''// Вы можете использовать владение инструментами для создания алхимических предметов. Персонаж может потратить деньги, чтобы собрать сырьё, которое весит 0.5 кг за каждые использованные 50 см. Как часть продолжительного отдыха вы можете использовать инструменты алхимика, чтобы сделать одну порцию кислоты, алхимического огня, противоядия, масла, духов или мыла. Вычтите половину стоимости созданного предмета из суммарной стоимости собранного вами сырья.
|!Действие| !Сл |
|Создать клубы густого дыма | 10 |
|Опознать яд | 10 |
|Опознать вещество | 15 |
|Устроить поджог | 15 |
|Нейтрализовать кислоту | 20 |
''Цена'': 10 см. ''Вес'': 1 кг.
Инструменты гончара используются для создания различных керамических предметов, наиболее распространённые из них – это горшки и подобные сосуды.
//''Компоненты.''// Инструменты гончара включают в себя гончарные иглы, цикли, скребки, нож и кронциркуль.
//''История.''// Ваши знания и опыт помогают вам опознавать керамические предметы, получая сведения о том, когда они были сделаны и из каких мест или какой культуры они происходят.
//''Анализ, Внимательность.''// Вы получаете дополнительные знания при осмотре керамики, находя зацепки, которые другие могут не заметить, на небольших неровностях и сколах.
//''Воссоздание облика.''// Рассмотрев керамические черепки, вы можете определить происхождение предмета, его изначальную форму и возможное предназначение.
|!Действие| !Сл |
|Определить, что было в сосуде | 10 |
|Создать прочный горшок | 15 |
|Найти слабое место керамического предмета | 20 |
''Цена'': 10 см. ''Вес'': 2 кг.
Каллиграфия трактует письмо как прекрасное утончённое искусство. Каллиграфы создают текст, который радует глаз, используя стиль, который сложно подделать. Их инструменты также дают им возможность исследовать рукописный текст и определить его подлинность, поскольку обучение каллиграфа включало в себя множество часов обучения письму и попыток повторить его стиль и оформление.
//''Компоненты.''// Инструменты каллиграфа включают в себя чернила, множество пергаментных листов и три писчих пера.
//''Магия.''// Хотя каллиграфия мало помогает в расшифровке содержимого магического текста, владение этими инструментами помогает определить, кто написал магический текст..
//''История.''// Владение этими инструментами может увеличить выгоду при успешной проверке, совершаемой для анализа или исследования древних записей, свитков или другого текста, включая руны, вырезанные на камне, а также письмена на фресках или других изображениях.
//''Расшифровка карты сокровищ.''// Владение этими инструментами позволяет вам проводить экспертизу карт. Вы можете пройти проверку Интеллекта, чтобы оценить возраст карты, определить, содержит ли карта скрытое послание, и так далее.
|!Действие| !Сл |
|Опознать писавшего немагический рукописный текст | 10 |
|Определить душевное состояние писавшего | 15 |
|Распознать поддельный текст | 15 |
|Подделать подпись | 20 |
''Цена'': 10 см. ''Вес'': 4 кг.
Инструменты каменщика позволяют вам возводить каменные строения, включая стены и здания из кирпича.
//''Компоненты.''// Инструменты каменщика включают в себя мастерок, молоток, долото, щётки и угольник.
//''История.''// Ваш опыт помогает вам определять дату постройки и предназначение каменного здания, а также понять, кто мог его построить.
//''Анализ.''// Вы получаете дополнительные знания при обследовании помещений в каменном здании.
//''Внимательность.''// Вы замечаете неровности на каменных стенах и полах, что облегчает поиск ловушек и тайных ходов.
//''Снос.''// Ваши познания в каменном зодчестве позволяют вам найти уязвимые места в кладке каменных стен. Вы наносите таким строениям двойной урон своими атаками оружием.
|!Действие| !Сл |
|Продолбить долотом небольшое отверстие в каменной стене | 10 |
|Найти слабое место в каменной стене | 15 |
''Цена'': 15 см. ''Вес'': 3 кг.
Используя инструменты картографа, вы можете составить достоверную карту, чтобы сделать путешествие проще для вас и для тех, кто пойдёт здесь после вас. Это может быть, как крупномасштабная карта, описывающая горные хребты и перевалы, так и схема, показывающая планировку уровня подземелья.
//''Компоненты.''// Инструменты картографа включают в себя писчее перо, чернила, пергамент, циркуль, кронциркуль и линейку.
//''Магия, История, Религия.''// Вы можете использовать ваши познания в картах и различных местах, чтобы извлекать более детальную информацию при использовании этих навыков. Например, вы можете найти скрытое послание на карте, установить, когда была составлена карта, чтобы определить, какие географические особенности изменились с тех пор и так далее.
//''Природа.''// Ваше знакомство с физической географией облегчает вам поиск ответов на вопросы и разрешение проблем, касающихся окружающей местности.
//''Выживание.''// Ваше понимание географии облегчает поиск пути к цивилизации, позволяет прогнозировать, в какой местности могут быть найдены деревни или городки, и уменьшает вероятность того, что вы заблудитесь. Вы изучили так много карт, что общие тенденции, например, как развиваются торговые маршруты или в каких местах обычно строят поселения, вам хорошо знакомы.
//''Составление карты.''// Путешествуя, вы можете рисовать карту в дополнение к участию в других действиях.
|!Действие| !Сл |
|Определить возраст и происхождение карты | 10 |
|Прикинуть направление и расстояние до ориентира | 15 |
|Распознать что карта поддельная | 15 |
|Дорисовать недостающий кусок карты | 20 |
''Цена'': 5 см. ''Вес'': 2 кг.
Познания в кожевенном деле распространяются на знания о шкурах животных и их свойствах. Они также включают в себя знания о кожаных доспехах и аналогичных вещах.
//''Компоненты.''// Инструменты кожевника включают кожевенный резак (нож), небольшую киянку, канавкорез, пробойник, нить и куски кожи.
//''Магия.''// Ваши знания и опыт в работе с кожей даёт вам дополнительные знания при обследовании магических предметов, сделанных из кожи, как, например, ботинки или некоторые плащи.
//''Анализ.''// Вы получаете дополнительные знания, когда исследуете кожаные предметы или улики, связанные с ними, также вы используете свои познания в кожевничестве, чтобы находить зацепки, которые другие могут не заметить.
//''Опознание кожи.''// Смотря на кусок кожи или кожаный предмет, вы можете определить источник кожи и любые особые методы, использованные в её обработке. Например, вы можете обнаружить разницу между кожей, выделанной с использованием дварфийских методик, и кожей, выделанной с использованием методик полуросликов.
|!Действие| !Сл |
|Изменить внешний вид кожаного предмета | 10 |
|Определить прошлое кожаного предмета | 20 |
''Цена'': 20 см. ''Вес'': 4 кг.
Инструменты кузнеца позволяют вам работать с металлом, нагревая его для изменения формы, восстанавливая повреждения или создавая из слитков полезные предметы.
//''Компоненты.''// Инструменты кузнеца включают в себя молоты, клещи, уголь, ветошь и точильный камень.
//''Магия, История.''// Ваш опыт даёт вам дополнительные знания при обследовании металлических предметов, таких как, например, оружие.
//''Анализ.''// Вы можете обнаруживать зацепки, которые другие могут не заметить, когда расследование касается брони, оружия или прочих изделий металлообработки.
//''Починка.''// При наличии доступа к инструментам и открытому огню, жара которого достаточно, чтобы сделать металл пластичным, вы можете восстановить по 10 хитов повреждённого металлического предмета за каждый час работы.
|!Действие| !Сл |
|Наточить затупившийся клинок | 10 |
|Починить комплект доспехов | 15 |
|Разъединить немагический металлический предмет | 15 |
''Цена'': 25 см. ''Вес'': 1 кг.
Владение инструментами навигатора помогает вам определить истинный курс, основываясь на наблюдении за звёздами. Они также позволяют вам разбираться в чтении схем и карт, благодаря выработанному у вас чувство направления.
//''Компоненты.''// Инструменты навигатора включают в себя секстант, компас, кронциркуль, линейку, пергамент, чернила и писчее перо.
//''Выживание.''// Умение обращаться с инструментами навигатора помогает вам не заблудиться и даёт знания о наиболее вероятном расположении дорог и населённых пунктов.
//''Определение положения.''// Проведя тщательные измерения, вы можете определить своё положение на морской навигационной карте и время суток.
|!Действие| !Сл |
|Проложить курс | 10 |
|Определить своё местоположение на морской навигационной карте | 15 |
''Цена'': 50 см. ''Вес'': 1 кг.
Инструменты отравителя — это излюбленное средство воров, убийц и прочих сомнительных личностей. Они позволяют вам использовать яды и создавать их из различных веществ. Ваши познания в ядах также помогают вам излечивать от них.
//''Компоненты.''// Инструменты отравителя включают в себя стеклянные склянки, ступку и пестик, химические реагенты и стеклянную палочку для размешивания.
//''История.''// Ваша подготовка в использовании ядов может помочь вам при попытках вспомнить факты о печально известных отравлениях.
//''Анализ, Внимательность.''// Ваши познания в ядах научили вас быть осторожным, имея дело с этими веществами, тем самым помогая вам при обследовании отравленного предмета или при получении зацепок о событиях, связанных с ядами.
//''Медицина.''// Когда вы лечите жертву яда, ваша осведомлённость может дать вам дополнительные знания о том, как правильнее ухаживать за отравленным.
//''Природа, Выживание.''// Работа с ядами позволила вам получить знания о том, какие растения и животные ядовиты.
//''Обращение с ядами.''// Ваше владение позволяет вам аккуратно обращаться с ядами и использовать их без риска самому подвергнуться их действию.
|!Действие| !Сл |
|Опознать отравленный предмет | 10 |
|Определить эффект яда | 20 |
''Цена'': 20 см. ''Вес'': 4 кг.
Пивоварение – это искусство производства пива. Но этот процесс может использоваться не только для создания алкогольных напитков, но и для очищения воды. Для создания пива требуются недели на ферментацию, но всего несколько часов непосредственно на работу.
//''Компоненты.''// Инструменты пивовара включают в себя большую стеклянную бутыль, некоторое количество хмеля, сифон, змеевик и несколько футов трубок.
//''История.''// Владение инструментами пивовара даёт вам дополнительные знания при проверках Интеллекта (История), касающихся событий, важной частью которых был алкоголь.
//''Медицина.''// Владение этими инструментами предоставляет дополнительные знания, когда вы облегчаете страдания от алкогольного отравления, похмелья, или, когда используете алкоголь, чтобы притупить боль.
//''Убеждение.''// Крепкий напиток может помочь смягчить даже каменное сердце. Ваше владение инструментами пивовара может помочь вам угостить кого-то ровно таким количеством алкоголя, сколько понадобится для того, чтобы поднять ему настроение.
//''Дистилляция.''// Ваши знания пивоварения позволяют вам очищать воду, которая иначе была бы непригодной для питья. Как часть ночлега вы можете очистить до 20 л воды или 4 л как часть короткого отдыха. Алкоголики-смертники пьют отнюдь не воду, поэтому используют эти инструменты, чтобы гнать первач.
|!Действие| !Сл |
|Обнаружить яд или примесь в питье | 10 |
|Опознать алкоголь | 15 |
|Игнорировать эффект алкоголя | 20 |
''Цена'': 8 см. ''Вес'': 3 кг.
Навыки плотничества позволяют персонажу строить деревянные сооружения. Плотник может построить дом, хижину, деревянный шкаф или подобный предмет.
//''Компоненты.''// Инструменты плотника включают в себя пилу, молоток, гвозди, топор, угольник, линейку, кородёр, рубанок и стамеску.
//''История.''// Владение этими инструментами помогает вам определять назначение и происхождение деревянных строений и прочих больших деревянных объектов.
//''Анализ.''// Вы получаете дополнительные знания при обследовании области в деревянном здании, потому что вы знаете строительные хитрости, которые могут скрыть что-то в области при обследовании.
//''Внимательность.''// Вы можете заметить неровности на деревянных стенах и полах, что облегчает поиск ловушек и тайных ходов.
//''Скрытность.''// Вы можете быстро найти слабое место в деревянном полу, что облегчает вам определение мест, которые сломаются или заскрипят, если на них наступить.
//''Укрепление.''// За 1 минуту при наличии материалов вы можете укрепить дверь или окно. Сл броска на выбивание увеличивается на 5.
//''Временное укрытие.''// Как часть ночлега вы можете построить навес или подобное укрытие, чтобы ваша группа была укрыта от дождя или солнечного зноя на время отдыха. Поскольку оно было построено на скорую руку из первой попавшейся древесины, укрытие разваливается через 1к3 дня после постройки.
|!Действие| !Сл |
|Построить простое деревянное сооружение | 10 |
|Спроектировать сложное деревянное строение | 15 |
|Найти слабое место в деревянной стене | 15 |
|Снять дверь с петель | 20 |
''Цена'': 1 см. ''Вес'': 4 кг.
Жизнь искателя приключений тяжела. При наличии в компании повара ваша пища будет намного вкуснее, чем привычные галеты и сухофрукты.
//''Компоненты.''// Инструменты повара включают в себя металлический котёл, ножи, вилки, ложку для размешивания и половник.
//''История.''// Ваши знания кулинарных методик позволяют вам оценивать структуру социального развития, основываясь на гастрономических обычаях этой культуры.
//''Медицина.''// Оказывая лечение, вы можете превратить горькое или кислое лекарство в приятную на вкус стряпню.
//''Выживание.''// Добывая еду, вы можете использовать собранные вами ингредиенты, которые другие не смогли бы приготовить.
//''Приготовление еды.''// Как часть короткого отдыха вы можете приготовить вкусное блюдо, которое поможет вашим компаньонам восстановить силы. Этой еды хватает на количество существ равное 4 + ваш бонус мастерства. После завершения короткого отдыха, любое существо, съевшее особое блюдо и потратившее Кость Хитов на восстановление хитов, единожды восстаналивает дополнительно 1к4 хитов.
|!Действие| !Сл |
|Приготовить обычную пищу | 10 |
|Повторить блюдо | 10 |
|Обнаружить яд или примесь в еде | 15 |
|Приготовить изысканное блюдо | 15 |
''Цена'': 1 см. ''Вес'': 2 кг.
Инструменты резчика по дереву позволяют вам создавать сложные предметы из дерева, такие как деревянные фигурки или стрелы.
//''Компоненты.''// Инструменты резчика по дереву включают в себя нож, стамеску и маленькую пилу.
//''Магия, История.''// Ваш опыт даёт вам дополнительные знания при осмотре деревянных предметов, таких как статуэтки или стрелы.
//''Природа.''// Ваши познания о древесине дают вам дополнительные знания, когда вы изучаете деревья.
//''Починка.''// Как часть короткого отдыха вы можете починить один повреждённый деревянный предмет.
//''Сделать стрелы.''// Как часть короткого отдыха выможете сделать до пяти стрел. Как часть продолжительного отдыха вы можете сделать до двенадцати. Вы должны иметь под рукой древесину для изготовления стрел.
|!Действие| !Сл |
|Сделать небольшую деревянную фигурку | 10 |
|Вырезать замысловатый узор на древесине | 15 |
В эти наборы входят инструменты, необходимые для ремесла и торговли. Каждый набор связан со своим ремеслом, и для каждого из них требуется отдельное владение.
<<tabs "[tag[Инструменты ремесленников]nsort[]]" "Инструменты алхимика" "$:/state/tab1" "tc-vertical">>
''Цена'': 50 см. ''Вес'': 5 кг.
Набор инструментов ремонтника предназначен для того, чтобы чинить множество обычных предметов. И хотя вы не можете создать большинство из них инструментами ремонтника, вы можете починить порвавшуюся одежду, наточить затупившийся меч и подлатать истрепавшуюся кольчугу.
//''Компоненты.''// Инструменты ремонтника включают в себя различные ручные инструменты, нитки, иголки, точильный камень, куски ткани и кожи, небольшую банку клея (синюю изоленту пока, увы, не придумали).
//''История.''// Вы можете определить возраст и происхождение предмета, даже если у вас в наличии всего несколько осколков, оставшихся от оригинала.
//''Анализ.''// Когда вы осматриваете повреждённый предмет, вы узнаёте, как и насколько давно он был повреждён.
//''Починка.''// Вы можете восстановить по 10 хитов повреждённого предмета за каждый час работы. Для починки любого предмета вам необходим доступ к материалам, необходимым для ремонта. Для металлических предметов вам нужен доступ к открытому огню, жара которого достаточно, чтобы сделать металл пластичным.
|!Действие| !Сл |
|Временно починить повреждённый механизм | 10 |
|Починить предмет вдвое быстрее | 15 |
|Смастерить из хлама временный предмет | 20 |
''Цена'': 5 см. ''Вес'': 2 кг.
Несмотря на то, что профессия сапожника может показаться искателю приключений слишком простой, пара хороших сапог будет сопровождать персонажа и в труднопроходимой глуши, и в смертельных подземельях.
//''Компоненты.''// Инструменты сапожника включают в себя молоток, шило, нож, обувную колодку, ножницы, запас кожи и ниток.
//''Магия, История.''// Ваши знания об обуви помогают вам определить магические свойства зачарованных сапог или узнать историю подобных предметов.
//''Анализ.''// Обувь скрывает множество секретов. Вы можете узнать, где недавно был тот, чью обувь вы осматриваете на предмет грязи и поношенности. Ваш опыт в починке обуви облегчает вам определение того, как она была повреждена.
//''Уход за обувью.''// Как часть продолжительного отдыха, вы можете починить обувь ваших компаньонов. В течение следующих 24 часов до 6 существ по вашему выбору, носящих обувь, над которой вы поработали, могут путешествовать до 10 часов в день, не совершая спасброски от истощения.
//''Создание потайного отделения.''// За 8 часов работы вы можете добавить потайное отделение в пару обуви. Отделение может содержать в себе предмет до 7 см длинной и 3 см шириной и высотой. Вы совершаете проверку Интеллекта, добавляя ваш бонус мастерства за владение этими инструментами, для определения Сл проверки Интеллекта (Расследование), необходимой для нахождения отделения.
|!Действие| !Сл |
|Определить возраст и происхождение обуви | 10 |
|Найти потайное отделение в каблуке | 15 |
''Цена'': 30 см. ''Вес'': 2 кг.
Владеющий инструментами стеклодува не только умеет выдувать стекло, но также знает особые методики изготовления стеклянных предметов.
//''Компоненты.''// Инструменты стеклодува включают в себя трубку для выдувания, маленькую стеклодувную обкатку, катальник, развёртки и щипцы. Вам нужен источник тепла для работы со стеклом.
//''Магия, История.''// Ваши знания техник выдувания стекла помогают вам, когда вы изучаете стеклянный предмет, как, например, флакон с зельем или стеклянный предмет, найденный в сокровищах. Например, вы можете изучить, как стеклянный флакон с зельем изменился под действием своего содержимого, что поможет определить эффект зелья. (Зелье может оставить осадок, деформировать стекло или окрасить его).
//''Анализ.''// Когда вы изучаете область, ваши знания могут помочь вам, если улики включают в себя разбитые стекла или стеклянные предметы.
//''Определение слабого места.''// Потратив 1 минуту, вы можете найти слабое место стеклянного предмета. Любой урон, наносимый предмету при атаке по слабому месту, удваивается.
|!Действие| !Сл |
|Определить происхождение стекла | 10 |
|Определить, что когда-то содержал стеклянный предмет | 20 |
''Цена'': 1 см. ''Вес'': 2 кг.
Инструменты ткача позволяют вам шить одежду и подгонять её по фигуре.
//''Компоненты.''// Инструменты ткача включают в себя нитки, иголки и куски ткани. Вы умеете пользоваться ткацким станком, но подобное оборудование слишком громоздкое для транспортировки.
//''Магия, История.''// Ваш опыт даёт вам дополнительные знания при осмотре предметов гардероба, включая плащи и прочие накидки.
//''Анализ.''// Используя свои знания о процессе пошива одежды, при обследовании гобеленов, обивки, одежды и прочих тканых предметов, вы можете обнаруживать зацепки, которые другие могут не заметить.
//''Починка.''// Как часть короткого отдыха вы можете починить один повреждённый предмет одежды.
//''Пошив одежды.''// Как часть продолжительного отдыха вы можете создать одежду для существа при наличии достаточного количества ткани и ниток.
|!Действие| !Сл |
|Повторное использование ткани | 10 |
|Заштопать дырку в ткани | 10 |
|Подшить наряд | 15 |
''Цена'': 10 см. ''Вес'': 2 кг.
Владение инструментами художника позволяет вам писать красками и рисовать карандашом. Вы также разбираетесь в истории искусств, что может помочь вам при осмотре произведений искусства.
//''Компоненты.''// Инструменты художнику включают в себя мольберт, холст, краски, кисти, угольные карандаши и палитру.
//''Магия, История, Религия.''// Ваш опыт помогает вам раскрыть знания любого рода, которые связаны с произведениями искусства, как, например, магические свойства картины или происхождение странной фрески, найденной в подземелье.
//''Анализ, Внимательность.''// Когда вы осматриваете картину или подобное произведение изобразительного искусства, ваша осведомлённость о способах их создания может дать вам дополнительные знания.
//''Написание и рисование.''// Как часть короткого или продолжительного отдыха вы можете создать простое произведение искусства. Хотя ваше творение и может быть недостаточно точным, вы можете запечатлеть образ или сцену, или на скорую руку сделать копию виденного вами художественного произведения.
|!Действие| !Сл |
|Написать точный портрет | 10 |
|Создать картину со скрытым посланием | 20 |
''Цена'': 25 см. ''Вес'': 1 кг.
Владение инструментами ювелира включает в себя знание основных способов работы с драгоценностями. Также оно позволяет опознавать драгоценные камни.
//''Компоненты.''// Инструменты ювелира включают в себя небольшие пилу и молоточек, напильники, щипцы и пинцет.
//''Магия.''// Владение инструментами ювелира даёт вам знания об известных способах магического применения драгоценных камней. Эти знания будут кстати при проверках Магии, связанных с драгоценными камнями или инкрустированными ими предметами.
//''Анализ.''// При осмотре драгоценностей владение инструментами ювелира помогает вам находить зацепки, которые другие бы просмотрели.
//''Опознание драгоценности.''// Вы можете опознать драгоценность и на глаз определить её стоимость.
|!Действие| !Сл |
|Изменить внешний вид драгоценности | 15 |
|Определить прошлое драгоценности | 20 |
При сотворении заклинания, вынуждающего других существ совершить спасбросок, вы можете потратить 3 очка чародейства, чтобы одна из целей заклинания совершила первый спасбросок от этого заклинания с помехой.
<<<
The flesh is the key. It holds the secrets, the hidden words. It is the constant between man and beast and monster. It is a simple matter, once the way of the flesh is understood and embraced, to use it to your will. It should not be abhorred simply for its differences, because the eye can be retrained to find beauty in all things. For what is more beautiful than the primal flesh? It is simply the purest form of expression one can hope to achieve.
— Erkin Tiorki, Fleshwarper
<<<
The fleshwarper is destined to walk a lonely path, for few have the stomach to accept what they consider enjoyable. To a fleshwarper, there is no greater canvas than flesh itself. To reshape, reform, and rebuild the flesh into a new form is a closer step to divinity. To a fleshwarper, there are no taboos, only possibilities.
''Fleshwarpers in the World: ''Fleshwarpers don’t make new friends easily; their bizarre obsession with alien grafts makes them difficult creatures to approach. As a result, fleshwarpers live in out-of-the-way places, deep in the wilderness or underground. The few who live in large urban areas tend to be shut-ins and rely on allies or minions to run errands for them. Of course, exceptions exist; rare fleshwarpers take glee in displaying their bodies and discoveries to the world.
Too often, the lonely life of a fleshwarper leads to cruelty or insanity. Evil fleshwarpers are sadists who enjoy the torments they inflict on others as much as they enjoy the thrill of creating new grafts. The PCs might find themselves pitted against a small army of graft-enhanced minions with a fleshwarper as their leader. Aberrations are drawn to this prestige class as well; a fleshwarper mind flayer or grell would make a memorable villain.
''Fleshwarpers in the Game:'' Fleshwarpers make excellent villainous masterminds. Their minions can have numerous bizarre and deadly grafts to make them more dangerous, and the fleshwarper themself can be a memorable and unique villain. Yet they can also make interesting allies; a friendly fleshwarper can give PCs powerful grafts and assistance as rewards for accomplishing tasks, or as payment.
''Fleshwarper Lore.'' Characters proficient in arcana can research fleshwarpers to learn more about them. When a character makes an Intelligence (Arcana) check, read or paraphrase the following, including the information from lower DCs.
''DC 10:'' “Fleshwarpers are spellcasters who specialize in the construction of grafts.”
''DC 15:'' “Fleshwarpers have several minions that they use as guardians and experimental stock for their projects.”
''DC 20:'' “Not all fleshwarpers are evil; some merely seek ways to enhance their bodies. The majority of them are cruel and sadistic, though, and society as a whole should fear these individuals.”
''DC 25:'' Characters who achieve this level of success can learn important details about specific fleshwarpers, including the nature of their researches and possibly even what kind of grafts they and their minions have.
''Adaptation:'' Fleshwarpers are fairly insulated from the external factors of a campaign world; as long as your world has grafts in it, the fleshwarper can thrive more or less unadapted from the way the are presented here.
If you are using the Ebberon Campaign Setting, you might consider allowing artificers with a more biological bent to pursue this path.
---
!!Исказитель плоти
| !Ранг |!Умения |
| !1 |Expanded Spell List, Elder Secret, Graft Mastery |
| !2 |Aberrant Familiar |
| !3 |Rapid Grafting |
| !4 |Aberrant Apotheosis |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое, кроме законного.
* ''Владение навыками.'' Магия, Медицина.
* ''Заклинания. ''//Поиск фамильяра//.
---
!!Ранг 1
!!!Expanded Spell List
Your forbidden study lets you choose from an expanded list of spells. The following spells are added to the class list for you of one spellcasting class you have levels in.
| !УЗ |!Заклинания |
| !1 |//диссонирующий шёпот//, //руки Хадара//, //скороход// |
| !2 |//корона безумия//, //ночное зрение//, //обнаружение мыслей// |
| !3 |//голод Хадара//, //подводное дыхание//, //слияние с камнем// |
| !4 |//превращение//, //усыхание//, //Эвардовы чёрные щупальца// |
| !5 |//заражение//, //подчинение личности//, //связь с иным миром// |
//УЗ - Уровень заклинания//
!!!Elder Secret
<<<
Your continuous self-experimentation in grafting results in occasional improvements to your form.
<<<
At rank 1 and every rank thereafter, you make a powerful discovery in your research and learn how to improve your body in a subtle, minor way. Choose one elder secret from those described below, and another each time you attain a new rank in this path:
//''Secret of the Aboleth.''// You gain a swim speed equal to half your walking speed, and can hold your breath for a number of hours equal to your Constitution modifier +1 (minimum of 1 hour).
//''Secret of the Beholder.''// Your eyes protrude grotesquely from your head and move independently of each other. You gain advantage on Intelligence (Investigation) checks and Wisdom (Perception) checks related to seeing, and creatures gain no benefit from pack tactics or similar abilities.
//''Secret of the Choker.''// You become preternaturally quick and alert to danger. You can add your proficiency bonus on initiative checks and gain a bonus on Dexterity saving throws equal to half of your proficiency bonus.
//''Secret of the Destrachan.''// You gain resistance to thunder damage.
//''Secret of the Ettercap.''// You can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check.
//''Secret of the Gibbering Mouther.''// Your form becomes partially amorphous. When you are subject to a critical hit, roll a d20. On a roll of 15 or higher, the critical hit becomes a normal hit.
//''Secret of the Mind Flayer.''// You gain advantage on saving throws against charm and domination effects, and enchantment spells and abilities.
//''Secret of the Otyugh.''// You gain immunity to disease.
//Secret of the Umber Hulk.// Your AC when you're not wearing armor is 13 + your Dexterity modifier.
!!!Graft Mastery
You learn how to create and apply grafts normally not available to your race by studying forbidden tomes and consulting ancient nameless sources. When you first gain this feature, you choose a specific type of graft to associate with it. At each rank, you can select a new type of graft to add to the list. If you choose a graft type that normally requires the creator to be a member of that race (such as aboleth and illithid grafts, or fiendish or yuan-ti grafts), you ignore that restriction completely. You can select a new graft type every time you gain a fleshwarper rank.
You can create grafts of your chosen type and apply them to other creatures or to yourself. Creating a graft takes one day for each 1,000 gp in its price. To create a graft, you must use up raw materials costing half its price.
[[List of grafts|https://drive.google.com/file/d/15WowrhqHwsYLjCEp5rYbV-Skuses9FTQ/view?usp=sharing]].
---
!!Ранг 2
!!!Aberrant Familiar
<<<
Your familiar (if you have one) becomes tainted by your magic.
<<<
The familiar’s type changes to aberration, it gains darkvision out to 60 feet, and its form becomes warped. Your aberrant familiar gains one of the abilities described below, as chosen by you. At every rank you gain above 2st, your aberrant familiar gains another ability from those described below. You can’t choose the same ability twice. If you change the form of your familiar, you can choose new aberrant abilities for your new familiar based on your current fleshwarper rank.
Additionally, when you take the Attack action, you can forgo one of your own attacks to allow your familiar to make one attack of its own. If you already have this ability from another source, such as the Pact of the Chain from Warlock, you can instead command your familiar to attack as a bonus action on your turn.
Your aberrant familiar grants you a +2 bonus on all saving throws against charm effects and enchantment spells and abilities as long as the familiar is within 10 feet of you.
The abilities your aberrant familiar can have are as follows:
//''Amorphous Form.''// A familiar with this ability is immune to extra damage from critical hits and sneak attacks.
//''Scales.''// The familiar’s AC improves by 4. The familiar gains a +2 bonus on Constitution saving throws.
//''Size Increase.''// The familiar’s size becomes larger by one category. This size increase also grants your familiar a +4 bonus to its Strength and Constitution scores.
//''Tentacle.''// The familiar gains a tentacle attack as an unarmed strike with a reach of 5 feet. The attack deals 1d4 points of bludgeoning damage.
//''Wings.''// The familiar can fly at a speed of 40 feet. (If the familiar already has a fly speed, it instead increases by 20 feet.) The familiar gains a +2 bonus on Dexterity saving throws.
---
!!Ранг 3
!!!Rapid Grafting
Starting at rank 3, you can create grafts with shocking speed. Creating a graft with Graft Mastery now requires only 1 hour for each 1,000 gp.
---
!!Ранг 4
!!!Aberrant Apotheosis
At rank 4, you undergo a transformation into an aberration. Your type changes to aberration, and you gain darkvision out to 60 feet (if you already have darkvision it instead improves by 30 feet). Your hit point maximum increases by an amount equal to your character level, and it increases by 1 every time you gain a level.
Ваша способность использовать заклинания зависит как от суммы уровней классов заклинателей, так и от индивидуальных уровней в этих классах. Если сразу несколько ваших классов даруют вам умение Использование заклинаний, используйте приведённые ниже правила. Если вы мультиклассируетесь, но это умение есть только у одного класса, используйте правила, описанные для этого класса.
---
!!!Известные и подготовленные заклинания
Вы определяете, какие заклинания знаете и можете подготовить для каждого класса индивидуально, как если бы других классов просто не было.
Все известные вам заклинания подготавливаются в рамках одного из классов, и при накладывании этого заклинания вы используете базовую характеристику этого класса. Точно так же фокусировки заклинаний, такие как священные символы, могут использоваться только классами, использующими эту фокусировку.
Если ваш заговор усиливается на более высоких уровнях, в расчёт берётся уровень вашего персонажа, а не отдельного класса.
---
!!!Ячейки заклинаний
[[Онлайн-калькулятор ячеек заклинаний при мультклассировании|http://fexlabs.com/5eslots/]]
Количество имеющихся ячеек заклинаний вы определяете, суммируя уровни:
* [[барда|Бард]], [[волшебника|Волшебник]], [[друида|Друид]], [[жреца|Жрец]] и [[чародея|Чародей]]
* половины уровней (округляя вниз) [[паладина|Паладин]] и [[следопыта|Следопыт]]
* половину уровней (округляя вверх) [[изобретателя|Изобретатель]]
* треть уровней [[воина|Воин]] или [[плута|Плут]] (округляя вниз), если у вас есть умения [[Мистический рыцарь]] или [[Арканный трюкач]] соответственно.
Получив сумму, определите по приведённой таблице количество имеющихся ячеек заклинаний разных уровней.
Результат из таблицы может дать ячейки заклинаний таких уровней, каких вы не знаете или не можете подготавливать. Вы можете использовать эти ячейки для заклинаний с меньшим уровнем. Если накладываемое вами низкоуровневое заклинание, такое как огненные ладони, обладает усиленным эффектом при использовании ячейки более высокого уровня, вы можете использовать усиленный эффект, несмотря на то, что у вас нет заклинаний такого высокого уровня.
| !Ур. | !1 | !2 | !3 | !4 | !5 | !6 | !7 | !8 | !9 |
| !1 | 2 | — | — | — | — | — | — | — | — |
| !2 | 3 | — | — | — | — | — | — | — | — |
| !3 | 4 | 2 | — | — | — | — | — | — | — |
| !4 | 4 | 3 | — | — | — | — | — | — | — |
| !5 | 4 | 3 | 2 | — | — | — | — | — | — |
| !6 | 4 | 3 | 3 | — | — | — | — | — | — |
| !7 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| !8 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| !9 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| !10 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| !11 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !16 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !17 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| !18 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| !19 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| !20 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
---
!!!Магия договора
Если у вас есть и умение Использование заклинаний и умение Магия договора от класса колдуна или кровавого охотника, вы можете использовать ячейки заклинаний, полученные от Магии договора для накладывания известных или подготовленных заклинаний, полученных от умения Использование заклинаний, а также можете использовать ячейки заклинаний, полученные от умения Использование заклинаний для накладывания известных вам заклинаний колдуна или кровавого охотника.
Если у вас есть умение Магия договора и колдуна, и кровавого охотника, добавьте треть ваших уровней (округлённых в меньшую сторону) в классе кровавого охотника к соответствующим уровням колдуна, чтобы определить доступные ячейки заклинаний, уровень ячеек заклинаний и количество известных заговоров.
Обычно вы взаимодействуете с предметами во время других действий, например, вынимаете меч частью атаки, но если предмет требует действия для его использования, вы совершаете действие Использование предмета. Это действие также пригодится, если вы хотите в течение хода взаимодействовать сразу с несколькими предметами.
* Вы совершаете с помехой проверки характеристик и броски атаки, пока источник вашего страха находится в пределах вашей линии обзора.
* Вы не способны добровольно приблизиться к источнику своего страха.
Испытания навыков позволяют моделировать множество задач, выполняемых персонажами во время приключения: от обезвреживания комплексной ловушки до проведения мирных переговоров между враждующими нациями.
Испытания навыков обычно представляют собой последовательность проверок характеристик, совершаемых несколькими персонажами с целью достижения определённого количества успешных проверок, до того, как они провалят три из них.
---
!!!Проведение испытания
# ''Определите сложность испытания.'' Мастер устанавливает количестве успехов необходимых для прохождения испытания. Сложность может быть от трёх до пяти и выше.
# ''Определите используемый навык.'' Игрок выбирает навык, которым владеет его персонаж, и описывает как применение этого навыка может помочь группе в прохождении испытания. Персонаж может использовать каждое владение только один раз за испытание. Владение навыком можно заменить следующими опциями:
## Владением инструментом или языком;
## Заговором;
## Заклинанием 1 или более высокого уровня (может предоставить автоматический успех);
## Использованием магического предмета
# ''Определите сложность проверки.'' Мастер устанавливает сложность проверки, исходя из того насколько применяемый навык уместен для ситуации.
# ''Совершите проверку с учётом преимуществ и помех.'' Персонажи могут получить преимущество на бросок, используя уместные заклинания или снаряжение. Состояние персонажа или окружающие эффекты (на усмотрение Мастера) могут предоставлять помеху на бросок.
# ''Передайте ход другому персонажу.'' Персонаж не может совершать две проверки подряд с целью прохождения испытания. На усмотрение Мастера проверки могут совершаться как и без определённой очерёдности, так и в порядке инициативы.
# ''Продолжайте до завершения испытания.'' Испытание завершается, когда группа совершает необходимое количество успешных проверок или проваливает три из них.
---
!!!Помощь и прочие бонусы
Персонаж может дать преимущество на проверку другого персонажа, совершая действие [[Помощь|Помощь]]. Действие [[Помощь|Помощь]] может быть использовано, только если персонаж владеет навыком, используемым в совершении проверки. Персонаж, использующий действие [[Помощь|Помощь]] подчиняется тем же правилам и не может принимать участие в следующей проверке, а также повторно использовать задействованное владение.
Персонажи, использующие заклинания, умения или особенности, предоставляющие бонусы к результатам проверок (Вдохновение барда, //указание// и т.п.), не могут принимать участие в следующей проверке.
---
!!!Провалы и последствия
Проваленные проверки испытания могут сопровождаться различными негативными последствиями для группы. В некоторых случаях Мастер может не использовать правило трёх провалов, а позволить группе проходить испытание, пока персонажи готовы мириться с последствиями провалов.
Примеры последствий:
* получение урона;
* получение [[истощения|Истощённый]];
* повреждение предмета;
* потеря предмета;
* ухудшение отношений с НИП;
* получение ложной информации;
* привлечение нежелательного внимания;
* отравление/болезнь;
* потеря ресурсов (в т.ч. классовых) и т.п.
---
!!!Особые испытания навыков
<<tabs "[tag[Особые испытания навыков]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Предупреждён – значит вооружён. Исследование во время простоя позволяет персонажу получить знания о чудовище, местности, волшебном предмете или по какому-либо другому конкретному вопросу.
//''Ресурсы''//. Обычно для проведения исследования персонажу требуется доступ к библиотеке или к мудрецу. Если такой доступ имеется, то проведение исследования требует одной рабочей недели и не менее 50 см, которые будут потрачены на материалы, взятки, подарки и прочие расходы.
//''Определение результата''//. Персонаж определяет, что является предметом исследования – конкретная личность, место или предмет. После одной недели персонаж совершает проверку Интеллекта с бонусом +1 за каждые 50 см, потраченные сверх изначальных 50 см, до максимума в +6. Кроме того, персонаж, у которого есть доступ к библиотеке со специальными книгами по предмету исследований или к хорошо осведомлённым мудрецам, получает преимущество на эту проверку. Определите, насколько много сведений получил персонаж, используя таблицу ниже.
| !Результат |!Итог|
| 1-5 |Безрезультатно|
| 6-10 |Вы изучили один фрагмент сведений|
| 11-20 |Вы изучили два фрагмента сведений|
| 21+ |Вы изучили три фрагмента сведений|
Каждый фрагмент сведений равноценен одному правдивому утверждению о личности, местности или предмете. Это, например, могут быть знания о сопротивлениях существа, пароль для доступа на запертый уровень подземелья, заклинания, наиболее часто применяющиеся в ордене волшебников и т. д. Мастер является последним судьёй и определяет, что именно узнал персонаж.
//''Осложнения''//. Наибольший риск при исследовании – получение ложной информации. Не все знания точны или правдивы, а соперник с наклонностями учёного, особенно если предмет исследования ему известен, может попытаться ввести персонажей в заблуждение. Соперник может подсунуть ложную информацию, подкупить мудрецов, чтобы те дали плохие советы, или просто украсть ключевые книги, необходимые для поиска достоверной информации.
Кроме того, персонаж может столкнуться с другими осложнениями во время исследования. На каждую неделю, потраченную на исследо- вания, существует 10% шанс осложнения, примеры которых приведены в таблице ниже.
| !к6 |!Осложнение |
| 1 |Вы случайно повредили редкую книгу. |
| 2 |Вы оскорбили мудреца, который требует теперь необыкновенный дар.|
| 3 |Если бы вы знали, что книга была проклята, вы бы ни за что её не открыли. |
| 4 |Мудрец стал одержим идеей убедить вас в правдивости нескольких странных теорий о реальности.|
| 5 |Ваши действия привели к тому, что вам запретили доступ в библиотеку, пока не возместите ущерб.|
| 6 |Вы получили полезную информацию, но пообещали выполнить опасное задание в качестве оплаты. |
<<tabs "[tag[Источник чародейства]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Некоторые особые способности и опасности окружающей среды, такие как недоедание и длительное воздействие очень низких или высоких температур, могут стать причиной состояния, называемого истощением. Истощение делится на шесть степеней. Эффект даёт существу ту или иную степень истощения, согласно описанию.
| !Степень |!Эффект |
| 1 |Помеха на проверки Силы и Ловкости. Вы не можете совершать действие Рывок. |
| 2 |Помеха на все проверки характеристик. Скорость уменьшается вдвое. |
| 3 |Помеха на броски атаки и спасброски. |
| 4 |Вы можете использовать либо действие, либо бонусное действие в свой ход, и не можете совершать реакции. Если вы поддерживаете концентрацию, вы должны тратить действие в начале своего хода для её сохранения. |
| 5 |Скорость снижается до 1 м. Вы не можете поддерживать концентрацию или сотворять заклинания, требующие концентрации. |
| 6 |Вы становитесь [[умирающим|Умирающий]], пока не понизите степень истощения. Каждая дополнительная степень истощения, полученная при истощении 6 степени, считается двумя проваленными спасбросками от смерти. |
Если существо, уже находящееся в состоянии истощения, подвергается воздействию другого эффекта, вызывающего истощение, его текущая степень истощения повышается на значение, указанное в описании эффекта.
На существо воздействуют эффекты не только текущей степени истощения, но и более слабых степеней. Например, существо на 2 степени истощения не может совершать действие Рывок, перемещается в два раза медленнее и совершает с помехой проверки характеристик.
Эффект, снимающий истощение, понижает его степень согласно описанию эффекта, вплоть до окончания действия истощения, если степень истощения существа становится ниже 1.
Непотревоженный сон снижает степень истощения на 1, при условии, что существо в течении дня употребило как минимум половину требуемого количества [[пищи и воды.|Голод и жажда]]
Вы заключили договор с исчадием из Нижних Планов существования - сущностью с порочными стремлениями, даже если сами вы не разделяете их. Эти сущности жаждут осквернения и разрушения всего сущего, в конечном итоге включая вас самих. К исчадиям достаточно сильным, чтоб заключать договора, относят демонических лордов, таких как Демогоргон, Оркус, Фраз’Урб-луу и Бафомет; архидьяволов, таких как Асмодей, Диспатер, Мефистофель и Белиал; наиболее могущественных исчадий преисподней и балоров; ультролотов и других повелителей юголотов.
---
!!! [img[1.png]] Расширенный список заклинаний
Нежить позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//огненные ладони//, //приказ// |
| !2 |//глухота/слепота//, //палящий луч// |
| !3 |//зловонное облако//, //огненный шар// |
| !4 |//огненная стена//, //огненный щит// |
| !5 |//небесный огонь//, //святилище// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Благословение темнейшего
Когда вы опускаете хиты враждебного существа до 0, вы получаете временные хиты в количестве равном вашему модификатору Харизмы + уровень колдуна (минимум 1).
---
!!! [img[6.png]] Удача темнейшего
<<<
Вы можете воззвать к своему покровителю, чтобы он изменил судьбу в вашу пользу.
<<<
Когда вы совершаете проверку характеристики или спасбросок, вы можете добавить к10 к броску. Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[10.png]] Стойкость исчадия
Вы можете выбрать один вид урона, когда завершаете короткий или продолжительный отдых. Вы получаете сопротивление этому виду урона, пока вы не выберете другой вид урона при помощи этого умения. Урон от магических атак или атак посеребрённым оружием игнорирует это сопротивление.
---
!!! [img[14.png]] Бросок сквозь ад
Когда вы попадаете по существу атакой, вы можете мгновенно перенести цель сквозь Нижние Планы. Существо исчезает и мчится сквозь кошмарный пейзаж.
В конце вашего следующего хода цель возвращается в пространство, из которого исчезла, или ближайшее свободное пространство, если то место занято. Если цель не является исчадием, она получает 10к10 урона психической энергией от пережитого ужаса.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Как образцовой Ищейке, вам нет равных в раскрытии секретов и распутывании тайн. Вы полагаетесь на внимательность к деталям, но также и на отточенные навыки читать истинные намерения других существ по их словам и поведению. Вы превосходно искореняете существ, которые прячутся среди простых людей и охотятся на них, а ваша эрудиция и способность к дедукции прекрасно помогают находить и искоренять скрытое зло.
---
!!! [img[3.png]] Боевая прозорливость
<<<
Вы научились распознавать тактику противника и разрабатывать противодействие ей.
<<<
Вы можете бонусным действием совершить проверку Мудрости (Проницательность), противопоставленную проверке Харизмы (Обман) видимого вами существа.
Если вы выигрываете в этом состязании, вы можете использовать Коварный удар против этой цели, даже если у вас нет преимущества на бросок атаки. Все прочие правила умения Коварный удар применяются к вам как обычно.
Это преимущество действует в течение 1 минуты или пока вы успешно не используете это умение против другой цели.
---
!!! [img[3.png]] Намётанный глаз
Вы можете совершать действие [[Поиск]] бонусным действием
---
!!! [img[3.png]] Ухо востро
<<<
У вас развился талант подмечать ложь.
<<<
Когда вы совершаете проверку Мудрости (Проницательность) с целью определить, лжёт ли существо, вы можете при выпадении на к20 результата «1–9» считать, что выпало «10».
---
!!! [img[9.png]] Недремлющее око
Вы совершаете все проверки Мудрости (Внимательность) и Интеллекта (Анализ) с преимуществом, если в этот ход вы перемещаетесь не более чем на половину своей скорости.
---
!!! [img[13.png]] Безошибочное чутьё
<<<
Ваши чувства практически невозможно обмануть.
<<<
Действием вы можете почувствовать наличие иллюзий, перевёртышей в их непервоначальной форме, и прочей магии, предназначенной для обмана чувств, в пределах 6 м от себя, если вы не [[ослеплены|Ослеплённый]] или не [[оглушены|Оглохший]]. Вы ощущаете присутствие какого-то направленного на обман чувств эффекта, но не знаете, что именно сокрыто или какова его истинная природа.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[17.png]] Нюх на слабину
<<<
Вы научились играть на слабостях существ, тщательно изучая их тактику и движения.
<<<
Пока на существо действует ваше умение Боевая прозорливость, урон вашего умения Коварный удар по этому существу увеличивается на 3к6.
<<<
Используя магию прорицания, вы даруете своей стреле способность искать цель.
<<<
Когда вы применяете этот вариант, вы не совершаете бросок атаки. Вместо этого выберите одно существо, которое вы видели за прошедшую минуту. Выстрел направляется к этому существу, огибает углы, если нужно, и игнорирует укрытия на половину и на три четверти. Если цель находится в радиусе максимальной дальности оружия, и если есть путь, по которому выстрел может добраться до цели, то цель должна совершить спасбросок Ловкости, иначе боеприпас исчезает, пролетев столько, сколько смог. При провале существо получает обычный урон выстрела и дополнительно 1к6 урона силовым полем, и вы узнаёте где сейчас находится цель. При успешном спасброске цель получает половину урона, и вы не узнаёте где она.
После достижения вами 18 уровня в этом классе, дополнительный урон этого выстрела увеличивается до 2к6.
Архетип Кавалериста превосходен в верховом бою. Обычно рождённый среди благородных и взращённый при дворе, Кавалерист одинаково хорошо чувствует себя как во главе кавалерийского наступления, так и во время обмена любезностями на официальном приёме. Кавалеристы также знают как оградить от опасности тех, за кого они отвечают, и часто служат защитниками старших по званию и слабых. В стремлении восстановить справедливость или завоевать престиж многие из этих воинов покидают комфортную жизнь и пускаются в славные приключения.
---
!!! [img[3.png]] Дополнительные владения
Вы получаете владение одним из следующих навыков на ваш выбор: Выступление, История, Проницательность, Убеждение или Уход за животными.
В качестве альтернативы вы можете выучить один язык на ваш выбор.
---
!!! [img[3.png]] Непоколебимая метка
<<<
Вы можете угрожать врагам, мешая их атакам и карая их за вред другим.
<<<
Когда вы попадаете по существу рукопашной атакой оружием, вы можете пометить это существо до конца вашего следующего хода. Эффект метки заканчивается, если вы становитесь [[недееспособным|Недееспособный]] или [[умираете|Смерть]], или же если кто-то еще отметит эту цель.
Пока отмеченное существо находится в пределах 1 м от вас, оно совершает с помехой броски атак, целью которых не являетесь вы.
Кроме того, если отмеченное существо наносит урон кому угодно, кроме вас, вы можете совершить особую рукопашную атаку оружием против помеченного существа бонусным действием в свой следующий ход. Эта атака совершается с преимуществом и наносит дополнительный урон, равный половине вашего уровня воина.
Независимо от количества существ, которых вы отметили, вы можете совершить эту специальную атаку количество раз, равное вашему модификатору Силы (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[3.png]] Рождённый в седле
<<<
Ваше мастерство всадника становится очевидным.
<<<
Вы совершаете с преимуществом спасброски, с целью избежания падения с вашего скакуна. Пока вы дееспособны, если вы падаете со скакуна и пролетаете не больше 2 м, вы приземляетесь на ноги.
Забраться в седло и спешиться стоит вам всего 1 м скорости, а не половину скорости.
---
!!! [img[7.png]] Защитный манёвр
<<<
Вы научились отражать удары, направленные на вас, вашего скакуна или других существ поблизости.
<<<
Если по вам или по другому видимому вами существу в пределах 1 м от вас, попадают атакой, вы можете реакцией совершить бросок 1к8, если удерживаете рукопашное оружие или щит. Результат броска добавляется к КД цели против этой атаки. Если атака всё равно попадает, цель получает сопротивление к урону от этой атаки.
Вы можете использовать это умение количество раз, равное вашему модификатору Телосложения (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Держать строй
<<<
Вы становитесь мастером сдерживания своих противников.
<<<
Вы можете совершать [[провоцированные атаки|Провоцированная атака]] по существам, которые перемещаются на 1 м и более в пределах вашей досягаемости. Если вы попадаете по существу [[провоцированной атакой|Провоцированная атака]], его скорость уменьшается до 0 до конца текущего хода.
---
!!! [img[15.png]] Свирепый натиск
<<<
Вы можете сбивать своих врагов, независимо от того, на верхом вы или нет.
<<<
Один раз в свой ход,еЕсли вы переместитесь как минимум на 4 м по прямой к существу перед совершением атаки по нему и попадёте этой атакой, оно должно преуспеть в спасброске Силы (Сл = 8 + ваш бонус мастерства + ваш модификатор Силы), иначе будет [[сбито с ног|Сбитый с ног / Лежащий ничком]].
---
!!! [img[18.png]] Бдительный защитник
<<<
Вы реагируете на опасность с чрезвычайной бдительностью.
<<<
В бою вы получаете особую [[реакцию|Реакции]], которую вы можете совершать один раз в ход каждого существа, кроме своего. Вы можете использовать эту реакцию только чтобы совершить [[провоцированную атаку|Провоцированная атака]] и не можете использовать её в тот же ход, когда использовали свою обычную [[реакцию|Реакции]].
[img width=185 class="centerme" [https://i.imgur.com/LPSQUVl.png]]
Ваш персонаж калаштар обладает следующими особенностями.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значения вашей Мудрости и Харизмы увеличиваются на 1. |
|^Двойной разум |^Вы совершаете все спасброски Мудрости с преимуществом. |
|^Ментальная дисциплина |^У вас есть сопротивление к урону психической энергией. |
|^Отсечённый от снов |^Калаштары спят, но они не связаны с Планом Снов, как прочие существа. Вместо этого их разум черпает видения из воспоминаний своего потустороннего духа, пока они спят. Вы невосприимчивы к заклинаниям и другим магическим эффектам, которые требуют от вас возможности видеть сны, например к //вещему сну//, но не к заклинаниям и другим магическим эффектам, усыпляющим вас. |
|^Связь разумов |^Вы можете разговаривать телепатически с любым существом, которое видите в пределах дистанции в количестве метров, равному вашему удвоенному уровню. Вам не нужно знать общий с существом язык для того, чтобы оно понимало ваши телепатические высказывания, но существо должно быть в состоянии понимать как минимум один язык. Когда вы используете эту особенность, вы можете действием дать существу, с которым вы общаетесь телепатически, возможность говорить телепатически с вами в течении 1 часа, или пока вы не прервёте этот эффект преждевременно действием, либо дадите эту возможность другому существу. Чтобы использовать эту особенность, существо должно видеть вас и находиться в пределах дальности этой особенности.|
|^Речь Куори |^Вы можете говорить, читать и писать на языке Куори. |
//Стоимость перемещения:// 2 м за 1 м.
Карабканье по скользкой вертикальной поверхности или поверхности, где мало за что можно ухватиться, может требовать успешную проверку Силы (Атлетика).
Вы привыкли к жизни в дороге. Вы гордитесь тем, что прошли все основные торговые пути в своём регионе, включая лучшие проселочные дороги и короткие пути. Путешествуя по этим дорогам, вы знаете, где находятся лучшие постоялые дворы, места для привала и источники воды, а также потенциальные опасные места. Пробыв в дороге так долго, вы завели много знакомств и легко собираете информацию и слухи, которые ходят из города в город. Вы хорошо управляетесь с вьючными животными, а также с фургонами всех видов и их ремонтом.
* ''Владение навыками:'' Выживание, Уход за животными
* ''Владение инструментами:'' [[Наземный транспорт|Наземный и водный транспорт]]
* ''Языки:'' Один на ваш выбор
* ''Снаряжение:'' Кнут, средняя палатка, карта области, комплект дорожной одежды и кошель с 10 см
!!!Умение: Погонщик
Вы привыкли к ответственности и заработали репутацию надёжного человека. Опыт научил вас полагаться на свою интуицию. Другие осознают это и обращаются к вам за указаниями, когда ситуация становится серьезной. Вы можете определить наиболее безопасные места для привала. Если вы являетесь частью экипажа каравана, вы можете привлечь двух дополнительных рабочих, которые лояльны к вам в зависимости от вашей репутации. У вас отличная память на карты и местность, и вы всегда можете определить стороны света во время путешествия.
!!!Персонализация
| !к8 |!Черта характера |
| 1 |Любая группа настолько сильна, насколько сильно её самое слабое звено. Каждый должен несити свою ношу сам. |
| 2 |Всегда находится кто-то, кто пытается забрать что-то принадлежащее мне. Будьте бдительны. |
| 3 |Всему можно научиться, если у вас есть правильный учитель. Большинству людей просто нужен шанс. |
| 4 |Рано ложиться и рано вставать; по крайней мере, это под моим контролем. |
| 5 |Вы можете слушать меня или не слушать и жалеть, что не послушали. Все оказываются по одну сторону этого забора. |
| 6 |В конце концов мой упорный труд будет вознагражден. Может, это время наконец-то пришло. |
| 7 |Сильный вол или лошадь надёжнее большинства людей, которых я встречал. |
| 8 |У меня никогда не было времени на книги, но хотелось бы. Я восхищаюсь людьми, которые потратили время на обучение. |
| !к6 |!Идеал |
| 1 |''Служба.'' Использование моих талантов для помощи другим - лучший способ помочь себе. |
| 2 |''Эгоизм.'' То, о чем люди не знают, навредит им, но почему это моя проблема? |
| 3 |''Скитания.'' Я иду туда, куда ведет меня дорога. Иногда это хорошо... |
| 4 |''Адаптация.'' На открытой дороге побеждает закон природы. Жертвами становятся неподготовленные. |
| 5 |''Сосредоточенность. ''У меня просто есть работа, и я собираюсь её выполнить. |
| 6 |''Мотивация.'' Есть причина, по которой у меня хорошо получается то, что я делаю - я обращаю внимание на детали. |
| !к6 |!Привязанность |
| 1 |У моего брата есть ферма, и я помог ему и его соседям перевезти их товары в близлежащие города. Это хорошие люди. |
| 2 |На караван, который я возглавлял, напали бандиты, и многие невиновные погибли. Я клянусь, что отомщу за них, убивая всех бандитов, с которыми столкнусь. |
| 3 |Солдаты - в основном хорошие ребята, понимающие важность защиты дорог. Городская стража - те, на кого нужно обратить внимание. Если они проверяют ваши товары, приготовьтесь заплатить штраф. |
| 4 |Новый капитан местного патруля понимает важность безопасных дорог. Он нанимал меня несколько раз, и я ему благодарен. |
| 5 |Всегда найдётся дорога, по которой я раньше не ходил. Я всегда ищу новые места для изучения. |
| 6 |Богатство и власть мало что значат без свободы идти куда угодно и когда угодно. |
| !к6 |!Слабость |
| 1 |Мне трудно доверять людям, которых я только что встретил. |
| 2 |Мне нравится открытая дорога. Под землей и в тесноте я очень нервничаю. |
| 3 |Я ожидаю, что другие прислушаются к моим приказам, и не испытываю особого уважения или сочувствия, если они этого не сделают. |
| 4 |Из-за своей гордыни я с трудом признаю свою неправоту. |
| 5 |После того, как я определюсь с планом действий, я не отказываюсь от него. |
| 6 |Мне нравится исследовать, и мое любопытство иногда приводит к неприятностям. |
Тепло костра и приятный запах горячей еды может привлечь внимание населения дикой местности - от жестоких бандитов до голодных медведей или кровожадных культистов. Вы подвергаете себя большому риску, если разбиваете лагерь не назначив тех, кто присматривал бы за потенциальными незваными гостями. Караульные отвечают за безопасность лагеря и осматривают местность на предмет возможной опасности. Для того, чтобы покрыть все время ночлега, необходимо минимум трое караульных, дежурящих по 4 часа.
При приближении опасности караульный совершает проверку Мудрости (Внимательность) против Скрытности незваного гостя.
''Успех''. Караульный успешно обнаружил нарушителей и может разбудить группу, у которой будет немного времени, чтобы подготовиться к нападению.
''Провал''. Караульный и вся остальная группа застигнуты врасплох.
Караульный охраняет лагерь по ночам. Если караульный проваливается, вы рискуете подвергнуться нападению во время сна.
Если вы взяли на себя роль караульного, вы отвечаете за совершение проверок Мудрости (Внимательность) для обнаружения приближающихся угроз в ночное время. Мастер сообщит вам, если нужно совершить проверку. Караульный не может участвовать ни в какой другой деятельности, кроме принятия пищи и сна. Убедитесь в том, что тот, кто несёт дежурство, не нужен для чего-то ещё. Установка сигнализирующих ловушек позволит вам добавить бонус мастерства к броску.
''Успех''. Вы успели вовремя разбудить группу, чтобы подготовиться к нападению.
''Провал''. Вы не успели вовремя заметить опасность, и группу застали врасплох.
!!!Волшебные палочки
Волшебные палочки достигают в длину 40 см и изготавливаются из металла, кости или дерева. Палочка может быть также украшена навершием из стекла, камня, или какого-либо другого материала.
---
!!!Доспехи
Если в описании доспехов не сказано иначе, то для использования их магических свойств они должны быть надеты.
Для некоторых комплектов магических доспехов может быть указан вид доспеха, например, «кольчуга» или «латы». Если же особого указания по этому поводу нет, Мастер может определить вид доспеха случайным образом.
---
!!!Жезлы
Магические жезлы могут выглядеть как скипетры, другие же просто представляют собой тяжёлые цилиндры. Они, как правило, изготовлены из металла, дерева или кости; весят 1-3 кг, имеют длину 0.5-1 м при толщине 2-3 см.
---
!!!Зелья
Различные виды магических жидкостей сгруппированы в категорию зелий: варева из колдовских трав, вода из магических фонтанов или священных источников, и масла, которые наносятся на существо или предмет. Объём большинства зелий составляет примерно 100 мл.
Зелья являются расходуемыми магическими предметами. Персонаж может выпить зелье бонусным действием или применить его на другого персонажа действием, если в описании зелья не сказано иначе. Использованное зелье действует немедленно и считается израсходованным.
---
!!!Кольца
Магические кольца наделяют удивительной силой тех, кому повезло найти их. Если в описании кольца не сказано иначе, то для того, чтобы магия кольца работала, его необходимо носить на пальце.
---
!!!Оружие
Созданное для воплощения самых жестоких замыслов своего владельца или же напротив, выкованное служить высоким рыцарским идеалам, магическое оружие является желанным предметом для многих искателей приключений.
Для некоторых экземпляров магического оружия в описании может быть указан его вид, такой как «короткий меч» или «длинный лук». Если же вид оружия не указан, Мастер можете выбрать его самостоятельно или же определить случайным образом.
Боеприпасы, выпущенные из магического оружия, считаются магическими в вопросе преодоления сопротивления и иммунитета к немагическим атакам и урону.
---
!!!Посохи
Длина магического посоха 1.5-2 м. Внешне посохи могут весьма отличаться друг от друга: одни гладкие и имеют практически равный диаметр по всей длине, другие — витые и корявые; одни изготовлены из дерева, другие из полированного металла или кристалла. В зависимости от материала, посох может весить от 1 до 3 кг.
Если в описании посоха не сказано иначе, то посох может использоваться, как оружие, являясь при этом «дубинкой».
---
!!!Свитки
Большинство свитков — это заклинания, хранящиеся в письменной форме, но есть и те, что несут уникальные чары, которые предоставляют мощную охрану. Каким бы ни было его содержание, свиток представляет собой свёрток бумаги, иногда прикреплённый к деревянному стержню, и, как правило, хранящийся в тубе из слоновой кости, нефрита, кожи, дерева или металла.
Свиток является расходуемым магическим предметом. Независимо от характера магии, содержащейся в свитке, активация этой магии требует прочтения свитка. После того, как магия, заключённая свитке, высвобождается, свиток не может быть использован повторно. Слова исчезают, или он рассыпается в прах.
---
!!!Чудесные предметы
Чудесные предметы — это довольно обширная категория магических предметов, которая включает в себя предметы одежды, такие как: сапоги, ремни, плащи, перчатки и различные ювелирные изделия и украшения: амулеты, броши и обручи. Сумки, ковры, хрустальные шары, разного рода фигурки, музыкальные инструменты и многие другие предметы также попадают в эту категорию.
[img width=320 class="centerme" [https://i.imgur.com/GBEOJ7D.png]]
<<tabs "[tag[Кенку - описание]]" "Описание кенку" "$:/state/tab1">>
[img width=330 class="centerme" [https://i.imgur.com/MiiZQy0.png]]
Кенку покражи - наиболее распространённый вид кенку. Они часто встречаются в крупных городах в роли попрошаек и мелких преступников. Отчасти это связано с их способностью ловко управляться со своим клювом, позволяя им выхватывать предметы из чужих карманов в мгновение ока. По той же причине, кенку покражи обычно не пускают в дорогие заведения, где воровство является распространённой проблемой. Многие кенку покражи выживают, служа посыльными, шпионами и наблюдателями для воровских гильдий, разбойных банд и преступных картелей.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Клюв |^Своим клювом вы можете выполнять точные действия, для которых обычно понадобилась бы свободная рука. Ваш клюв недостаточно крепок для совершения действий требующих приложения силы, например, для подъёма тяжестей или совершения атак. Соматические компоненты заклинаний слишком сложны для исполнения клювом. |
|^Мастер копирования |^Когда вы копируете записи или изделия, сделанные вами или кем-то другим, вы совершаете с преимуществом все проверки с целью создания точной копии. |
|^Подготовка кенку |^Вы владеете на ваш выбор двумя из следующих навыков: Акробатика, Ловкость рук, Обман и Скрытность. |
|^Тёмное оперение |^Вы можете использовать действие Засада в качестве бонусного действия, если находитесь в области тусклого освещения или темноты. |
[img width=350 class="centerme" [https://i.imgur.com/YrowN2y.png]]
Кенку савана - странники, которые собирают безделушки по пограничным землям и редко останавливаются в одном городе дольше чем на несколько дней. Они пересказывают мрачные пророчества в надежде на то, что другие смогут избежать ту же тяжёлую участь, что выпала им. Из-за этих предсказаний, кенку савана часто ассоциируют с грядущей бедой и называют их "предвестниками несчастья". По той же причине, многие боятся общаться с ними, опасаясь узнать что-то страшное о своём будущем. Кенку савана уделяют уделяют пристальное внимание чужим действиям, изучая каждого, с кем встречаются. Можно быть уверенным в том, что эти "пернатые цыгане" улавливают в чужом поведении куда больше, чем раскрывают их предсказания.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Вещун |^Вы владеете навыками Проницательность и Религия. |
|^Глазами птицы |^С помощью звуков и жестов вы можете передавать простые понятия Маленьким или ещё меньшим птицам. Кроме того, вы можете действием указать на невраждебную Маленькую или ещё меньшую птицу, которую вы можете видеть в пределах 5 м от себя, и начать смотреть её глазами. В это время вы слепы. Эффект оканчивается, если птица удаляется от вас больше чем на 10 м, либо если вы оканчиваете его бонусным действием.|
|^Око предзнаменований |^Вам известен заговор //указание//. При достижении 3 уровня, вы можете один раз использовать заклинание //почтовое животное// на птицу. При достижении 5 уровня, вы можете один раз использовать заклинание //гадание//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Мудрость. |
[img width=320 class="centerme" [https://i.imgur.com/klkPo11.png]]
Те, кто знают о существовании кенку страды, называют их "боронами". Кенку страды прочёсывают поля битв ради великой цели. Никто не знает, кто или что побуждает их к ужасной жизни жнеца, но все рождающиеся боронами посвящают себя этой безрадостной обязанности следить за тем, чтобы все мертвецы оставались таковыми. Сами они считают своё дело самым почётным, без устали охотясь на нежить. Кенку страды полагаются на свой медицинский опыт, чтобы излечивать болезни живых, потому что верят, что погибшие от болезни перенесут свои недуги в загробную жизнь. Многие кенку страды носят с собой косу или серп, и ходят слухи о том, что коса борона может украсть сущность души существа.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2. |
|^Жнец |^Вы владеете косами и серпами и можете использовать их в качестве фокусировки для заклинаний. |
|^Последние слова |^Вы можете подражать словам мёртвых. Вы можете действием прикоснуться к трупу, не являющимся нежитью, и точно сымитировать последнюю произнесённую им фразу. Вы не можете использовать эту особенность повторно, пока не завершите продолжительный отдых. |
|^Смертный приговор |^Вы можете бонусным действием приговорить окровавленное существо, которое находится в пределах 3 м от вас, к смерти, окружив его тёмной аурой. Любое магическое лечение, которое получает приговорённое существо, уменьшается вдвое на 1 минуту. Конструкты обладают иммунитетом к этому эффекту. |
|^Чумной доктор |^Вы владеете навыками История и Медицина. Кроме того, вы совершаете спасброски от болезней с преимуществом. |
| !Ур. | !БМ |!Умения | !ИЗаг | !ИЗакл |
| !1 | +2 |Вдохновение барда (1к6), Использование заклинаний | 2 | 4 |
| !2 | +2 |Мастер на все руки, Песнь отдыха (1к6) | 2 | 5 |
| !3 | +2 |Коллегия бардов, Компетентность, Увеличение характеристики | 2 | 6 |
| !4 | +2 |Черта | 3 | 7 |
| !5 | +3 |Вдохновение барда (1к8), Источник вдохновения | 3 | 8 |
| !6 | +3 |Контрочарование, Увеличение характеристики, Умение коллегии бардов | 3 | 9 |
| !7 | +3 |— | 3 | 10 |
| !8 | +3 |Черта | 3 | 11 |
| !9 | +4 |Песнь отдыха (1к8), Увеличение характеристики | 3 | 12 |
| !10 | +4 |Вдохновение барда (1к10), Компетентность, Тайны магии | 4 | 14 |
| !11 | +4 |— | 4 | 15 |
| !12 | +4 |Увеличение характеристики, Черта | 4 | 15 |
| !13 | +5 |Песнь отдыха (1к10) | 4 | 16 |
| !14 | +5 |Тайны магии, Умение коллегии бардов | 4 | 18 |
| !15 | +5 |Вдохновение барда (1к12), Увеличение характеристики | 4 | 19 |
| !16 | +5 |Черта | 4 | 19 |
| !17 | +6 |Песнь отдыха (1к12) | 4 | 20 |
| !18 | +6 |Тайны магии | 4 | 22 |
| !19 | +6 |Увеличение характеристики | 4 | 22 |
| !20 | +6 |Превосходное вдохновение | 4 | 22 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗаг - Известные заговоры, ИЗакл - Известные заклинания//
''Ячейки заклинаний на уровень заклинаний''
| !Ур. | !1 | !2 | !3 | !4 | !5 | !6 | !7 | !8 | !9 |
| !1 | 2 | — | — | — | — | — | — | — | — |
| !2 | 3 | — | — | — | — | — | — | — | — |
| !3 | 4 | 2 | — | — | — | — | — | — | — |
| !4 | 4 | 3 | — | — | — | — | — | — | — |
| !5 | 4 | 3 | 2 | — | — | — | — | — | — |
| !6 | 4 | 3 | 3 | — | — | — | — | — | — |
| !7 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| !8 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| !9 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| !10 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| !11 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !16 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !17 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| !18 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| !19 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| !20 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
---
---
!!!Быстрое создание
Вы можете быстро создать барда, следуя этим рекомендациям. Во-первых, у вашей Харизмы должно быть наивысшее значение. Следующей по величине характеристикой должна быть Ловкость. Во-вторых, выберите предысторию «[[артист|Артист]]». В-третьих, выберите заговоры //злая насмешка// и //пляшущие огоньки//, а также заклинания 1 уровня //волна грома//, //лечащее слово//, //обнаружение магии// и //очарование личности//.
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень барда
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень барда после первого
---
!!!Владение
* [[Доспехи|Доспехи и щиты]]: Лёгкие доспехи
* [[Оружие|Оружие]]: Простое лёгкое и одноручное оружие, воинское лёгкое и одноручное клинковое оружие
* [[Инструменты|Инструменты]]: Три музыкальных инструмента на ваш выбор
* ''Спасброски:'' Ловкость, Харизма
* ''Навыки:'' Три любых навыка на ваш выбор
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) шпага, (б) сабля или (в) простое оружие не дороже 25 см
* (а) набор дипломата или (б) набор артиста
* (а) лютня или (б) другой музыкальный инструмент
* дублет, кинжал и походный набор
''Произвольная экипировка''
* Вы получаете 4к4 × 10 серебряных монет (или 100 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Вдохновение барда
<<<
Своими словами или музыкой вы можете вдохновлять других.
<<<
Вы можете бонусным действием выбрать одно существо, отличное от вас, в пределах 12 м, которое может вас слышать:
* Это существо получает Кость Вдохновения барда — к6. В течение следующих 10 минут оно может один раз бросить эту кость и добавить результат к проверке характеристики, броску атаки или спасброску, который оно совершает. Существо может принять решение о броске Кости Вдохновения барда уже после объявления результата броска к20, но до вступления его эффекта в силу.
* Если существо сотворяет заклинание, оно может один раз бросить эту кость и добавить результат к урону или исцелению, полученному одной из целей этого заклинания.
* Как только Кость Вдохновения барда брошена, она пропадает.
* Существо может иметь только одну такую кость одновременно.
Вы можете использовать это умение количество раз, равное модификатору вашей Харизмы (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
Ваша Кость Вдохновения барда изменяется с ростом вашего уровня в этом классе. Она становится к8 на 5 уровне, к10 на 10 уровне и к12 на 15 уровне.
---
!!! [img[1.png]] Использование заклинаний
<<<
Вы научились изменять ткань реальности в гармонии со своей волей и музыкой. Ваши заклинания являются частью вашего обширного репертуара; это магия, которой вы найдёте применение в любой ситуации.
<<<
''Заговоры (заклинания 0 уровня)''
Вам известен заговор //фокусы//, который не учитывается в общее количество известных вам заговоров, и ещё два заговора на ваш выбор из списка заклинаний барда. Вы узнаёте дополнительные заговоры барда на более высоких уровнях, как показано в колонке «ИЗаг (известные заговоры)».
''Ячейки заклинаний''
Таблица выше показывает, сколько ячеек заклинаний у вас есть для сотворения заклинаний 1 и более высоких уровней. Для сотворения заклинания вы должны потратить ячейку соответствующего, либо более высокого уровня. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны четыре заклинания 1 уровня на ваш выбор из списка заклинаний барда.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний барда.
''Заклинательная гибкость''
Каждый раз, когда вы завершаете продолжительный отдых, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний барда того же уровня.
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний барда, с уровнем, не превышающим уровень ячеек заклинаний барда.
''Базовая характеристика заклинаний''
Харизма является базовой характеристикой для сотворения ваших заклинаний барда. Ваша магия проистекает из сердечности и душевности, которую вы вкладываете в исполнение музыки и произнесение речей.
Вы используете Харизму в случаях, когда заклинание барда ссылается на базовую характеристику. Кроме того, вы используете Харизму при определении Сл спасбросков от ваших заклинаний барда, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Харизмы
Модификатор броска атаки = бонус мастерства + модификатор Харизмы
```
''Ритуальное колдовство''
Вы можете сотворить известное вам заклинание барда как ритуал, если у этого заклинания есть ключевое слово «ритуал».
''Фокусировка заклинания''
Вы можете использовать ваш [[музыкальный инструмент|Музыкальные инструменты]] в качестве фокусировки для ваших заклинаний барда.
---
!!! [img[2.png]] Мастер на все руки
Вы можете добавлять половину бонуса мастерства, округлённую в меньшую сторону, ко всем проверкам характеристик, куда этот бонус ещё не включён.
---
!!! [img[2.png]] Песнь отдыха
<<<
С помощью успокаивающей музыки или речей вы можете помочь своим раненым союзникам восстановить их силы во время короткого отдыха.
<<<
Если вы, или любые союзные существа, способные слышать ваше исполнение во время короткого отдыха или ночлега, тратите Кости Хитов на восстановление хитов, каждое из этих существ восстаналивает дополнительно 1к6 хитов.
Количество дополнительно восстанавливаемых хитов растёт с вашим уровнем в этом классе: 1к8 на 9 уровне, 1к10 на 13 уровне и 1к12 на 17 уровне.
---
!!! [img[3.png]] Коллегия бардов
<<<
Барды не любят одиночества. Они разыскивают друг друга, чтобы обменяться песнями и историями, похвастаться достижениями и поделиться знаниями. Барды образуют открытые ассоциации, называемые коллегиями, которые помогают им собираться вместе, и способствуют сохранению традиций.
<<<
Вы углубляетесь в традиции выбранной вами коллегии бардов: [[Грома|Коллегия Грома]], [[Доблести|Коллегия Доблести]], [[Духов|Коллегия Духов]], [[Знаний|Коллегия Знаний]], [[Красноречия|Коллегия Красноречия]], [[Мечей|Коллегия Мечей]], [[Очарования|Коллегия Очарования]], [[Созидания|Коллегия Созидания]] или [[Шёпотов|Коллегия Шёпотов]]. Ваш выбор определит умения, предоставляемые на 3, 6 и 14 уровнях.
---
!!! [img[3.png]] Компетентность
Выберите 2 навыка из тех, которыми вы владеете. Ваш бонус мастерства для проверок этих навыков удваивается.
На 10 уровне вы можете выбрать ещё 2 навыка и получить для них это преимущество.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Источник вдохновения
<<<
Вы можете восстановить все потраченные использования вдохновения барда, черпая вдохновение в чужом или своём творчестве.
<<<
Вы должны провести 30 минут изучая предметы искусства, совершенствуя собственное мастерство, вдохновляясь окружением или ища вдохновения другим подходящим для вас способом. Вы можете делать это частью отдыха.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Контрочарование
<<<
Вы получаете возможность использовать звуки или слова силы для разрушения воздействующих на разум эффектов.
<<<
Вы можете действием начать исполнение, которое продлится до конца вашего следующего хода. В течение этого времени вы и все дружественные существа, способные слышать ваше исполнение, в пределах 6 м от вас совершают спасброски от [[испуга|Испуганный]] и [[очарования|Очарованный]] с преимуществом.
Исполнение заканчивается преждевременно, если вы оказываетесь [[недееспособны|Недееспособный]], теряете способность говорить, или прекращаете исполнение добровольно (действие не требуется).
---
!!! [img[10.png]] Тайны магии
<<<
Вы успели накопить багаж знаний из самого широкого спектра магических дисциплин.
<<<
Вы изучаете два заклинания любых классов на ваш выбор, включая ваш собственный. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний барда.
Эти заклинания считаются для вас заклинаниями барда, и они учитываются в общее количество известных вам заклинаний.
Вы изучаете ещё по два заклинания таким образом на 14 и 18 уровнях.
---
!!! [img[20.png]] Превосходное вдохновение
Если на момент броска инициативы у вас не осталось непотраченных использований Вдохновения барда, вы получаете одно.
| !Ур. | !БМ |!Умения | !Ярость | !Урон ярости |
| !1 | +2 |Защита без доспехов, Ярость | 2 | +2 |
| !2 | +2 |Безрассудная атака, Чувство опасности | 2 | +2 |
| !3 | +2 |Первобытное знание, Путь дикости, Увеличение характеристики | 3 | +2 |
| !4 | +2 |Черта | 3 | +2 |
| !5 | +3 |Быстрое передвижение, Дополнительная атака | 3 | +2 |
| !6 | +3 |Увеличение характеристики, Умение пути | 4 | +2 |
| !7 | +3 |Дикий инстинкт, Инстинктивный наскок | 4 | +2 |
| !8 | +3 |Черта | 4 | +2 |
| !9 | +4 |Сильный критический удар (1 кость), Увеличение характеристики | 4 | +3 |
| !10 | +4 |Первобытное знание, Умение пути | 4 | +3 |
| !11 | +4 |Непреклонная ярость | 4 | +3 |
| !12 | +4 |Увеличение характеристики, Черта | 5 | +3 |
| !13 | +5 |Сильный критический удар (2 кости) | 5 | +3 |
| !14 | +5 |Умение пути | 5 | +3 |
| !15 | +5 |Непрерывная ярость, Увеличение характеристики | 5 | +3 |
| !16 | +5 |Черта | 5 | +4 |
| !17 | +6 |Сильный критический удар (3 кости) | 6 | +4 |
| !18 | +6 |Неукротимая мощь | 6 | +4 |
| !19 | +6 |Увеличение характеристики | 6 | +4 |
| !20 | +6 |Дикий чемпион | Неогр. | +4 |
//Ур. - Уровень, БМ - Бонус мастерства//
---
---
!!!Быстрое создание
Вы можете быстро создать варвара, следуя этим рекомендациям. Во-первых, у вашей Силы должно быть наивысшее значение. Следующим по величине должно быть Телосложение. Во-вторых, выберите предысторию «[[чужеземец|Чужеземец]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к12 за каждый уровень варвара
''Хиты на 1 уровне:'' 12 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к12 (или 7) + мод. Телосложения за каждый уровень варвара после первого
---
!!!Владение
* [[Доспехи|Доспехи и щиты]]: Лёгкие доспехи, средние доспехи
* [[Оружие|Оружие]]: Простое оружие, воинское оружие
* [[Инструменты|Инструменты]]: Нет
* ''Спасброски:'' Сила, Телосложение
* ''Навыки:'' Выберите два навыка из следующих: Атлетика, Внимательность, Выживание, Выносливость, Запугивание, Природа, Уход за животными
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый'' или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) бердыш или (б) воинское оружие, не являющееся метательным или стрелковым, не дороже 50 см
* (а) абордажный топор, (б) два метательных топора или (в) простое оружие, не являющееся метательным или стрелковым
* четыре дротика, набор странника и комплект одежды не дороже 8 см
''Произвольная экипировка''
* Вы получаете 3к4 × 10 серебряных монет (или 75 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Защита без доспехов
Если вы не носите доспехов, ваш Класс Доспеха равен 10 + мод. Ловкости + мод. Телосложения. Вы можете использовать щит, не теряя этого преимущества.
---
!!! [img[1.png]] Ярость
<<<
В бою вы сражаетесь с первобытной свирепостью.
<<<
В свой ход вы можете бонусным действием впасть в ярость.
Пока вы пребываете в ярости, вы получаете следующие преимущества, если не носите тяжёлую броню:
* Вы совершаете проверки и спасброски Силы с преимуществом.
* Если вы совершаете рукопашную атаку оружием, используя Силу, вы получаете бонус к броску урона, соответствующий вашему уровню варвара, как показано в колонке «Урон ярости» таблицы выше.
* Вы получаете сопротивление дробящему, колющему и рубящему урону.
Если вы были способны использовать заклинания, то вы не можете использовать или концентрироваться на заклинаниях, пока пребываете в ярости.
Ваша ярость длится 1 минуту. Она прекращается раньше, если вы потеряли сознание, если вы закончили ход, не атаковав враждебное по отношению к вам существо с момента окончания прошлого хода, или если вы с момента окончания прошлого хода не получили урон. Также вы можете прекратить свою ярость бонусным действием.
Если вы впадали в ярость максимальное для вашего уровня количество раз (смотрите колонку «Ярость»), то вы должны завершить продолжительный отдых, прежде чем сможете впасть в ярость ещё раз.
---
!!! [img[2.png]] Безрассудная атака
<<<
Вы способны отбросить любую заботу о защите, чтобы атаковать ожесточённо и безрассудно.
<<<
Когда вы совершаете первую атаку в свой ход, вы можете решить, что будете атаковать безрассудно. Решившись на это, вы в этом ходу совершаете рукопашные атаки оружием, использующие Силу, с преимуществом, но все броски атаки по вам до начала вашего следующего хода тоже совершаются с преимуществом.
---
!!! [img[2.png]] Чувство опасности
<<<
Вы получаете обострённое ощущение происходящего вокруг, помогающее вам избегать опасности.
<<<
Вы совершаете с преимуществом спасброски Ловкости от эффектов, которые вы можете видеть, такие как заклинания и ловушки. Для использования этого преимущества вы не должны быть [[ослеплены|Ослеплённый]], [[оглушены|Оглохший]] или [[недееспособны|Недееспособный]].
---
!!! [img[3.png]] Первобытное знание
Вы получаете владение одним навыком из списка доступных варвару на 1 уровне. На 10 уровне вы получаете владение ещё одним таким навыком.
---
!!! [img[3.png]] Путь дикости
<<<
В сердце каждого варвара пылает ярость, и в этом горниле выплавляется путь к величию варвара. Разные варвары связывают свою ярость с разными источниками. Для некоторых это внутреннее вместилище, где боль, горе и гнев сплавляются в кипящую ярость. Для других же это благословение, даруемое тотемным животным.
<<<
Вы выбираете путь, определяющий природу вашей ярости: [[Берсерка|Путь Берсерка]], [[Буревестника|Путь Буревестника]], [[Бушующего в бою|Путь Бушующего в бою]], [[Дикой магии|Путь Дикой магии]], [[Зверя|Путь Зверя]], [[Предка-хранителя|Путь Предка-хранителя]], [[Тотемного воина|Путь Тотемного воина]], [[Фанатика|Путь Фанатика]] или [[Экзокостюма|Путь Экзокостюма]]. Ваш выбор определит умения, предоставляемые на 3, 6, 10 и 14 уровнях.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Быстрое передвижение
Ваша скорость передвижения увеличивается на 2 м, если вы не носите тяжёлых доспехов.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[7.png]] Дикий инстинкт
Ваши инстинкты настолько обостряются, что вы совершаете с преимуществом броски инициативы.
Кроме того, если вы были [[захвачены врасплох|Захваченный врасплох]] в начале боя, и вы не являетесь [[недееспособным|Недееспособный]], вы можете в первом ходу действовать нормальным образом, но только если вы впадёте в ярость раньше всех других действий в этом ходу.
---
!!! [img[7.png]] Инстинктивный наскок
Частью того же бонусного действия, которым вы впадаете в ярость, вы можете переместиться на расстояние не превышающее половину вашей скорости.
---
!!! [img[9.png]] Сильный критический удар
Вы можете бросать одну дополнительную кость урона оружия, когда определяете дополнительный урон от критического попадания рукопашной атакой.
Количество костей увеличивается до двух на 13 уровне и трёх на 17 уровне.
---
!!! [img[11.png]] Непреклонная ярость
<<<
Ваша ярость позволяет вам сражаться, несмотря на тяжелейшие раны.
<<<
Если ваши хиты опустились до 0, когда вы пребываете в ярости, и вы не умерли сразу, вы можете совершить спасбросок Телосложения со Сл 10. В случае успеха ваши хиты опускаются лишь до 1.
Каждый раз, когда вы используете эту способность повторно, Сл спасброска увеличивается на 5. После того, как вы завершите короткий либо продолжительный отдых, Сл снова станет равна 10.
---
!!! [img[15.png]] Непрерывная ярость
Ваша ярость становится настолько сильной, что досрочно прекращается только если вы [[теряете сознание|Бессознательный]] или сами прекращаете её.
---
!!! [img[18.png]] Неукротимая мощь
Если результат вашей проверки Силы оказался меньше значения вашей Силы, то вы можете использовать значение характеристики вместо результата проверки.
---
!!! [img[20.png]] Дикий чемпион
<<<
Вы становитесь воплощением дикой силы.
<<<
Ваши значения Силы и Телосложения увеличиваются на 4. Максимальное значение для этих характеристик теперь 24.
| !Ур. | !БМ |!Умения |
| !1 | +2 |Боевой стиль, Второе дыхание |
| !2 | +2 |Всплеск действий (1/отдых) |
| !3 | +2 |Архетип воина, Увеличение характеристики |
| !4 | +2 |Черта |
| !5 | +3 |Дополнительная атака |
| !6 | +3 |Увеличение характеристики, Черта |
| !7 | +3 |Умение архетипа воина |
| !8 | +3 |Увеличение характеристики, Черта |
| !9 | +4 |Упорный (1/прод. отдых) |
| !10 | +4 |Увеличение характеристики, Умение архетипа воина |
| !11 | +4 |Дополнительная атака (2) |
| !12 | +4 |Увеличение характеристики, Черта |
| !13 | +5 |Упорный (2/прод. отдых) |
| !14 | +5 |Увеличение характеристики, Черта |
| !15 | +5 |Умение архетипа воина |
| !16 | +5 |Увеличение характеристики, Черта |
| !17 | +6 |Всплеск действий (2/отдых), Упорный (3/прод. отдых) |
| !18 | +6 |Умение архетипа воина |
| !19 | +6 |Увеличение характеристики |
| !20 | +6 |Дополнительная атака (3) |
//Ур. - Уровень, БМ - Бонус мастерства//
---
---
!!!Быстрое создание
Вы можете быстро создать воина, следуя этим рекомендациям. Во-первых, у вашей Силы или Ловкости (в зависимости от того, какие [[доспехи|Доспехи и щиты]] и [[оружие|Оружие]] вы хотите использовать) должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения (или Интеллекта, если вы планируете взять архетип воина [[Арканный стрелок]], [[Мистический рыцарь|Мистический рыцарь]], [[Пси-боец|Пси-боец]] или [[Техно-рыцарь]]). Во-вторых, выберите предысторию «[[солдат|Солдат]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к10 за каждый уровень воина
''Хиты на 1 уровне:'' 10 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к10 (или 6) + мод. Телосложения за каждый уровень воина после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Все доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие, воинское оружие, три вида экзотического оружия на ваш выбор
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Сила, Телосложение
* ''Навыки:'' Выберите два навыка из следующих: Акробатика, Атлетика, Внимательность, Выживание, Выносливость, Запугивание, История, Проницательность, Уход за животными
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) кольчуга или (б) дублет, длинный лук и кoлчан с 20 стрелами
* (а) щит и воинское лёгкое или одноручное оружие или (б) два воинских оружия, каждое не дороже 50 см
* (а) лёгкий арбалет и контейнер с 20 болтами или (б) четыре метательных топора
* (а) комплект дорожной одежды или (б) комплект одежды солдата
* набор путешественника и походный набор
''Произвольная экипировка''
* Вы получаете 8к4 × 10 серебряных монет (или 200 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Боевой стиль
Вы выбираете боевой стиль, соответствующий вашей специализации. Выберите один из следующих вариантов. Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль.
Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный воину.
<<tabs "[tag[Боевой стиль воина]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[1.png]] Второе дыхание
<<<
Вы обладаете ограниченным источником выносливости, которым можете воспользоваться, чтобы уберечь себя.
<<<
В свой ход вы можете бонусным действием восстановить себе хиты в размере 1к10 + ваш уровень воина.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[2.png]] Всплеск действий
<<<
Вы способны на мгновение преодолеть обычные возможности.
<<<
В свой ход вы можете совершить одно дополнительное действие помимо обычного и бонусного действий.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
Начиная с 17 уровня вы можете использовать это умение дважды, прежде чем вам понадобится отдых, но в течение одного хода его всё равно можно использовать лишь один раз.
---
!!! [img[3.png]] Архетип воина
<<<
Разные воины используют разные подходы для совершенствования своих воинских способностей. Воинский архетип отражает выбранный вами подход.
<<<
Вы выбираете архетип, отражающий стиль и технику, к которым вы стремитесь: [[Арканный стрелок]], [[Баннерет]], [[Кавалерист]], [[Мастер боевых искусств]], [[Мистический рыцарь]], [[Пси-боец]], [[Рунный рыцарь]], [[Самурай]], [[Техно-рыцарь]],
[[Чемпион]] или [[Эхо-рыцарь]]. Ваш выбор определит умения, предоставляемые на 3, 7, 10, 15 и 18 уровнях.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 8, 10, 12, 14 и 16 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 6, 8, 12, 14 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
Количество атак увеличивается до трёх на 11 уровне этого класса, и до четырёх на 20 уровне.
---
!!! [img[9.png]] Упорный
Вы можете перебросить проваленный спасбросок, и должны использовать новый результат.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Вы можете использовать это умение дважды между периодами продолжительного отдыха после достижения 13 уровня, и трижды после достижения 17 уровня.
| !Ур. | !БМ |!Умения |!ИЗаг |
| !1 | +2 |Использование заклинаний, Книга заклинаний, Магическое восстановление | 3 |
| !2 | +2 |Магическая традиция | 3 |
| !3 | +2 |Увеличение характеристики, Формулы заговоров | 3 |
| !4 | +2 |Черта | 4 |
| !5 | +3 |— | 4 |
| !6 | +3 |Умение магической традиции, Увеличение характеристики | 4 |
| !7 | +3 |— | 4 |
| !8 | +3 |Черта | 4 |
| !9 | +4 |Увеличение характеристики | 4 |
| !10 | +4 |Умение магической традиции | 5 |
| !11 | +4 |— | 5 |
| !12 | +4 |Увеличение характеристики, Черта | 5 |
| !13 | +5 |— | 5 |
| !14 | +5 |Умение магической традиции | 5 |
| !15 | +5 |Увеличение характеристики | 5 |
| !16 | +5 |Черта | 5 |
| !17 | +6 |— | 5 |
| !18 | +6 |Мастерство заклинателя | 5 |
| !19 | +6 |Увеличение характеристики | 5 |
| !20 | +6 |Фирменное заклинание | 5 |
''Ячейки заклинаний на уровень заклинаний''
| !Ур. | !1 | !2 | !3 | !4 | !5 | !6 | !7 | !8 | !9 |
| !1 | 2 | — | — | — | — | — | — | — | — |
| !2 | 3 | — | — | — | — | — | — | — | — |
| !3 | 4 | 2 | — | — | — | — | — | — | — |
| !4 | 4 | 3 | — | — | — | — | — | — | — |
| !5 | 4 | 3 | 2 | — | — | — | — | — | — |
| !6 | 4 | 3 | 3 | — | — | — | — | — | — |
| !7 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| !8 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| !9 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| !10 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| !11 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !16 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !17 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| !18 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| !19 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| !20 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗаг - Известные заговоры//
---
---
!!!Быстрое создание
Вы можете быстро создать волшебника, следуя этим рекомендациям. Во-первых, у вашего Интеллекта должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения или Ловкости. Если вы планируете присоединиться к [[Школе Очарования|Школа Очарования]], сделайте вторым по величине значение Харизмы. Во-вторых, выберите предысторию «[[мудрец|Мудрец]]». В-третьих, выберите заговоры //волшебная рука//, //луч холода// и //свет//, а также заклинания 1 уровня для вашей книги заклинаний: //волшебная стрела//, //доспехи мага//, //огненные ладони//, //очарование личности//, //падение пёрышком// и //усыпление//.
---
---
!!!Хиты
''Кость Хитов:'' 1к6 за каждый уровень волшебника
''Хиты на 1 уровне:'' 6 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к6 (или 4) + мод. Телосложения за каждый уровень волшебника после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Нет
* ''[[Оружие|Оружие]]:'' Простое лёгкое и одноручное дробящее, клинковое и стрелковое оружие
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Интеллект, Мудрость
* ''Навыки:'' Выберите два навыка из следующих: Анализ, История, Магия, Медицина, Проницательность, Религия
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) кинжал или (б) праща и кошель с 20 пулями
* (а) мешочек с компонентами или (б) арканная фокусировка
* (а) набор алхимика, (б) набор путешественника или (в) набор учёного
* (а) комплект дорожной одежды или (б) комплект одежды мудреца
* книга заклинаний и походный набор
''Произвольная экипировка''
* Вы получаете 4к4 × 10 серебряных монет (или 100 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Использование заклинаний
<<<
Как изучающий тайны магии, вы обладаете книгой, содержащей заклинания, которые отражают первые проблески вашей истинной силы.
<<<
''Заговоры (заклинания 0 уровня)''
Вам известен заговор //фокусы//, который не учитывается в общее количество известных вам заговоров, и ещё три заговора на ваш выбор из списка заклинаний волшебника. Вы узнаёте дополнительные заговоры волшебника на более высоких уровнях, как показано в колонке «ИЗаг (известные заговоры)».
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать один из известных вам заговоров, изученных с помощью этого умения, и заменить его другим заговором из списка заклинаний волшебника.
''Подготовка и сотворение заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть на первом и более высоких уровнях. Для сотворения одного из этих заклинаний вы должны потратить ячейку заклинания того же уровня или выше, что и само заклинание. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
Вы подготавливаете список заклинаний волшебника, доступных для сотворения. При этом вы выбираете количество заклинаний волшебника из списка своей книги заклинаний, равное ''модификатору Интеллекта + уровень волшебника '' (минимум одно заклинание). Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний волшебника.
Вы можете изменить список подготовленных заклинаний, когда завершаете продолжительный отдых. Подготовка нового списка заклинаний волшебника требует времени, проведённого в изучении книги заклинаний и запоминании слов и жестов, которые вы должны совершить, чтобы сотворить заклинание: не менее 1 минуты за уровень заклинания для каждого заклинания в вашем списке.
''Базовая характеристика заклинаний''
Интеллект является базовой характеристикой для сотворения ваших заклинаний волшебника, так как вы узнаёте свои заклинания путём целенаправленного исследования и запоминания.
Вы используете Интеллект в случаях, когда заклинание волшебника ссылается на базовую характеристику. Кроме того, вы используете Интеллект при определении Сл спасбросков от ваших заклинаний волшебника, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Интеллекта
Модификатор броска атаки = бонус мастерства + модификатор Интеллекта
```
''Ритуальное колдовство''
Вы можете сотворить заклинание волшебника как ритуал, если у этого заклинания есть ключевое слово «ритуал», и оно есть в вашей книге заклинаний. Вам не нужно иметь это заклинание подготовленным.
''Фокусировка заклинания''
Вы можете использовать арканную фокусировку в качестве заклинательной фокусировки для заклинаний волшебника.
---
!!! [img[1.png]] Книга заклинаний
На 1 уровне ваша книга заклинаний содержит шесть заклинаний волшебника 1 уровня по вашему выбору. Заговоры в ней не хранятся.
''Известные заклинания первого и более высоких уровней''
<<<
Заклинания, которые вы добавляете в свою книгу заклинаний, получая уровни, отражают исследования, которые вы проводите, а также интеллектуальные прорывы в изучении природы вселенной, сделанные вами. Вы также можете найти другие заклинания во время приключений. Вы можете обнаружить заклинание, записанное на свитке в сундуке злого волшебника, или, например, в пыльном фолианте в древней библиотеке.
<<<
Каждый раз, когда вы получаете уровень волшебника, вы можете добавить два заклинания волшебника по вашему выбору в книгу заклинаний. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний волшебника.
''Копирование заклинания в книгу''
<<<
Копирование заклинания в вашу книгу включает воспроизведение основной формы заклинания, а также расшифровку уникальной системы обозначений, используемой волшебником, который записал его. Вы должны подобрать нужные жесты и звуки, после чего записываете его в свою книгу заклинаний, используя собственные обозначения.
<<<
Если вы находите заклинание волшебника 1 или более высокого уровня, вы можете добавить его в свою книгу заклинаний, если его уровень позволяет вам подготовить его, и у вас имеется свободное время для его расшифровки и копирования.
За каждый уровень заклинания процесс занимает 2 часа и стоит 50 см. Стоимость представляет собой материальные компоненты, которые вы расходуете на эксперименты с заклинанием, чтобы им овладеть, а также высококачественные чернила для записи текста. После того как вы потратили время и деньги, вы можете подготавливать это заклинание как и свои прочие заклинания.
''Замена книги''
Вы можете копировать заклинание из своей книги заклинаний в другую, например, если хотите сделать запасную копию. Это делается так же как и простое копирование заклинаний, но быстрее и проще, так как вы понимаете свои собственные обозначения и уже знаете, как творить это заклинание. Вам необходимо потратить только по 10 см и 1 часу для каждого уровня копируемого заклинания.
Если вы потеряли свою книгу заклинаний, вы можете использовать ту же процедуру для записи заклинаний, которые у вас подготовлены, в новую книгу заклинаний. Для заполнения оставшейся части книги заклинаний необходимо найти и скопировать их повторно. По этой причине многие волшебники держат запасные книги заклинаний в безопасном месте.
''Внешний вид книги''
Ваша книга заклинаний является уникальным сборником заклинаний, со своими декоративными деталями и ремарками. Она может быть обычной, обтянутой кожей книгой, которую вы получили в подарок от наставника, или оплетённым золотом томом, который вы нашли в древней библиотеке, или даже разрозненной коллекцией записей, собранной вместе после потери предыдущей книги заклинаний в результате несчастного случая.
---
!!! [img[1.png]] Магическое восстановление
<<<
Вы способны восстанавливать часть магической энергии, изучая книгу заклинаний.
<<<
После завершения короткого отдыха или ночлега, вы можете восстановить часть использованных ячеек заклинаний. Ячейки заклинаний могут иметь суммарный уровень, который не превышает половину вашего уровня волшебника (округляя вверх), и ни одна из ячеек не может быть шестого уровня или выше.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[1.png]] Магическая традиция
<<<
Изучение волшебства старо настолько, что простирает корни к самым ранним открытиям магии смертных. Магия опирается на различные традиции, посвящённые её комплексному изучению.
Наиболее распространённые магические традиции в мультивселенной вращаются вокруг школ магии. Волшебники на протяжении веков каталогизировали тысячи заклинаний, группируя их по восьми так называемым школам. В некоторых местах эти традиции в буквальном смысле являются школами; один волшебник может пройти обучение в школе Иллюзии, а другой будет обучаться в городе со школой Очарования. В других учреждениях школы больше похожи на факультеты, соперничающие за студентов и финансирование. Даже волшебники-одиночки, которые учат в своих башнях, используют разделение магии по школам в учебном процессе, так как заклинания каждой школы требуют различного рода мастерства и методов.
Но среди волшебников есть и те, кто не специализируются на той или иной школе, а посвящают себя другим более узким направлениям. Такими волшебниками могут быть, например, члены организаций, для деятельности которых требуется опредлённый набор навыков, или энтузиасты, занимающиеся исследованием и комбинированием заклинаний различных школ со схожим эффектом.
<<<
Вы выбираете магическую традицию, формирующую вашу магическую практику, определённую либо одной из восьми школ: [[Воплощения|Школа Воплощения]], [[Вызова|Школа Вызова]], [[Иллюзии|Школа Иллюзии]], [[Некромантии|Школа Некромантии]], [[Ограждения|Школа Ограждения]], [[Очарования|Школа Очарования]], [[Преобразования|Школа Преобразования]] или [[Прорицания|Школа Прорицания]]; либо одним из более узких направлений: [[Военную магию|Военная магия]], [[Гравитургию|Гравитургия]], [[Орден Писарей]], [[Песнь клинка]] или [[Хронургию|Хронургия]]. Ваш выбор определит умения, предоставляемые на 2, 6, 10 и 14 уровнях.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[3.png]] Формулы заговоров
<<<
Вы записали набор магических формул в своей книги заклинаний, которые вы можете использовать, чтобы сформулировать заговор в уме.
<<<
Каждый раз, когда вы завершаете продолжительный отдых, вы можете свериться с формулами в своей книге заклинаний, выбрать один из известных вам заговоров волшебника и заменить его другим заговором из списка заклинаний волшебника.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[18.png]] Мастерство заклинателя
<<<
Вы достигли такого мастерства в отношении некоторых заклинаний, что можете творить их неограниченное количество раз.
<<<
Выберите одно заклинание волшебника 1 уровня и одно заклинание волшебника 2 уровня, которые есть в вашей книге заклинаний. Вы можете использовать эти заклинания без увеличения их уровня, не тратя ячеек заклинаний, при условии, что вы их подготовили. Если вы хотите увеличить уровень этих заклинаний, вы должны потратить ячейку заклинаний как обычно.
Потратив 8 часов на изучение, вы можете изменить одно или оба этих заклинания по своему усмотрению на заклинания тех же уровней.
---
!!! [img[20.png]] Фирменное заклинание
<<<
Вы отточили мастерство сотворения двух мощных заклинаний и можете сотворять их без усилий.
<<<
Выберите два заклинания волшебника 3 уровня из своей книги заклинаний в качестве фирменных заклинаний. Для вас эти заклинания всегда считаются подготовленными, они не учитываются в количестве подготовленных заклинаний, и вы можете сотворить каждое из этих заклинаний без увеличения их уровня, не тратя ячейку заклинаний. Если вы хотите увеличить уровень этих заклинаний, вы должны потратить ячейку заклинаний как обычно.
Вы не можете сотворить то же самое заклинание с помощью этого умения повторно, пока не завершите короткий или продолжительный отдых.
| !Ур. | !БМ |!Умения |!ИЗаг |
| !1 | +2 |Друидический язык, Использование заклинаний | 2 |
| !2 | +2 |Дикий облик, Дикий спутник, Круг друидов | 2 |
| !3 | +2 |Увеличение характеристики | 2 |
| !4 | +2 |Улучшение дикой формы, Черта | 3 |
| !5 | +3 |— | 3 |
| !6 | +3 |Умение круга друидов, Увеличение характеристики | 3 |
| !7 | +3 |— | 3 |
| !8 | +3 |Улучшение дикой формы, Черта | 3 |
| !9 | +4 |Увеличение характеристики | 3 |
| !10 | +4 |Умение круга друидов | 4 |
| !11 | +4 |— | 4 |
| !12 | +4 |Увеличение характеристики, Черта | 4 |
| !13 | +5 |— | 4 |
| !14 | +5 |Умение круга друидов | 4 |
| !15 | +5 |Увеличение характеристики | 4 |
| !16 | +5 |Черта | 4 |
| !17 | +6 |— | 4 |
| !18 | +6 |Безвременное тело, Заклинания зверя | 4 |
| !19 | +6 |Увеличение характеристики | 4 |
| !20 | +6 |Архидруид | 4 |
''Ячейки заклинаний на уровень заклинаний''
| !Ур. | !1 | !2 | !3 | !4 | !5 | !6 | !7 | !8 | !9 |
| !1 | 2 | — | — | — | — | — | — | — | — |
| !2 | 3 | — | — | — | — | — | — | — | — |
| !3 | 4 | 2 | — | — | — | — | — | — | — |
| !4 | 4 | 3 | — | — | — | — | — | — | — |
| !5 | 4 | 3 | 2 | — | — | — | — | — | — |
| !6 | 4 | 3 | 3 | — | — | — | — | — | — |
| !7 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| !8 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| !9 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| !10 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| !11 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !16 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !17 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| !18 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| !19 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| !20 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗаг - Известные заговоры//
---
---
!!!Быстрое создание
Вы можете быстро создать друида, следуя этим рекомендациям. Во-первых, у вашей Мудрости должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения. Во-вторых, выберите предысторию «[[отшельник|Отшельник]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень друида
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень друида после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи, средние доспехи
* ''[[Оружие|Оружие]]:'' Простое древковое, дробящее, клинковое и метательное оружие, болас, бумеранг, праща
* ''[[Инструменты|Инструменты]]:'' Набор травника
* ''Спасброски:'' Интеллект, Мудрость
* ''Навыки:'' Выберите два навыка из следующих: Внимательность, Выживание, Магия, Медицина, Природа, Проницательность, Религия, Уход за животными
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) средний щит или (б) простое оружие не дороже 10 см
* (а) серп или (б) простое древковое оружие
* (а) комплект дорожной одежды или (б) комплект одежды мудреца
* дублет, набор странника и фокусировка друидов
''Произвольная экипировка''
* Вы получаете 3к4 × 10 серебряных монет (или 75 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Друидический язык
Вы знаете Друидический язык — тайный язык друидов. Вы можете на нём говорить и оставлять тайные послания. Владеющие этим языком автоматически замечают эти послания. Остальные замечают присутствие послания при успешной проверке Мудрости (Внимательность) со Сл 15, но без помощи магии не могут расшифровать его.
---
!!! [img[1.png]] Использование заклинаний
<<<
Для сотворения заклинаний друиды пользуются сакральной эссенцией самой природы, формируя её согласно своей воле.
<<<
''Заговоры (заклинания 0 уровня)''
Вам известен заговор //искусство друидов//, который не учитывается в общее количество известных вам заговоров, и ещё два заговора на ваш выбор из списка заклинаний друида. Вы узнаёте дополнительные заговоры друида на более высоких уровнях, как показано в колонке « ИЗаг (известные заговоры)».
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать один из известных вам заговоров, изученных с помощью этого умения, и заменить его другим заговором из списка заклинаний друида.
''Подготовка и сотворение заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть на первом и более высоких уровнях. Для сотворения одного из этих заклинаний вы должны потратить ячейку заклинания того же уровня или выше, что и само заклинание. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
Вы подготавливаете список заклинаний друида, доступных для сотворения. При этом вы выбираете количество заклинаний друида из списка заклинаний друида, равное ''модификатору Мудрости + уровень друида'' (минимум одно заклинание).
Вы можете изменить список подготовленных заклинаний, когда завершаете продолжительный отдых. Подготовка нового списка заклинаний друида требует времени, проведённого в молитвах и медитации: не менее 1 минуты за уровень заклинания для каждого заклинания в вашем списке.
''Базовая характеристика заклинаний''
Мудрость является базовой характеристикой для сотворения ваших заклинаний друида, поскольку ваша магия подпитывается вашей преданностью и близостью к природе.
Вы используете Мудрость в случаях, когда заклинание друида ссылается на базовую характеристику. Кроме того, вы используете модификатор Мудрости при определении Сл спасбросков от ваших заклинаний друида, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Мудрости
Модификатор броска атаки = бонус мастерства + модификатор Мудрости
```
''Ритуальное колдовство''
Вы можете сотворить заклинание друида как ритуал, если у этого заклинания есть ключевое слово «ритуал», и оно подготовлено вами.
''Фокусировка заклинания''
Вы можете использовать фокусировку друидов в качестве заклинательной фокусировки для заклинаний друида.
---
!!! [img[2.png]] Дикий облик
Вы можете действием принять магическим образом форму любого зверя, которого вы видели. Вы можете использовать это умение дважды.
Чтобы восстановить все потраченные использования вы должны провести 30 минут в медитации или единении с природой. Вы можете делать это частью отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Уровень друида определяет, в каких зверей можно превращаться.
| !Ур. | !Макс. ПО |!Ограничения |!Пример |
| !2 | 1/4 |Без скорости плавания и полёта |Волк |
| !4 | 1/2 |Без скорости полёта |Крокодил |
| !8 | 1 |— |Гигантский орёл |
В облике животного можно оставаться количество часов, равное половине уровня друида. После чего вы возвращаетесь в нормальный облик, если не потратите ещё одно использование Дикого облика. Вы можете досрочно вернуться в нормальный облик бонусным действием. Вы автоматически возвращаетесь в нормальный облик, если теряете сознание, ваши хиты опускаются до 0, либо если вы умираете.
Когда вы превращены, действуют следующие правила:
* Вы получаете игровые параметры зверя (включая особые чувства), но сохраняете мировоззрение, личность и значения Интеллекта, Мудрости и Харизмы. Легендарные действия и действия в логове недоступны.
* Вы принимаете хиты и Кость Хитов зверя. Вернувшись в нормальный облик, ваши хиты будут такими же, как до превращения. Если ваши хиты опускаются до 0 после получения урона, излишки урона переносятся на нормальный облик. Если этот урон не довёл хиты персонажа до 0, он не становится [[умирающим|Умирающий]].
* У вас остаются владения навыками и спасбросками, в дополнение к таковым нового облика. Если владение есть и у вас и у зверя, но у него бонус выше, используется бонус зверя.
* Вы сохраняете преимущества от всех умений класса, расы и прочих источников, и можете пользоваться ими, если этому не препятствует новый физический облик.
* Вы не можете сотворять заклинания, а речь и действия, требующие рук, могут быть ограничены видом зверя. Превращение не прерывает вашу концентрацию на уже сотворённых заклинаниях и не мешает совершать действия, являющиеся частью заклинания, такие как в случае заклинания //призыв молнии//.
* Вы сами определяете, какое снаряжение останется лежать на земле, какое сольётся с новым обликом, а какое будет надето. Мастер решает, какое снаряжение может носить животное, чтобы оно действовало как обычно. Снаряжение не меняет форму и размер под новый облик, и если не подходит новому облику, оно должно остаться на земле или слиться с новым обликом. Слившееся с обликом снаряжение не работает, пока вы опять не примете свой облик.
---
!!! [img[2.png]] Дикий спутник
Вы можете действием потратить одно использование Дикого облика, чтобы сотворить заклинание //поиск фамильяра//, не тратя материальные компоненты. Призванный таким образом фамильяр принимает облик животного, но является феей и исчезает через количество часов, равное половине уровня друида.
---
!!! [img[2.png]] Круг друидов
<<<
Немногие знают, что друиды составляют единое сообщество, существующее вне политических границ. Любой друид считается частью сообщества, даже если живёт настолько изолированно, что никогда не видел высокопоставленных собратьев и не бывал на собраниях. Друиды считают друг друга братьями и сёстрами, но, как и диким зверям, это не мешает им иногда считать друг друга соперниками или даже добычей.
На местном уровне друиды, разделяющие определённые взгляды на природу, баланс и образ жизни друида, объединяются в круги.
<<<
Вы выбираете в каком круге друидов состоит ваш персонаж: [[Дикого огня|Круг Дикого огня]], [[Звёзд|Круг Звёзд]], [[Земли|Круг Земли]], [[Кошмаров|Круг Кошмаров]], [[Луны|Круг Луны]], [[Пастыря|Круг Пастыря]] или [[Снов|Круг Снов]]. Ваш выбор определит умения, предоставляемые на 2, 6, 10 и 14 уровнях.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[18.png]] Безвременное тело
<<<
Пронизывающая вас природная магия замедляет старение.
<<<
За каждые 10 лет ваше тело стареет только на 1 год.
---
!!! [img[18.png]] Заклинания зверя
Вы можете сотворять заклинания друида в Диком облике. Будучи зверем, вы можете совершать соматические и вербальные компоненты заклинаний друида, но не можете обеспечить материальные компоненты.
---
!!! [img[20.png]] Архидруид
Ваше число использований Дикого облика не ограничено.
Кроме того, вы можете игнорировать соматический и вербальный компоненты заклинаний друида, а также материальные компоненты без указанной цены и не расходуемые заклинанием. Это действует как в нормальном облике, так и в Диком облике.
| !Ур. | !БМ |!Умения |!ИЗаг |
| !1 | +2 |Божественный домен, Использование заклинаний | 3 |
| !2 | +2 |Божественный канал (1), Поглощение божественной энергии, Умение божественного домена | 3 |
| !3 | +2 |Увеличение характеристики | 3 |
| !4 | +2 |Черта | 4 |
| !5 | +3 |Уничтожение нежити (ПО 1/2) | 4 |
| !6 | +3 |Божественный канал (2), Умение божественного домена, Увеличение характеристики | 4 |
| !7 | +3 |— | 4 |
| !8 | +3 |Благословенные удары, Уничтожение нежити (ПО 1), Черта | 4 |
| !9 | +4 |Увеличение характеристики | 4 |
| !10 | +4 |Божественное вмешательство | 5 |
| !11 | +4 |Уничтожение нежити (ПО 2) | 5 |
| !12 | +4 |Увеличение характеристики, Черта | 5 |
| !13 | +5 |— | 5 |
| !14 | +5 |Уничтожение нежити (ПО 3) | 5 |
| !15 | +5 |Увеличение характеристики | 5 |
| !16 | +5 |Черта | 5 |
| !17 | +6 |Уничтожение нежити (ПО 4), Умение божественного домена | 5 |
| !18 | +6 |Божественный канал (3) | 5 |
| !19 | +6 |Увеличение характеристики | 5 |
| !20 | +6 |Улучшение божественного вмешательства | 5 |
''Ячейки заклинаний на уровень заклинаний''
| !Ур. | !1 | !2 | !3 | !4 | !5 | !6 | !7 | !8 | !9 |
| !1 | 2 | — | — | — | — | — | — | — | — |
| !2 | 3 | — | — | — | — | — | — | — | — |
| !3 | 4 | 2 | — | — | — | — | — | — | — |
| !4 | 4 | 3 | — | — | — | — | — | — | — |
| !5 | 4 | 3 | 2 | — | — | — | — | — | — |
| !6 | 4 | 3 | 3 | — | — | — | — | — | — |
| !7 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| !8 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| !9 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| !10 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| !11 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !16 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !17 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| !18 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| !19 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| !20 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗаг - Известные заговоры//
---
---
!!!Быстрое создание
Вы можете быстро создать жреца, следуя этим рекомендациям. Во-первых, у вашей Мудрости должно быть наивысшее значение. Следующей по величине характеристикой должна быть Сила или Телосложение. Во-вторых, выберите предысторию «[[прислужник|Прислужник]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень жреца
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень жреца после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи, средние доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Мудрость, Харизма
* ''Навыки:'' Выберите два навыка из следующих: История, Медицина, Проницательность, Религия, Убеждение
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) тяжёлая булава или (б) боевой молот (если владеете)
* (а) дублет, (б) чешуйчатый доспех или (в) кольчуга (если владеете)
* (а) лёгкий арбалет и контейнер с 20 болтами или (б) простое оружие не дороже 25 см
* (а) набор путешественника или (б) набор священника
* походный набор, священный символ, средний щит и комплект одежды не дороже 5 см
''Произвольная экипировка''
* Вы получаете 5к4 × 10 серебряных монет (или 125 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Божественный домен
<<<
В пантеоне все божества оказывают влияние на разные аспекты жизни смертных, называемые божественным доменом. Все домены, на которые оказывает влияние божество, составляют его портфолио. Например, портфолио греческого бога Аполлона включает в себя домены Жизни, Знания и Света. Как жрец, вы выбираете один аспект из портфолио своего божества, которому вы придаёте особое значение, и получаете силы, относящиеся к этому домену.
Ваш выбор может соответствовать определённому религиозному течению, посвящённому вашему божеству. Аполлона, например, в одном регионе могут почитать как Аполлона Феба («Лучезарный», «Сияющий»), подчеркивая его влияние на домен Света, а в другом месте - как Аполлона Акесия («Целитель»), подчеркивая его связь с доменом Жизни. Кроме того, ваш выбор домена может быть просто вопросом личных предпочтений, аспектом божества, который больше всего близок вам.
<<<
Вы выбираете домен, связанный с вашим божеством: [[Буря|Домен Бури]], [[Война|Война]], [[Жизнь|Домен Жизни]], [[Знание|Домен Знания]], [[Кузня|Домен Кузни]], [[Магия|Домен Магии]], [[Мир|Домен Мира]], [[Обман|Домен Обмана]], [[Порядок|Домен Порядка]], [[Природа|Домен Природы]], [[Свет|Домен Света]], [[Смерть|Домен Смерти]], [[Сумерки|Домен Сумерек]] или [[Упокоение|Домен Упокоения]]. Описание каждого домена приводит примеры божеств, которые влияют на соответствующие аспекты.
Ваш выбор определит заклинания домена, дополнительные способы использования Божественного канала на 2 уровне, и дополнительные умения, предоставляемые на 6 и 17 уровнях.
''Заклинания домена''
У каждого домена есть список заклинаний, которые вы получаете на новых уровнях жреца. Как только вы получаете заклинание домена, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний жреца, оно всё равно будет считаться для вас заклинанием жреца.
---
!!! [img[1.png]] Использование заклинаний
<<<
Будучи проводником божественной силы, вы можете сотворять заклинания жреца.
<<<
''Заговоры (заклинания 0 уровня)''
Вам известен заговор //чудотворство//, который не учитывается в общее количество известных вам заговоров, и ещё три заговора на ваш выбор из списка заклинаний жреца. Вы узнаёте дополнительные заговоры жреца на более высоких уровнях, как показано в колонке «ИЗаг (известные заговоры)».
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать один из известных вам заговоров, изученных с помощью этого умения, и заменить его другим заговором из списка заклинаний жреца.
''Подготовка и сотворение заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть на первом и более высоких уровнях. Для сотворения одного из этих заклинаний вы должны потратить ячейку заклинаний того же уровня или выше, что и само заклинание. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
Вы подготавливаете список заклинаний жреца, доступных для сотворения. При этом вы выбираете количество заклинаний жреца, равное ''модификатору Мудрости + уровень жреца'' (минимум одно заклинание). Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний жреца.
Вы можете изменить список подготовленных заклинаний, когда завершаете продолжительный отдых. Подготовка нового списка заклинаний жреца требует времени, проведённого в молитвах и медитации: не менее 1 минуты за уровень заклинания для каждого заклинания в вашем списке.
''Базовая характеристика заклинаний''
Мудрость является базовой характеристикой для сотворения ваших заклинаний жреца. Сила ваших заклинаний исходит от вашей преданности своему божеству.
Вы используете Мудрость в случаях, когда заклинание жреца ссылается на базовую характеристику. Кроме того, вы используете модификатор Мудрости при определении Сл спасбросков от ваших заклинаний жреца, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Мудрости
Модификатор броска атаки = бонус мастерства + модификатор Мудрости
```
''Ритуальное колдовство''
Вы можете сотворить заклинание жреца как ритуал, если у этого заклинания есть ключевое слово «ритуал», и оно подготовлено вами.
''Фокусировка заклинания''
Вы можете использовать священный символ в качестве заклинательной фокусировки для заклинаний жреца.
---
!!! [img[2.png]] Божественный канал
<<<
Вы получаете возможность направлять божественную энергию непосредственно от своего божества, используя её для подпитки магических эффектов.
<<<
Вы начинаете с двумя такими эффектами: Изгнание нежити и эффектом, определяемым вашим доменом. Некоторые домены дают вам дополнительные эффекты, как только вы получите новые уровни.
Когда вы используете Божественный канал, вы выбираете, какой эффект создать.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний жреца.
Вы можете использовать Божественный канал один раз. Начиная с 6 уровня вы можете использовать Божественный канал дважды, а начиная с 18 уровня, вы можете использовать его три раза. Чтобы восстановить все потраченные использования вы должны провести 30 минут в молитве своему божеству, вы можете делать это частью отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
''Божественный канал: Изгнание нежити''
Вы действием демонстрируете свой священный символ и читаете молитву, изгоняющую нежить. Вся нежить, которая может видеть или слышать вас в пределах 6 м, должна совершить спасбросок Мудрости. Если существо провалило спасбросок, оно изгоняется на 1 минуту, или пока не получит урон.
Изгнанное существо должно тратить свои ходы, пытаясь уйти от вас как можно дальше, и не может добровольно переместиться в пространство, находящееся в пределах 6 м от вас. Оно также не может совершать реакции. В качестве действия существо может использовать только Рывок или пытаться освободиться от эффекта, препятствующего его передвижению. Если двигаться некуда, существо может использовать действие Уклонение.
---
!!! [img[2.png]] Поглощение божественной энергии
<<<
Вы способны подпитывать свои заклинания божественной энергией.
<<<
Бонусным действием вы можете прикоснуться к своему священному символу, прочесть молитву и, потратив одно использование Божественного канала, восстановить себе одну потраченную ячейку заклинаний, уровнем не выше, чем половина вашего бонуса мастерства (округляя вверх).
Количество раз, которое вы можете использовать это умение, зависит от вашего уровня в этом классе: начиная с 2 уровня один раз, начиная с 6 уровня дважды и начиная с 18 уровня трижды. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Уничтожение нежити
Если нежить проваливает спасбросок от вашего умения Изгнание нежити, существо мгновенно уничтожается, если его показатель опасности не превышает значения, указанного в таблице ниже.
| !Ур. жреца |!ПО нежити |
| 5 | 1/2 |
| 8 | 1 |
| 11 | 2 |
| 14 | 3 |
| 17 | 4 |
---
!!! [img[8.png]] Благословенные удары
<<<
Ваши удары благословены божественной мощью.
<<<
Когда существо получает урон от одного из ваших заговоров или атаки оружием, вы можете нанести ему дополнительно 1к8 урона излучением. Вы не можете использовать это умение повторно до начала вашего следующего хода.
---
!!! [img[10.png]] Божественное вмешательство
<<<
Вы можете воззвать к своему божеству о помощи, когда сильно в этом нуждаетесь.
<<<
Действием вы можете описать помощь, которую вы ожидаете от своего божества, и совершить бросок к100. При выпадении значения, не превышающего ваш уровень жреца, ваше божество вмешается. Мастер сам выбирает природу вмешательства; подойдёт эффект какого-либо заклинания жреца или заклинания домена.
Если божество вмешивается, вы не можете использовать это умение в течение 30 дней. В противном случае вы можете использовать это умение после завершения продолжительного отдыха.
На 20 уровне ваше просьба о вмешательстве автоматически успешна без необходимости в броске.
| !Ур. | !БМ |!Умения |!ИП |!СП |!ИЗаг | !Ячейки заклинаний |<|<|<|<|
|~|~|~|~|~|~| !1 | !2 | !3 | !4 | !5 |
| !1 | +2 |Использование заклинаний, Магический мастеровой | — | — | 2 | 2 | — | — | — | — |
| !2 | +2 |Создание примочки | 4 | 2 | 2 | 2 | — | — | — | — |
| !3 | +2 |Подходящий инструмент, Специализация изобретателя, Увеличение характеристики | 4 | 2 | 2 | 3 | — | — | — | — |
| !4 | +2 |Черта | 4 | 2 | 2 | 3 | — | — | — | — |
| !5 | +3 |Умение специализации изобретателя | 4 | 2 | 2 | 4 | 2 | — | — | — |
| !6 | +3 |Компетентность во владении инструментами, Увеличение характеристики | 6 | 3 | 2 | 4 | 2 | — | — | — |
| !7 | +3 |Проблеск гениальности | 6 | 3 | 2 | 4 | 3 | — | — | — |
| !8 | +3 |Черта | 6 | 3 | 2 | 4 | 3 | — | — | — |
| !9 | +4 |Увеличение характеристики, Умение специализации изобретателя | 6 | 3 | 2 | 4 | 3 | 2 | — | — |
| !10 | +4 |Специалист по магическим предметам | 8 | 4 | 3 | 4 | 3 | 2 | — | — |
| !11 | +4 |Хранящий заклинание предмет | 8 | 4 | 3 | 4 | 3 | 3 | — | — |
| !12 | +4 |Увеличение характеристики, Черта | 8 | 4 | 3 | 4 | 3 | 3 | — | — |
| !13 | +5 |— | 8 | 4 | 3 | 4 | 3 | 3 | 1 | — |
| !14 | +5 |Эксперт по магическим предметам | 10 | 5 | 4 | 4 | 3 | 3 | 1 | — |
| !15 | +5 |Увеличение характеристики, Умение специализации изобретателя | 10 | 5 | 4 | 4 | 3 | 3 | 2 | — |
| !16 | +5 |Черта | 10 | 5 | 4 | 4 | 3 | 3 | 2 | — |
| !17 | +6 |— | 10 | 5 | 4 | 4 | 3 | 3 | 3 | 1 |
| !18 | +6 |Мастер по магическим предметам | 12 | 6 | 4 | 4 | 3 | 3 | 3 | 1 |
| !19 | +6 |Увеличение характеристики | 12 | 6 | 4 | 4 | 3 | 3 | 3 | 2 |
| !20 | +6 |Душа изобретения | 12 | 6 | 4 | 4 | 3 | 3 | 3 | 2 |
//Ур. - Уровень, БМ - Бонус мастерства, ИП - Известные примочки, СП - Созданные примочки, ИЗаг - Известные заговоры //
---
---
!!!Быстрое создание
Вы можете быстро создать изобретателя, следуя этим рекомендациям. Во-первых, у вашего Интеллекта должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения или Ловкости. Во-вторых, выберите предысторию «[[гильдейский ремесленник|Гильдейский ремесленник]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень изобретателя
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень изобретателя после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи, средние доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие, тяжёлые арбалеты, экзотическое стрелковое оружие
* ''[[Инструменты|Инструменты]]:'' Воровские инструменты, инструменты ремонтника, один вид инструментов ремесленника на ваш выбор
* ''Спасброски:'' Телосложение, Интеллект
* ''Навыки:'' Выберите два навыка из следующих: Анализ, Внимательность, История, Ловкость рук, Магия, Медицина, Природа
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) дублет или (б) чешуйчатый доспех
* (а) лёгкий арбалет и контейнер с 20 болтами или (б) два простых оружия, каждое не дороже 10 см
* (а) набор алхимика, (б) набор исследователя или (в) набор путешественника
* воровские инструменты, походный набор и комплект одежды не дороже 10 см
''Произвольная экипировка''
* Вы получаете 5к4 × 10 серебряных монет (или 125 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Использование заклинаний
<<<
Вы изучили то, как работает магия, и то, как накладывать заклинания, направляя её через предметы. Наблюдающим за вами кажется, что вы не используете обычные способы для сотворения заклинаний, а творите чудеса с помощью обычных предметов и всяких диковинок.
<<<
''Необходимые инструменты''
При сотворении любого заклинания с помощью умения Использование заклинаний вы должны держать в руках [[воровские инструменты|Воровские инструменты]] или любые из [[инструментов ремесленника|Инструменты ремесленников]] в качестве магической фокусировки (это значит, что у заклинаний есть материальный компонент).
После получения умения Создание примочки на 2 уровне вы сможете в качестве магической фокусировки использовать любую из ваших примочек.
''Заговоры (заклинания 0 уровня)''
Вам известны два заговора на ваш выбор из списка заклинаний изобретателя. Вы узнаёте дополнительные заговоры изобретателя на более высоких уровнях, как показано в колонке «ИЗаг (известные заговоры)».
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать один из известных вам заговоров, изученных с помощью этого умения, и заменить его другим заговором из списка заклинаний изобретателя.
''Подготовка и сотворение заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть на первом и более высоких уровнях. Для сотворения одного из этих заклинаний вы должны потратить ячейку заклинаний того же уровня или выше, что и само заклинание. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
Вы подготавливаете список заклинаний изобретателя, доступных для сотворения. При этом вы выбираете количество заклинаний изобретателя, равное ''модификатору Интеллекта + половина уровня изобретателя, округляя вниз'' (минимум одно заклинание). Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний изобретателя.
Вы можете изменить список подготовленных заклинаний, когда завершаете продолжительный отдых. Подготовка нового списка заклинаний изобретателя требует времени, проведённого в наладке вашей магической фокусировки: не менее 1 минуты за уровень заклинания для каждого заклинания в вашем списке.
''Базовая характеристика заклинаний''
Интеллект является базовой характеристикой для ваших заклинаний изобретателя — ваше понимание теории магии позволяет вам владеть этими заклинаниями с невероятным мастерством.
Вы используете Интеллект в случаях, когда заклинание изобретателя ссылается на базовую характеристику. Кроме того, вы используете модификатор Интеллект при определении Сл спасбросков от ваших заклинаний волшебника, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Интеллекта
Модификатор броска атаки = бонус мастерства + модификатор Интеллекта
```
''Ритуальное колдовство''
Вы можете сотворить заклинание изобретателя как ритуал, если у этого заклинания есть ключевое слово «ритуал», и оно подготовлено вами.
---
!!! [img[1.png]] Магический мастеровой
<<<
Вы научились вкладывать искру магии в обычные предметы.
<<<
Чтобы использовать это умение, вы должны держать в руках [[воровские инструменты|Воровские инструменты]] или [[инструменты ремесленника|Инструменты ремесленников]]. Затем действием вы касаетесь Крошечного немагического объекта и наделяете его одним из следующих магических свойств на ваш выбор:
* Объект излучает яркий свет в радиусе 1 м и тусклый свет в радиусе еще 1 м.
* Объект проигрывает записанное сообщение, которое можно услышать в пределах 2 м каждый раз, когда до него дотрагивается существо. Вы произносите это сообщение, когда наделяете объект данным свойством, а сама запись не может быть длиннее 6 секунд.
* Объект непрерывно испускает запах или издаёт звук на ваш выбор (ветер, волны, стрекотание и прочее). Выбранное явление можно ощутить на расстоянии до 2 м.
* Статичный визуальный эффект появляется на одной из поверхностей объекта. Этот эффект может быть изображением, текстом до 25 слов, линиями и формами или набором этих элементов по вашему выбору.
Выбранное свойство навсегда остается присущим объекту. Действием вы можете коснуться объекта и лишить его этого свойства.
Таким образом можно наделить магическими свойствами несколько предметов, но не больше, чем одно свойство на один предмет. Максимальное количество объектов, которые вы можете наделить магией за один раз, равно вашему модификатору Интеллекта (минимум один объект). Если вы пытаетесь превысить свой максимум, самое старое свойство немедленно заканчивается, а затем начинает действовать новое свойство.
---
!!! [img[2.png]] Создание примочки
<<<
Вы получаете способность вливать в обычные предметы определённую магию и превращать их в магические.
<<<
В описании каждой из перечисленных в списке примочек указывается тип объекта, который можно подвергнуть процессу, а также то, требует ли полученный магический предмет настройки.
Некоторые из примочек требуют определённого минимального уровня изобретателя. Вы не можете изучить такую примочку, пока не достигните этого уровня.
Вы не можете изучить примочку более одного раза, если её описание не говорит об обратном.
''Известные примочки''
Получив это умение, выберите четыре инфузии из [[Актуального списка примочек|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1587747735]]. При достижении определённых уровней вы изучаете дополнительные примочки на ваш выбор, как показано в колонке «ИП (известные примочки)».
Всякий раз, когда вы получаете уровень в этом классе, можете заменить одну из уже изученных примочек на новую.
''Насыщение предмета магией''
При завершении продолжительного отдыха, вы можете дотронуться до немагического объекта и наполнить его магией примочки. Примочка действует только на те виды объектов, которые указаны в её описании. Если созданный предмет требует настройки, вы можете настроиться на него сразу же. Если вы решили настроиться на предмет позже, то должны будете сделать это, используя обычный процесс настройки.
Ваша примочка остаётся в предмете бесконечно долго, но когда вы умираете, она исчезает через количество дней, равное вашему модификатору Интеллекта (минимум 1 день). Исчезает она также, если вы отказываетесь от знания этой примочки, чтобы изучить другую.
Вы можете наполнить магией более одного немагического объекта при завершении продолжительного отдыха. Максимальное их количество отображено в колонке «СП (созданные примочки)». Вы должны коснуться каждого объекта, и каждая из ваших примочек может быть применена только к одному объекту единовременно. Более того, ни один объект не выдержит попытки наполнения его более чем одной примочкой. Если вы попытаетесь превысить максимальное количество примочек, самая старая из них немедленно заканчивается, а затем применяется новая.
Если на предмете, в котором содержатся другие вещи, например, //сумке хранения//, заканчивается действие примочки, его содержимое просто появляется вокруг него.
---
!!! [img[3.png]] Подходящий инструмент
<<<
Вы научились создавать именно те инструменты, которые вам нужны.
<<<
С помощью [[воровских инструментов|Воровские инструменты]] или [[инструментов ремесленника|Инструменты ремесленников]] вы можете магическим образом создать один набор инструментов ремесленника в незанятом пространстве в пределах 1 м от вас. Это потребует 1 часа непрерывной работы, которая может быть проведена во время короткого или продолжительного отдыха. Хотя они и созданы с помощью магии, сами инструменты немагические и исчезают, когда вы снова используете это умение.
---
!!! [img[3.png]] Специализация изобретателя
Вы выбираете свою специализацию: [[Алхимик]], [[Артиллерист]], [[Боевой кузнец]] или [[Бронник]]. Ваш выбор определит умения, предоставляемые на 3, 5, 9, и 15 уровнях.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[6.png]] Компетентность во владении инструментами
Ваш бонус мастерства удваивается при всех проверках характеристик, совершаемых с использованием инструмента, которым вы владеете.
---
!!! [img[7.png]] Проблеск гениальности
<<<
Вы обрели способность находить решения проблем, будучи в стрессовых ситуациях.
<<<
Когда вы или другое существо, видимое вами в пределах 6 м от вас, совершаете проверку характеристики или спасбросок, вы можете реакцией добавить к броску свой модификатор Интеллекта.
Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум один раз). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Специалист по магическим предметам
Вы прекрасно понимаете то, как использовать и создавать магические предметы:
* Вы можете настроиться на четыре магических предмета одновременно.
* Если вы создаете магический предмет с редкостью «обычный» или «необычный», то на его создание у вас уходит четверть обычного времени и вдвое меньше золота.
---
!!! [img[11.png]] Хранящий заклинание предмет
<<<
Теперь вы можете хранить заклинание в предмете.
<<<
Каждый раз, завершая продолжительный отдых, вы можете прикоснуться к одному оружию или предмету, который можно использовать в качестве заклинательной фокусировки, и сохранить в нём одно заклинание 1 или 2 уровня из списка заклинаний изобретателя, которому необходимо 1 действие для сотворения (вам не обязательно подготавливать это заклинание).
Держа этот объект в руке, существо может действием выпустить эффект заклинания из предмета, используя вашу базовую характеристику заклинаний. Если заклинание требует концентрации, существо должно её поддерживать. Заклинание остается в объекте до тех пор, пока не будет использовано количество раз, равное удвоенному значению вашего модификатора Интеллекта (минимум дважды), или пока вы не воспользуетесь этим умением снова.
---
!!! [img[14.png]] Эксперт по магическим предметам
Ваш навык работы с магическими предметами становится глубже:
* Вы можете настроиться на пять магических предметов одновременно.
* Вы игнорируете все требования класса, расы, заклинания и уровня при настройке или использовании магических предметов.
---
!!! [img[18.png]] Мастер по магическим предметам
Вы можете настроиться на шесть магических предметов одновременно.
---
!!! [img[20.png]] Душа изобретения
Вы развиваете мистическую связь со своими магическими предметами, которую вы можете использовать для защиты:
* Вы получаете бонус +1 ко всем спасброскам за каждый предмет, на который вы в данный момент настроены.
* Если ваши хиты опустились до нуля, но вы не убиты, вы можете реакцией уничтожить одну из ваших примочек и опустить количество ваших хитов до 1 вместо 0.
| !Ур. | !БМ |!Умения | !ИЗаг | !ИЗакл | !ЯЗ | !УЯ | !ИВ |
| !1 | +2 |Магия договора, Потусторонний покровитель | 2 | 2 | 1 | 1 | — |
| !2 | +2 |Таинственные воззвания | 2 | 3 | 2 | 1 | 2 |
| !3 | +2 |Предмет договора, Увеличение характеристики | 2 | 4 | 2 | 2 | 2 |
| !4 | +2 |Черта | 3 | 5 | 2 | 2 | 2 |
| !5 | +3 |— | 3 | 6 | 2 | 3 | 3 |
| !6 | +3 |Увеличение характеристики, Умение покровителя | 3 | 7 | 2 | 3 | 3 |
| !7 | +3 |— | 3 | 8 | 2 | 4 | 4 |
| !8 | +3 |Черта | 3 | 9 | 2 | 4 | 4 |
| !9 | +4 |Увеличение характеристики | 3 | 10 | 2 | 5 | 5 |
| !10 | +4 |Умение покровителя | 4 | 10 | 2 | 5 | 5 |
| !11 | +4 |Таинственный арканум (6 уровень) | 4 | 11 | 3 | 5 | 5 |
| !12 | +4 |Увеличение характеристики, Черта | 4 | 11 | 3 | 5 | 6 |
| !13 | +5 |Таинственный арканум (7 уровень) | 4 | 12 | 3 | 5 | 6 |
| !14 | +5 |Умение покровителя | 4 | 12 | 3 | 5 | 6 |
| !15 | +5 |Таинственный арканум (8 уровень), Увеличение характеристики | 4 | 13 | 3 | 5 | 7 |
| !16 | +5 |Черта | 4 | 13 | 3 | 5 | 7 |
| !17 | +6 |Таинственный арканум (9 уровень) | 4 | 14 | 4 | 5 | 7 |
| !18 | +6 |- | 4 | 14 | 4 | 5 | 8 |
| !19 | +6 |Увеличение характеристики | 4 | 15 | 4 | 5 | 8 |
| !20 | +6 |Мастер мистики | 4 | 15 | 4 | 5 | 8 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗаг - Известные заговоры, ИЗакл - Известные заклинания, ЯЗ - Ячейки заклинаний, УЯ - Уровень ячеек, ИВ - Известные воззвания//
---
---
!!!Быстрое создание
Вы можете быстро создать колдуна, следуя этим рекомендациям. Во-первых, у вашей Харизмы должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения. Во-вторых, выберите предысторию «[[шарлатан|Шарлатан]]». В-третьих, выберите заговоры //леденящее прикосновение// и //мистический заряд//, а также заклинания 1 уровня //ведьмин снаряд// и //очарование личности//.
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень колдуна
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень колдуна после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Мудрость, Харизма
* ''Навыки:'' Выберите два навыка из следующих: Анализ, Запугивание, История, Магия, Обман, Природа, Религия
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) лёгкий арбалет и контейнер с 20 болтами или (б) простое оружие не дороже 15 см
* (а) мешочек с компонентами или (б) арканная фокусировка
* дублет, два кинжала, простое оружие не дороже 10 см, набор исследователя, походный набор и комплект одежды не дороже 10 см
''Произвольная экипировка''
* Вы получаете 4к4 × 10 серебряных монет (или 100 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! Альтернативный вариант колдуна: Сделка архивиста
Вы можете посчитать, что ваш персонаж-колдун, представляет собой скорее интеллектуальную нежели харизматичную личность. Это опциональное правило позволяет вам создать колдуна, базовой характеристикой которого является Интеллект. Для этого:
* замените владение спасбросками Харизмы владением спасбросками Интеллекта;
* замените любые упоминания вашего модификатора Харизмы в умениях колдуна или таинственных воззваниях вашим модификатором Интеллекта;
* используйте Интеллект вместо Харизмы в качестве вашей базовой характеристики заклинаний.
---
!!! [img[1.png]] Магия договора
<<<
Исследования тайн и магия, дарованная покровителем, дают вам возможность использовать заклинания.
<<<
''Заговоры (заклинания 0 уровня)''
Вы известен заговор //фокусы//, который не учитывается в общее количество известных вам заговоров, и ещё два заговора на ваш выбор из списка заклинаний колдуна. Вы узнаёте дополнительные заговоры колдуна на более высоких уровнях, как показано в колонке «ИЗаг (известные заговоры)».
''Ячейки заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть, а также уровень этих ячеек — все ваши ячейки заклинаний одного уровня. Для сотворения одного из заклинаний колдуна с 1 по 5 уровень вы должны потратить ячейку заклинаний. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны два заклинания 1 уровня на ваш выбор из списка заклинаний колдуна.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний колдуна.
''Заклинательная гибкость''
Каждый раз, когда вы завершаете продолжительный отдых, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний колдуна того же уровня.
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний колдуна, с уровнем, не превышающим уровень ячеек заклинаний колдуна.
''Базовая характеристика заклинаний''
Харизма является базовой характеристикой для сотворения ваших заклинаний колдуна.
Вы используете Харизму в случаях, когда заклинание колдуна ссылается на базовую характеристику. Кроме того, вы используете Харизму при определении Сл спасбросков от ваших заклинаний колдуна, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Харизмы
Модификатор броска атаки = бонус мастерства + модификатор Харизмы
```
''Фокусировка заклинания''
Вы можете использовать арканную фокусировку в качестве заклинательной фокусировки для заклинаний колдуна.
---
!!! [img[1.png]] Мистический ритуал
Вы можете восполнить запасы вашей магии договора, потратив 30 минут на проведение особого мистического ритуала. Этот ритуал может быть проведён частью отдыха, а по его окончанию вы восстанавливаете все потраченные ячейки заклинаний, полученные вами от умения Магия договора.
Содержание и метод проведения ритуала могут сильно варьироваться. Ритуалом может быть жертвоприношение, медитация с целью связаться с космосом, выполнение особого условия договора, прямое общение с покровителем или что-то другое. Решите, как будет выглядеть ваш мистический ритуал, основываясь на вашем покровителе и характере договора.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[1.png]] Потусторонний покровитель
<<<
Существа, выступающие покровителями колдунов, являются могущественными обитателями других планов существования. Не боги, но почти равные богам в своих силах. Разные покровители предоставляют колдунам доступ к разным силам и воззваниям, и ожидают определённых услуг взамен.
Некоторые покровители коллекционируют колдунов, раздавая мистические знания относительно свободно, или похваляются возможностью подчинять смертных своей воле. Другие покровители даруют свои силы неохотно, и могут заключить договор лишь с одним колдуном. Колдуны, служащие общему покровителю, могут относиться друг к другу как к союзникам, родственникам или соперникам.
<<<
Вы заключили сделку с потусторонним существом на ваш выбор: [[Архифея]], [[Ведьмовской клинок]], [[Великий Древний]], [[Гений]], [[Древний дракон]], [[Исчадие]], [[Небожитель]] или [[Нежить]]. Ваш выбор определит умения, предоставляемые на 1, 6, 10 и 14 уровнях.
---
!!! [img[2.png]] Таинственные воззвания
<<<
В процессе изучения оккультных знаний вы раскопали таинственные воззвания: фрагменты запрещённых знаний, которые даруют магические способности.
<<<
Вы получаете два воззвания на ваш выбор. Получая новые уровни колдуна, вы получаете дополнительные воззвания на ваш выбор, как показано в колонке «ИВ (известные воззвания)».
[[Актуальный список таинственных воззваний|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1448348621]]
Кроме того, когда вы получаете новый уровень этого класса, вы можете выбрать одно известное вам воззвание и заменить его другим, которое вы способны выучить на этом уровне.
Если воззвание требует от существа совершения спасброска, используется Сл спасбросков от ваших заклинаний колдуна.
Если у воззвания есть требования, вы должны соответствовать им, чтобы изучить его. Вы можете изучить воззвание в то же время, когда вы начали соответствовать этим требованиям. Требование к уровню подразумевает ваш уровень в этом классе.
---
!!! [img[3.png]] Предмет договора
<<<
Потусторонний покровитель дарует вам подарок за верную службу.
<<<
Вы получаете одно из следующих умений на выбор:
<<tabs "[tag[Предмет договора]]" "" "$:/state/tab1">>
<<<
Получаемые вами от договора блага отражают природу вашего покровителя.
//''Договор гримуара.''// Ваша «Книга Теней» может быть изящным золочёным томом с заклинаниями очарования и иллюзий, дарованным высокомерной Архифеей. Она может быть тяжёлым, переплетённым в кожу демонов и отделанным железом томом, содержащим заклинания вызова и драгоценные, но запретные знания о зловещих уголках мироздания. Таким может быть дар Исчадия. Или это может быть изорванный дневник безумца, коснувшегося разума Великого Древнего. Этот дневник содержит обрывки заклинаний, понять которые позволяет только ваше собственное растущее безумие.
//''Договор клинка.''// Если вашим покровителем является Архифея, ваше оружие может быть узким клинком, покрытым лозами. Если вы служите Исчадию, ваше оружие будет топором чёрного металла, украшенным изображением языков пламени. Если ваш покровитель — Великий Древний, вашим оружием может стать древнее копьё с самоцветом в наконечнике, выглядящим как ужасный, немигающий глаз.
//''Договор цепи.''// Ваш фамильяр смышлёнее чем обычные. Его внешность может отражать сущность вашего покровителя. Так, спрайт или псевдодракон относится к Архифее, а бес или квазит к Исчадию. Поскольку сущность Великого Древнего не поддаётся пониманию, ему подходит любая форма фамильяра.
<<<
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[11.png]] Таинственный арканум
<<<
Ваш покровитель дарует вам магический секрет, называемый арканумом.
<<<
Выберите одно заклинание 6 уровня из списка заклинаний колдуна в качестве арканума.
Вы можете сотворить это заклинание, не используя ячейку заклинаний. Вы должны завершить продолжительный отдых, чтобы сделать это ещё раз.
На следующих уровнях вы получаете новые заклинания, которые можно применить таким образом:
* одно 7 уровня на 13 уровне;
* одно 8 уровня на 15 уровне;
* одно 9 уровня на 17 уровне.
Вы восстанавливаете все потраченные использования арканумов после завершения продолжительного отдыха.
Кроме того, всякий раз когда вы получаете новый уровень колдуна, вы можете заменить один из магических арканумов другим заклинанием того же уровня из списка заклинаний колдуна.
---
!!! [img[20.png]] Мастер мистики
<<<
Вы можете обратиться к своему покровителю с просьбой восстановить ваши потраченные силы.
<<<
Вы можете действием обратиться к покровителю, чтобы восстановить все использованные ячейки заклинаний, дарованные умением Магия договора, а также потраченные Таинственные арканумы 6 и 7 уровней.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
| !Ур. | !БМ |!Умения | !КГ | !ИПК |
| !1 | +2 |Охотничья пагуба, Проклятие крови | 1к4 | 1 |
| !2 | +2 |Алый обряд, Боевой стиль | 1к4 | 1 |
| !3 | +2 |Орден кровавых охотников, Увеличение характеристики | 1к4 | 1 |
| !4 | +2 |Черта | 1к4 | 1 |
| !5 | +3 |Дополнительная атака | 1к6 | 1 |
| !6 | +3 |Клеймо порицания, Проклятие крови (2), Увеличение характеристики | 1к6 | 2 |
| !7 | +3 |Алый обряд (2), Умение ордена | 1к6 | 2 |
| !8 | +3 |Черта | 1к6 | 2 |
| !9 | +4 |Мрачная психометрия, Увеличение характеристики | 1к6 | 2 |
| !10 | +4 |Тёмное усиление | 1к6 | 3 |
| !11 | +4 |Умения ордена | 1к8 | 3 |
| !12 | +4 |Увеличение характеристики, Черта | 1к8 | 3 |
| !13 | +5 |Клеймо привязи, Проклятие крови (3) | 1к8 | 3 |
| !14 | +5 |Алый обряд (3), Закалённая душа | 1к8 | 4 |
| !15 | +5 |Увеличение характеристики, Умения ордена | 1к8 | 4 |
| !16 | +5 |Черта | 1к8 | 4 |
| !17 | +6 |Проклятие крови (4) | 1к10 | 4 |
| !18 | +6 |Умения ордена | 1к10 | 5 |
| !19 | +6 |Увеличение характеристики | 1к10 | 5 |
| !20 | +6 |Кровавое мастерство | 1к10 | 5 |
//Ур. - Уровень, БМ - Бонус мастерства, КГ - Кость Гемомантии, ИПК - Известные Проклятия крови//
---
---
!!!Быстрое создание
Вы можете быстро создать кровавого охотника, следуя этим рекомендациям. Во-первых, у вашей Силы или Ловкости (в зависимости от того, какие [[доспехи|Доспехи и щиты]] и [[оружие|Оружие]] вы хотите использовать) должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения (или Интеллекта, если вы хотите сосредоточиться на силе своих проклятий или магических сил). Во-вторых, выберите предысторию «[[беспризорник|Беспризорник]]» или «[[солдат|Солдат]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к10 за каждый уровень кровавого охотника
''Хиты на 1 уровне:'' 10 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к10 (или 6) + мод. Телосложения за каждый уровень кровавого охотника после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи, средние доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие, воинское оружие, два вида экзотических оружия на ваш выбор
* ''[[Инструменты|Инструменты]]:'' Инструменты алхимика
* ''Спасброски:'' Ловкость, Интеллект
* ''Навыки:'' Выберите три навыка из следующих: Акробатика, Анализ, Атлетика, Выживание, Выносливость, История, Магия, Проницательность, Религия
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) воинское оружие не дороже 50 см или (б) два простых оружие, каждое не дороже 15 см
* (а) лёгкий арбалет и контейнер с 20 болтами или (б) простое оружие не дороже 15 см
* (а) кожаный доспех или (б) чешуйчатый доспех
* (а) набор алхимика, (б) набор исследователя, (в) набор охотника на чудовищ или (г) набор путешественника
* походный набор и комплект одежды не дороже 5 см
''Произвольная экипировка''
* Вы получаете 6к4 × 10 серебряных монет (или 150 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Охотничья пагуба
<<<
Вы выжили после воздействия Охотничьей пагубы - опасного и охраняемого веками ритуала, изменившего вашу кровь, связав вас с тьмой и заострив ваше чутьё к ней.
<<<
Вы совершаете с преимуществом проверки Мудрости (Выживание) для выслеживания фей, исчадий и нежити, а также проверки Интеллекта с целью вспомнить информацию о таких существах.
<<<
Охотничья пагуба также наделила ваше тело способностью использовать гемомантию, подпитывая эти способности вашей же кровью и жизненной силой.
<<<
Некоторые из ваших умений требуют, чтобы ваша цель совершила спасбросок, чтобы противостоять эффектам умения. Сл спасброска рассчитывается следующим образом:
```
Сл спасброска Магии крови = 8 + бонус мастерства + модификатор Интеллекта
```
---
!!! [img[1.png]] Проклятие крови
<<<
Вы научились направлять, а иногда и жертвовать, часть своей жизненной эссенции, чтобы проклинать или манипулировать существами с помощью искусства гемомантии.
<<<
Вам известно одно Проклятие крови на ваш выбор.
Колонка «ИПК (Известные Проклятия крови)» показывает, когда вы сможете выучить новые Проклятия крови. Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам Проклятий крови, изученных с помощью этого умения, и заменить его другим.
При наложении Проклятия крови, но до того, как оно подействует на цель, вы можете усилить его, получив количество урона некротической энергией равное одному броску вашей Кости Гемомантии, как показано в колонке «КГ (Кость Гемомантии)». Этот урон не может быть уменьшен никаким образом. Усиленное проклятие получает дополнительный эффект, указанный в его описании.
Бескровные существа невосприимчивы к не усиленным Проклятиям крови.
Вы можете использовать Проклятие крови один раз. Начиная с 6 уровня вы можете использовать Проклятие крови дважды, начиная с 13 уровня - трижды, а начиная с 17 уровня - четыре раза. Чтобы восстановить все потраченные использования, вы должны потратить 30 минут на проведение ритуала крови, вы можете делать это частью отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
<<tabs "[tag[Проклятие крови]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[2.png]] Алый обряд
<<<
Вы научились улучшать своё оружие обрядом гемомантии, который наделяет ваши атаки энергией стихий.
<<<
Бонусным действием вы можете активировать известный вам Алый обряд на одном удерживаемом вами оружии. При активации обряда вы получаете количество урона некротической энергией равное одному броску вашей Кости Гемомантии, как показано в колонке «КГ (Кость Гемомантии)». Этот урон не может быть уменьшен никаким образом. Обряд прекращает действовать, когда вы завершаете короткий или продолжительный отдых.
Пока обряд активен, атаки этим оружием являются магическими и наносят дополнительный урон вида, указанного в описании обряда, в количестве равном броску вашей Кости Гемомантии. На одном оружии может быть активирован только один Алый обряд одновременно. Другие существа не могут получить преимущества вашего Алого обряда.
Вы изучаете один Алый обряд, когда получаете это умение, и ещё по одному обряду, когда достигаете 7 и 14 уровней в этом классе.
* //''Обряд бури.''// Ваш Алый обряд наносит урон электричеством.
* //''Обряд пламени.''// Ваш Алый обряд наносит урон огнём.
* //''Обряд стужи.''// Ваш Алый обряд наносит урон холодом.
* //''Обряд смерти.''// Ваш Алый обряд наносит урон некротической энергией. (Требование: 14 уровень)
* //''Обряд прорицания.''// Ваш Алый обряд наносит урон психической энергией. (Требование: 14 уровень)
* //''Обряд рёва.''// Ваш Алый обряд наносит урон звуком. (Требование: 14 уровень)
---
!!! [img[2.png]] Боевой стиль
Вы выбираете боевой стиль, соответствующий вашей специализации. Выберите один из следующих вариантов. Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль.
Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный кровавому охотнику.
<<tabs "[tag[Боевой стиль кровавого охотника]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[3.png]] Орден кровавых охотников
<<<
Существует небольшое количество тайных орденов кровавых охотников, которые охраняют свои тайные техники и ритуалы. Чтобы получить возможность пройти ритуал Охотничьей пагубы, с которого начинается путь кровавого охотника, необходимо стать членом одного из этих орденов, и только после того, как охотник докажет свою самоотверженность и мастерство, ему начнут открываться секреты ордена. Именно в этих малочисленных, таинственных сектах постигается истинная сила кровавого охотника.
<<<
Вы посвящаете себя ордену кровавых охотников: [[Ордену Истребителей призраков|Орден Истребителей призраков]], [[Ордену Мутантов|Орден Мутантов]], [[Ордену Нечестивых душ|Орден Нечестивых душ]] или [[Ордену Оборотней|Орден Оборотней]]. Ваш выбор определит умения, предоставляемые на 3, 7, 11, 15 и 18 уровнях.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[6.png]] Клеймо порицания
Каждый раз, когда вы наносите урон существу оружием, на котором активирован Алый обряд, вы можете выжечь на нём арканное клеймо гемомантии (действие не требуется). Вы всегда знаете направление к заклейменному существа, пока оно находится на одном плане существования с вами, и каждый раз, когда заклейменное существо наносит урон вам или видимому вами существу в пределах 1 м от вас, заклейменное существо получает урон психической энергией в количестве равном вашему модификатору Интеллекта (минимум 1).
Это клеймо действует до тех пор, пока вы не окончите его преждевременно (действие не требуется), либо пока не клеймите этим умением другое существо. Клеймо можно окончить заклинанием //рассеивание магии//, при этом клеймо считается заклинанием уровня равного половине вашего уровня в этом классе (максимум 9 уровня)
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[9.png]] Мрачная психометрия
<<<
Вы развили сверхъестественный талант к распознаванию секретов, окружающих таинственные реликты или места, затронутые злом.
<<<
Вы совершаете проверки Интеллекта (История) с целью вспомнить информацию о зловещей или трагической истории предмета, к которому вы прикасаетесь, или места, в котором вы находитесь, с преимуществом. По усмотрению Мастера, при достаточно высоком результате броска ваш персонаж может испытать краткие видения прошлого, связанные с этим предметом или местом.
---
!!! [img[10.png]] Тёмное усиление
<<<
Магия крови наполняет ваше тело, навсегда усиливая вашу стойкость.
<<<
Ваша скорость увеличивается на 1 м, и вы получаете бонус к спасброскам Силы, Ловкости или Телосложения, равный вашему модификатору Интеллекта (минимум +1).
---
!!! [img[13.png]] Клеймо привязи
Урон психической энергией от Клейма порицания возрастает до удвоенного модификатора Интеллекта (минимум 2).
Кроме того, заклеймённое существо не может совершать действие Рывок и, если оно, пытается телепортироваться или покинуть текущий план любым образом, оно получает 4к6 урона психической энергией и должно совершить спасбросок Мудрости. При провале телепорт или переход на другой план проваливается.
---
!!! [img[14.png]] Закалённая душа
Вы совершаете спасброски против [[испуга|Испуганный]] или [[очарования|Очарованный]] с преимуществом.
---
!!! [img[20.png]] Кровавое мастерство
<<<
Вы отточили свой контроль над магией крови, смягчая свои жертвы и расширяя свои возможности.
<<<
Один раз за ход, когда умение кровавого охотника требует совершения броска Кости Гемомантии, вы можете совершить ещё один бросок и выбрать один из двух результатов.
Кроме того, когда вы совершаете критическое попадание атакой оружием, на котором активирован Алый обряд, вы восстанавливаете одно использование Проклятия крови.
| !Ур. | !БМ | !БИ | !ОЦ | !Скорость |!Умения |
| !1 | +2 | 1к6 | — | — |Защита без доспехов, Боевые искусства |
| !2 | +2 | 1к6 | 2 | +2 м |Движение без доспехов, Ци |
| !3 | +2 | 1к6 | 3 | +2 м |Заряженный ци удар, Монастырская практика, Текучее движение, Увеличение характеристики |
| !4 | +2 | 1к6 | 4 | +2 м |Медленное падение, Черта, Ускоренное исцеление |
| !5 | +3 | 1к8 | 5 | +2 м |Дополнительная атака, Ошеломляющий удар |
| !6 | +3 | 1к8 | 6 | +3 м |Боевая медитация, Увеличение характеристики, Умение монастырской практики, Энергетические удары |
| !7 | +3 | 1к8 | 7 | +3 м |Спокойствие разума, Увёртливость |
| !8 | +3 | 1к8 | 8 | +3 м |Черта |
| !9 | +4 | 1к8 | 9 | +3 м |Увеличение характеристики, Улучшенное движение без доспехов |
| !10 | +4 | 1к8 | 10 | +4 м |Чистота тела |
| !11 | +4 | 1к10 | 11 | +4 м |Умение монастырской практики |
| !12 | +4 | 1к10 | 12 | +4 м |Увеличение характеристики, Черта |
| !13 | +5 | 1к10 | 13 | +4 м |Язык солнца и луны |
| !14 | +5 | 1к10 | 14 | +5 м |Алмазная душа |
| !15 | +5 | 1к10 | 15 | +5 м |Безвременное тело, Увеличение характеристики |
| !16 | +5 | 1к10 | 16 | +5 м |Черта |
| !17 | +6 | 1к12 | 17 | +5 м |Умение монастырской практики |
| !18 | +6 | 1к12 | 18 | +6 м |Пустое тело |
| !19 | +6 | 1к12 | 19 | +6 м |Увеличение характеристики |
| !20 | +6 | 1к12 | 20 | +6 м |Совершенство |
//Ур. - Уровень, БМ - Бонус мастерства, БИ - Боевые искусства, ОЦ - Очки ци//
---
---
!!!Быстрое создание
Вы можете быстро создать монаха, следуя этим рекомендациям. Во-первых, у вашей Ловкости должно быть наивысшее значение. Следующим по величине должно быть значение Мудрости. Во-вторых, выберите предысторию «[[отшельник|Отшельник]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень монаха
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень монаха после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Нет
* ''[[Оружие|Оружие]]:'' Монашеское оружие (//см. Боевые искусства//)
* ''[[Инструменты|Инструменты]]:'' Один вид инструментов ремесленика или музыкальных инструментов на ваш выбор
* ''Спасброски:'' Сила, Ловкость
* ''Навыки:'' Выберите два навыка из следующих: Акробатика, Атлетика, Выносливость, История, Проницательность, Религия, Скрытность
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) боевой посох, (б) короткий меч или (в) другое монашеское оружие
* набор странника и комплект одежды не дороже 5 см
''Произвольная экипировка''
* Вы получаете 1к4 × 10 серебряных монет (или 25 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Боевые искусства
Ваше знание боевых искусств позволяет вам эффективно использовать в бою безоружные удары и монашеское оружие, приведённое в таблице ниже.
''Монашеское оружие''
|!Древковое |!Дробящее |!Клинковое |!Контактное |
|Боевой посох |Дубинка |Кама |Верёвочная обмотка |
|Короткое копьё |Лёгкая булава |Короткий меч |Кастет |
|Трезубец |Сай |— |Кастет-топор |
|— |Тонфа |— |Цестус |
|!Метательное |!Стрелковое |!Топоры |!Цепы |
|Метательный нож |— |Абордажный топор |Нунчаки |
|Сюрикен |— |Походный топорик |— |
Если вы безоружны или используете только монашеское оружие, и не носите ни доспехов, ни щита, вы получаете следующие преимущества:
* Вы можете использовать Ловкость вместо Силы для бросков атак и урона ваших безоружных атак и атак монашеским оружием.
* Вы можете использовать 1к6 вместо обычной кости урона ваших безоружных атак или атак монашеским оружием. Эта кость увеличивается с вашим уровнем, как показано в колонке « БИ (боевые искусства)».
* Если в свой ход вы совершаете действием [[Атака]] безоружную атаку или атаку монашеским оружием, вы можете частью этого действия совершить одну дополнительную безоружную атаку или атаку монашеским контактным оружием. Вы не можете совершить более одной дополнительной атаки частью действия [[Атака]], в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).
---
!!! [img[1.png]] Защита без доспехов
Если вы не носите доспехов и щитов, ваш Класс Доспеха равен 10 + мод. Ловкости + мод. Мудрости.
---
!!! [img[2.png]] Движение без доспехов
Ваша скорость увеличивается на 2 м, если вы не носите доспехов и щитов. Этот бонус увеличивается с ростом вашего уровня, согласно колонке «Скорость».
На 9 уровне вы получаете возможность в свой ход перемещаться по вертикальным поверхностям и по поверхности жидкости, не падая во время движения.
---
!!! [img[2.png]] Ци
<<<
Ваши тренировки позволяют вам управлять мистической энергией ци.
<<<
Ваш доступ к этой энергии выражается количеством очков ци. Ваш уровень монаха определяет это количество, согласно колонке «ОЦ (очки ци)».
Вы можете использовать эти очки чтобы активировать различные умения ци. Вначале вам известны следующие четыре умения: Зоркий глаз, Поступь ветра, Терпеливая оборона и Шквал ударов. С повышением уровня в этом классе вы выучите новые умения ци.
Некоторые из ваших умений ци требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска ци = 8 + бонус мастерства + модификатор Мудрости
```
<<tabs "[tag[Умение ци]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Вы должны потратить как минимум 30 минут на медитацию для восстановления потраченных очков ци, и можете восстановить их таким образом количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
---
!!! [img[3.png]] Заряженный ци удар
Если вы совершаете действие, тратящее очки ци, вы можете совершить одну безоружную атаку или атаку монашеским оружием бонусным действием до конца этого хода.
---
!!! [img[3.png]] Монастырская практика
<<<
В монастырях мультивселенной следуют нескольким основным практикам. Большинство монастырей следуют какой-то одной практике, но в некоторых почитают каждую из них и обучают монахов согласно их способностям и интересам. Все практики основываются на одних и тех же базовых техниках - различия проявляются при более глубоком изучении. Поэтому монах должен выбрать ту или иную практику только по достижении 3 уровня.
<<<
Вы выбираете монастырскую практику, которой следуете: [[Астрального тела|Практика Астрального тела]], [[Восходящего дракона|Практика Восходящего дракона]], [[Кенсея|Практика Кенсея]], [[Милосердия|Практика Милосердия]], [[Открытой ладони|Практика Открытой ладони]], [[Познания смерти|Практика Познания смерти]], [[Пьяного мастера|Практика Пьяного мастера]], [[Солнечной души|Практика Солнечной души]], [[Тени|Практика Тени]] или [[Четырёх стихий|Практика Четырёх стихий]]. Ваш выбор определит умения, предоставляемые на 3, 6, 11 и 17 уровнях.
---
!!! [img[3.png]] Текучее движение
<<<
Вы можете контролировать чужую агрессию, перенаправляя её кинетическую энергию.
<<<
Когда по вам попадают безоружной атакой или атакой оружием, вы можете реакцией отразить её, понижая получаемый вами от неё урон на 1к10 + мод. Ловкости + уровень монаха.
Если вы снизили урон до 0, вы можете перенаправить кинетическую энергию атаки, потратив 1 очко ци, следующими способами, в зависимости от того, была ли эта атака рукопашной или дальнобойной:
//''Рукопашная атака.''// Вы можете совершить одну безоружную атаку по атакующему существу частью этой реакции.
//''Дальнобойная атака.''// Вы можете поймать снаряд в случае, если он достаточно мал, чтоб держать его одной рукой, и одна из ваших рук свободна. Если вы поймали снаряд таким образом, вы можете совершить дальнобойную атаку пойманным оружием или боеприпасом частью этой реакции, как если бы он был сюрикеном.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Медленное падение
Вы можете реакцией уменьшить полученный вами урон от падения на значение, равное вашему уровню монаха, умноженному на пять.
---
!!! [img[4.png]] Ускоренное исцеление
Вы можете действием потратить 2 очка ци и совершить бросок вашей кости боевых искусств. Вы восстанавливаете хиты в количестве равном выпавшему значению + ваш бонус мастерства.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[5.png]] Ошеломляющий удар
<<<
Вы можете взаимодействовать с энергией ци, текущей в теле вашего противника.
<<<
Когда вы попадаете по существу двумя рукопашными атаками в один ход, оно не может использовать реакции до конца вашего следующего хода.
Кроме того, один раз в ход, когда вы попадаете по существу рукопашной атакой, вы можете потратить 1 очко ци, чтобы нанести ошеломляющий удар. Цель должна преуспеть в спасброске Телосложения, иначе она станет [[ошеломлённой|Ошеломлённый]] до конца вашего следующего хода.
---
!!! [img[6.png]] Боевая медитация
<<<
Вы научились восстанавливать часть своей ци с помощью короткой медитации.
<<<
В начале своего хода, если вы дееспособны, вы можете решить провести свой ход в медитации. Для этого требуется ваша концентрация (как если бы концентрировались на заклинании). Когда вы это делает, вы не можете двигаться, говорить или совершать какие-либо действия или реакции до начала вашего следующего хода или пока не потеряете концентрацию. Если вы сохраняете концентрацию до начала вашего следующего хода, вы восстанавливаете количество потраченных очков ци, равное половине вашего максимального количества очков ци.
После того, как вы восстановили очки ци таким образом, вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
На 11 уровне вы получаете возможность совершать реакции во время медитации с помощью этого умения.
---
!!! [img[6.png]] Энергетические удары
Ваши безоружные удары считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
---
!!! [img[7.png]] Спокойствие разума
В начале своего хода, если вы [[испуганы|Испуганный]] или [[очарованы|Очарованный]], вы можете окончить одно из этих состояний. Если вы это делаете, вы не можете совершать действие в этот ход (вы всё ещё можете совершать бонусное действие).
---
!!! [img[7.png]] Увёртливость
<<<
Ваше инстинктивное проворство позволяет вам уклоняться от эффектов, направленных на определённую область, вроде дыхания синего дракона или заклинания //огненный шар//.
<<<
Если вы попадаете под действие эффекта, позволяющего совершить спасбросок Ловкости, чтобы получить только половину урона, вы вместо этого не получаете урона при успешном спасброске и получаете только половину урона при проваленном.
---
!!! [img[10.png]] Чистота тела
Ваше мастерство ци, текущем сквозь ваше тело, делает вас иммунным к болезням и яду.
---
!!! [img[13.png]] Язык солнца и луны
Вы научились взаимодействовать с энергией ци в чужом разуме, и теперь вы понимаете речь на любом языке. Кроме того, все существа, способные понимать хотя бы один язык, понимают то, что вы сказали.
---
!!! [img[14.png]] Алмазная душа
Ваше мастерство ци предоставляет вам владение всеми спасбросками.
Кроме того, если вы провалили спасбросок, вы можете повторить его, потратив 1 очко ци, и должны использовать новый результат.
---
!!! [img[15.png]] Безвременное тело
Ваша ци подпитывает вас так, что ваше тело больше не подвержено признакам старения, но вы всё ещё можете умереть от старости. Вы не можете быть состарены магически. Кроме того, вам больше не требуется еда и вода.
---
!!! [img[18.png]] Пустое тело
Вы можете действием потратить 4 очка ци, чтобы стать [[невидимым|Невидимый]] на 1 минуту. В течение этого времени вы получаете сопротивление всем видам урона, кроме урона силовым полем.
Кроме того, вы можете потратить 8 очков ци, чтобы сотворить заклинание //проекция в астрал// без применения материальных компонентов. Вы не можете перемещать кого-либо вместе с собой, сотворяя это заклинание таким образом.
---
!!! [img[20.png]] Совершенство
Если при проверке инициативы у вас нет очков ци, вы получаете 4 таких очка.
| !Ур. | !БМ |!Умения | !Ячейки заклинаний |<|<|<|<|
|~|~|~| !1 | !2 | !3 | !4 | !5 |
| !1 | +2 |Божественное чувство, Наложение рук | — | — | — | — | — |
| !2 | +2 |Боевой стиль, Использование заклинаний, Божественная кара | 2 | — | — | — | — |
| !3 | +2 |Божественное здоровье, Поглощение божественной энергии, Священная клятва, Увеличение характеристики | 3 | — | — | — | — |
| !4 | +2 |Черта | 3 | — | — | — | — |
| !5 | +3 |Дополнительная атака | 4 | 2 | — | — | — |
| !6 | +3 |Аура защиты, Увеличение характеристики | 4 | 2 | — | — | — |
| !7 | +3 |Умение священной клятвы| 4 | 3 | — | — | — |
| !8 | +3 |Черта | 4 | 3 | — | — | — |
| !9 | +4 |Увеличение характеристики | 4 | 3 | 2 | — | — |
| !10 | +4 |Аура отваги | 4 | 3 | 2 | — | — |
| !11 | +4 |Улучшенная божественная кара | 4 | 3 | 3 | — | — |
| !12 | +4 |Увеличение характеристики, Черта | 4 | 3 | 3 | — | — |
| !13 | +5 |—| 4 | 3 | 3 | 1 | — |
| !14 | +5 |Очищающее касание | 4 | 3 | 3 | 1 | — |
| !15 | +5 |Увеличение характеристики, Умение священной клятвы | 4 | 3 | 3 | 2 | — |
| !16 | +5 |Черта | 4 | 3 | 3 | 2 | — |
| !17 | +6 |— | 4 | 3 | 3 | 3 | 1 |
| !18 | +6 |Улучшения ауры | 4 | 3 | 3 | 3 | 1 |
| !19 | +6 |Увеличение характеристики | 4 | 3 | 3 | 3 | 2 |
| !20 | +6 |Умение священной клятвы | 4 | 3 | 3 | 3 | 2 |
//Ур. - Уровень, БМ - Бонус мастерства//
---
---
!!!Быстрое создание
Вы можете быстро создать паладина, следуя этим рекомендациям. Во-первых, у вашей Силы должно быть наивысшее значение. Следующим по величине должно быть значение Харизмы. Во-вторых, выберите предысторию «[[благородный|Благородный]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к10 за каждый уровень паладина
''Хиты на 1 уровне:'' 10 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к10 (или 6) + мод. Телосложения за каждый уровень паладина после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Все доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие, воинское оружие, одно экзотическое оружие на ваш выбор
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Мудрость, Харизма
* ''Навыки:'' Выберите два навыка из следующих: Атлетика, Выносливость, Запугивание, Медицина, Проницательность, Религия, Убеждение
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) щит и воинское лёгкое или одноручное оружие или (б) два воинских оружия, каждое не дороже 50 см
* (а) пять дротиков или (б) простое оружие не дороже 25 см
* (а) набор охотника на чудовищ, (б) набор священника или (в) набор путешественника
* (а) комплект дорожной одежды или (б) комплект одежды солдата
* кольчуга, походный набор и священный символ
''Произвольная экипировка''
* Вы получаете 8к4 × 10 серебряных монет (или 200 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Божественное чувство
<<<
Присутствие сильного зла воспринимается вашими чувствами как неприятный запах, а могущественное добро звучит как небесная музыка в ваших ушах.
<<<
Вы можете действием открыть своё сознание для обнаружения таких сил. До конца своего следующего хода вы знаете местоположение всех исчадий, небожителей и нежити, не находящихся за полным укрытием, в пределах 12 м от вас. Вам известен тип (исчадие, небожитель, нежить) любого существа, чьё присутствие вы чувствуете, но вы не можете определить, кто это конкретно. В этом же радиусе вы также обнаруживаете присутствие мест и предметов, которые были освящены или осквернены, например, заклинанием //святилище//.
Вы можете использовать это умение количество раз, равное 1 + мод. Харизмы. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[1.png]] Наложение рук
<<<
Ваше благословенное касание может лечить раны.
<<<
У вас есть запас целительной силы, который восстанавливается после завершения продолжительного отдыха. При помощи этого запаса вы можете восстанавливать количество хитов, равное уровню паладина, умноженному на 5.
Вы можете действием коснуться существа и, зачерпнув силу из запаса, восстановить количество хитов этого существа на любое число, вплоть до максимума, оставшегося в вашем запасе.
В качестве альтернативы, вы можете потрать 5 хитов из вашего запаса хитов для излечения цели от одной болезни или одного действующего на неё яда. Вы можете устранить несколько эффектов болезни и ядов одним использованием Наложения рук, тратя хиты отдельно для каждого эффекта.
Это умение не оказывает никакого эффекта на нежить и конструктов.
---
!!! [img[2.png]] Боевой стиль
Вы выбираете боевой стиль, соответствующий вашей специализации. Выберите один из следующих вариантов. Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль.
Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный паладину.
<<tabs "[tag[Боевой стиль паладина]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[2.png]] Божественная кара
Если вы попадаете по существу атакой рукопашным оружием, вы можете потратить одну ячейку заклинаний для причинения цели урона излучением, который добавится к урону от оружия. Дополнительный урон равен 2к8 за ячейку 1 уровня, плюс 1к8 за каждый уровень ячейки выше первого, до максимума 5к8. Урон увеличивается на 1к8, если цель — нежить или исчадие, до максимума 6к8.
---
!!! [img[2.png]] Использование заклинаний
<<<
Вы узнаёте, как черпать божественную магию посредством медитации и молитв, чтобы творить заклятья подобно жрецу.
<<<
''Подготовка и сотворение заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть на первом и более высоких уровнях. Для сотворения одного из этих заклинаний вы должны потратить ячейку заклинаний того же уровня или выше, что и само заклинание. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
Вы подготавливаете список заклинаний паладина, доступных для сотворения. При этом вы выбираете количество заклинаний паладина, равное ''модификатору Харизмы + половина уровня паладина, округляя вниз'' (минимум одно заклинание). Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний паладина.
Вы можете изменить список подготовленных заклинаний, когда завершаете продолжительный отдых. Подготовка нового списка заклинаний паладина требует времени, проведённого в молитвах и медитации: не менее 1 минуты за уровень заклинания для каждого заклинания в вашем списке.
''Базовая характеристика заклинаний''
Харизма является базовой характеристикой для сотворения ваших заклинаний паладина, так как их мощь проистекает из силы ваших убеждений.
Вы используете Харизму в случаях, когда заклинание паладина ссылается на базовую характеристику. Кроме того, вы используете модификатор Харизмы при определении Сл спасбросков от ваших заклинаний паладина, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Харизмы
Модификатор броска атаки = бонус мастерства + модификатор Харизмы
```
''Фокусировка заклинания''
Вы можете использовать священный символ в качестве заклинательной фокусировки для заклинаний паладина.
---
!!! [img[3.png]] Божественное здоровье
Божественная магия, текущая через вас, делает вас иммунным к болезням.
---
!!! [img[3.png]] Поглощение божественной энергии
<<<
Вы способны подпитывать свои заклинания божественной энергией.
<<<
Бонусным действием вы можете прикоснуться к своему священному символу, прочесть молитву и, потратив одно использование Божественного канала, восстановить себе одну потраченную ячейку заклинаний, уровнем не выше, чем половина вашего бонуса мастерства (округляя вверх).
Количество раз, которое вы можете использовать это умение, зависит от вашего уровня в этом классе: начиная с 3 уровня один раз, начиная с 7 уровня дважды и начиная с 15 уровня трижды. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдых
---
!!! [img[3.png]] Священная клятва
<<<
Становление паладином подразумевает под собой принятие обетов, которые обращают паладина к праведным делам и пути активного сопротивления злу. Финальная клятва, взятая им на 3 уровне, является кульминацией всего обучения паладина. Некоторые персонажи этого класса не считают себя настоящими паладинами до того, как они получат 3 уровень и дадут эту клятву. Для других эта клятва является формальностью, официальной отметкой того, что и так было всегда в сердце паладина.
<<<
Вы выбираете данную вами клятву: [[Древних|Клятва Древних]], [[Искупления|Клятва Искупления]], [[Короны|Клятва Короны]], [[Мести|Клятва Мести]], [[Покорения|Клятва Покорения]], [[Преданности|Клятва Преданности]], [[Славы|Клятва Славы]] или [[Смотрителей|Клятва Смотрителей]] . Ваш выбор определит заклинания клятвы, способы использования Божественного канала, и дополнительные умения, предоставляемые на 3, 7, 15 и 20 уровнях.
''Заклинания клятвы''
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
''Божественный канал''
<<<
Ваша клятва позволяет направлять божественную энергию, чтобы подпитывать магические эффекты.
<<<
Каждый вариант Божественного канала, предоставленный клятвой, объясняет, как его использовать.
Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
''Нарушение клятвы''
<<<
Паладин старается придерживаться высочайших стандартов поведения, но даже самым добродетельным паладинам свойственно ошибаться. Иногда правильный путь оказывается слишком требовательным, иногда ситуация сводится к выбору меньшего из двух зол, а иногда эмоции вынуждают паладина преступить через свою клятву.
Паладин, который нарушил клятву, обычно стремится к отпущению грехов у жреца, разделяющего его веру, или у другого паладина того же ордена. Паладин может провести всенощное бдение в молитве в знак покаяния, или поститься, или совершить другой аналогичный акт самоотречения. После обряда исповеди и прощения паладин очищается.
Если паладин умышленно нарушил свою клятву и не проявляет никаких признаков раскаяния, последствия могут быть куда более серьёзными.
<<<
По усмотрению Мастера, не раскаявшийся паладин может вынуждено отказаться от этого класса и взять другой, или, возможно, стать паладином [[Клятвопреступником|Клятвопреступник]].
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[6.png]] Аура защиты
Если вы или дружественное существо в пределах 2 м от вас должны совершить спасбросок, это существо получает бонус к спасброску, равный модификатору вашей Харизмы (минимальный бонус +1). Вы должны находиться в сознании, чтобы предоставлять этот бонус.
На 18 уровне дистанция этой ауры увеличивается до 6 м.
---
!!! [img[10.png]] Аура отваги
Вы и дружественные существа в пределах 2 м от вас не можете быть испуганы, пока вы находитесь в сознании.
На 18 уровне дистанция этой ауры увеличивается до 6 м.
---
!!! [img[11.png]] Улучшенная божественная кара
<<<
Вы проникаетесь праведной мощью, что даёт всем вашим атакам рукопашным оружием божественную силу.
<<<
Каждый раз, когда вы попадаете по существу рукопашным оружием, это существо получает дополнительно 1к8 урона излучением.
---
!!! [img[14.png]] Очищающее касание
Вы можете действием окончить действие заклинания на себе или на одном согласном существе, которого вы касаетесь.
Вы можете использовать это умение количество раз, равное вашему модификатору Харизмы (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
| !Ур. | !БМ | !КУ |!Умения |
| !1 | +2 | 1к6 |Воровской жаргон, Коварный удар, Компетентность |
| !2 | +2 | 1к6 |Хитрое действие |
| !3 | +2 | 2к6 |Архетип плута, Надёжный удар, Увеличение характеристики |
| !4 | +2 | 2к6 |Черта |
| !5 | +3 | 3к6 |Невероятное уклонение |
| !6 | +3 | 3к6 |Компетентность, Увеличение характеристики |
| !7 | +3 | 4к6 |Увёртливость |
| !8 | +3 | 4к6 |Увеличение характеристики, Черта |
| !9 | +4 | 5к6 |Умение архетипа плута |
| !10 | +4 | 5к6 |Увеличение характеристики, Черта |
| !11 | +4 | 6к6 |Несомненный талант |
| !12 | +4 | 6к6 |Увеличение характеристики, Черта |
| !13 | +5 | 7к6 |Умение архетипа плута |
| !14 | +5 | 7к6 |Слепое чувство |
| !15 | +5 | 8к6 |Скользкий ум, Увеличение характеристики |
| !16 | +5 | 8к6 |Черта |
| !17 | +6 | 9к6 |Умение архетипа плута |
| !18 | +6 | 9к6 |Неуловимость |
| !19 | +6 | 10к6 |Увеличение характеристики |
| !20 | +6 | 10к6 |Удача |
//Ур. - Уровень, БМ - Бонус мастерства, КУ - Коварный удар//
---
---
!!!Быстрое создание
Вы можете быстро создать плута, следуя этим рекомендациям. Во-первых, у вашей Ловкости должно быть наивысшее значение. Следующим по величине должно быть значение Интеллекта, при условии, что вы планируете взять архетип [[Арканный трюкач]]. В противном случае выберите Харизму, если планируете пользоваться обманом и социальным взаимодействием. Во-вторых, выберите предысторию «[[шарлатан|Шарлатан]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к8 за каждый уровень плута
''Хиты на 1 уровне:'' 8 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к8 (или 5) + мод. Телосложения за каждый уровень плута после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи
* ''[[Оружие|Оружие]]:'' Простое лёгкое оружие, простое стрелковое оружие, воинское лёгкое и одноручное клинковое оружие
* ''[[Инструменты|Инструменты]]:'' Воровские инструменты
* ''Спасброски:'' Ловкость, Интеллект
* ''Навыки:'' Выберите четыре навыка из следующих: Акробатика, Анализ, Атлетика, Внимательность, Выступление, Запугивание, Ловкость рук, Обман, Проницательность, Скрытность, Убеждение
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) шпага или (б) рапира
* (а) короткий лук и колчан с 20 стрелами или (б) стилет
* (а) набор взломщика, (б) набор исследователя или (в) набор путешественника
* (а) комплект дорожной одежды или (б) комплект одежды взломщика
* воровские инструменты, дублет, два кинжала и походный набор
''Произвольная экипировка''
* Вы получаете 4к4 × 10 серебряных монет (или 100 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Воровской жаргон
Во время плутовского обучения вы изучили воровской жаргон - тайную смесь диалекта, арго и шифра, который позволяет скрывать сообщения в казалось бы обычном разговоре. Только другое существо, знающее воровской жаргон, понимает такие сообщения. Это занимает в четыре раза больше времени, нежели передача тех же слов прямым текстом.
Кроме того, вам известны секретные знаки и символы, используемые для передачи коротких и простых сообщений. Например, является ли область опасной или территорией гильдии воров, находится ли поблизости добыча, простодушны ли люди в округе, и предоставляют ли здесь безопасное убежище для воров в бегах.
---
!!! [img[1.png]] Коварный удар
<<<
Вы научились наносить точные удары, используя замешательство противника.
<<<
Один раз в ход вы можете причинить дополнительный урон 1к6 одному из существ, по которому вы попали атакой, совершённой с преимуществом к броску атаки. Атака должна использовать стрелковое оружие или оружие без свойства «грубое» и не являющееся двуручным.
Вам не нужно иметь преимущество на бросок атаки, если другой противник цели находится в пределах 1 м от неё. Этот противник не должен быть [[недееспособным|Недееспособный]], и у вас не должно быть помехи на бросок атаки.
Дополнительный урон увеличивается, когда вы получаете уровни в этом классе, как показано в колонке «КУ (коварный удар)».
---
!!! [img[1.png]] Компетентность
Выберите два навыка из тех, которыми вы владеете, либо один такой навык и воровские инструменты. Ваш бонус мастерства для проверок этих навыков или инструментов удваивается.
На 6 уровне вы можете выбрать ещё два таких навыка (или навык и воровские инструменты) и получить для них это преимущество.
---
!!! [img[2.png]] Хитрое действие
<<<
Ваше мышление и ловкость позволяют вам двигаться и действовать быстрее.
<<<
Вы можете в каждом своём ходу совершать бонусное действие. Это действие может быть использовано только для [[Рывка|Рывок]], [[Отхода|Отход]] или [[Засады|Засада]].
---
!!! [img[3.png]] Архетип плута
<<<
У плутов много общих черт, включая их упор на совершенствование навыков, выверенный смертоносный подход к бою и выдающиеся рефлексы. Но разные плуты применяют эти таланты в различных направлениях, формирующих архетипы. Ваш выбор архетипа является отражением вашей специализации, не обязательно свидетельствующей о выбранной профессии, но описывающий методы, которые вы предпочитаете.
<<<
Вы выбираете архетип, который отражает ваши плутовские способности: [[Арканный трюкач]], [[Бретёр]], [[Вор]], [[Ищейка]], [[Клинок души]], [[Комбинатор]], [[Скаут]], [[Убийца]] или [[Фантом]]. Ваш выбор определит умения, предоставляемые на 3, 9, 13 и 17 уровнях.
---
!!! [img[3.png]] Надёжный удар
Вы можете бонусным действием дать себе преимущество на ваш следующий бросок атаки в этом ходу. Вы можете совершать это бонусное действие, только если вы не перемещались в этом ходу. После совершения этого бонусного действия ваша скорость становится равна 0 до конца этого хода.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 8, 10, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 10, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Невероятное уклонение
Когда видимое вами существо попадает по вам атакой, вы можете реакцией уменьшить урон, причиняемый вам этой атакой, вдвое.
---
!!! [img[7.png]] Увёртливость
<<<
Вы способны ловко увернуться от некоторых эффектов, действующих по области, например, огненного дыхания красного дракона или заклинания //град//.
<<<
Если вы попадаете под действие эффекта, который позволяет вам совершить спасбросок Ловкости, чтобы получить только половину урона, вместо этого вы не получаете урона, если спасбросок был успешен, и только половину урона, если он был провален.
---
!!! [img[11.png]] Несомненный талант
На 11 уровне вы улучшаете выбранные навыки, пока они не достигнут совершенства. Каждый раз, когда вы совершаете проверку характеристики, которая позволяет добавить бонус мастерства, вы можете при выпадении на к20 результата «1–9» считать, что выпало «10».
---
!!! [img[14.png]] Слепое чувство
Пока вы можете слышать, вы знаете о местонахождении всех скрытых и невидимых существ в пределах 2 м от себя.
---
!!! [img[15.png]] Скользкий ум
Вы получаете владение спасбросками Мудрости.
---
!!! [img[18.png]] Неуловимость
<<<
Вы способны уклоняться так хорошо, что противник крайне редко может взять над вами верх.
<<<
Броски атак по вам не получают преимущества, пока вы дееспособны.
---
!!! [img[20.png]] Удача
<<<
Удача не подводит вас в нужный момент.
<<<
Если ваша атака промахивается по цели, находящейся в пределах досягаемости, вы можете изменить промах на попадание. В качестве альтернативы, если вы провалили проверку характеристики, вы можете заменить результат, выпавший на к20, на «20».
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
| !Ур. | !БМ | !ПО | !ПП |!Умения | !ПТ |
| !1 | +2 | 1 | 1 |Псионика, Псионический архетип | — |
| !2 | +2 | 2 | 1 |Псионические таланты | 2 |
| !3 | +2 | 3 | 2 |Псионика (вторая дисциплина), Увеличение характеристики, Умение псионического архетипа | 2 |
| !4 | +2 | 4 | 2 |Черта | 2 |
| !5 | +3 | 5 | 3 |Мастерство псионика | 3 |
| !6 | +3 | 6 | 3 |Увеличение характеристики, Умение псионического архетипа | 3 |
| !7 | +3 | 7 | 4 |— | 4 |
| !8 | +3 | 8 | 4 |Черта | 4 |
| !9 | +4 | 9 | 5 |Увеличение характеристики | 5 |
| !10 | +4 | 10 | 5 |Умение псионического архетипа | 5 |
| !11 | +4 | 11 | 6 |Внутренняя псионика (6 уровень) | 5 |
| !12 | +4 | 12 | 6 |Увеличение характеристики, Черта | 6 |
| !13 | +5 | 13 | 7 |Внутренняя псионика (7 уровень) | 6 |
| !14 | +5 | 14 | 7 |Умение псионического архетипа | 6 |
| !15 | +5 | 15 | 8 |Внутренняя псионика (8 уровень), Увеличение характеристики | 7 |
| !16 | +5 | 16 | 8 |Черта | 7 |
| !17 | +6 | 17 | 9 |Внутренняя псионика (9 уровень) | 7 |
| !18 | +6 | 18 | 9 |Псионика (третья дисциплина) | 8 |
| !19 | +6 | 19 | 10 |Увеличение характеристики | 8 |
| !20 | +6 | 20 | 10 |Вознесение | 8 |
//Ур. - Уровень, БМ - Бонус мастерства, ПО - Пси-очки, ПП - Пси-предел, ПТ - Псионические таланты//
---
---
!!!Быстрое создание
Вы можете быстро создать псиона, следуя этим рекомендациям. Во-первых, у вашего Интеллекта должно быть наивысшее значение. Следующим по величине должно быть значение Телосложения или Ловкости. Во-вторых, выберите предысторию «[[мудрец|Мудрец]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к6 за каждый уровень псиона
''Хиты на 1 уровне:'' 6 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к6 (или 4) + мод. Телосложения за каждый уровень псиона после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие
* ''Спасброски:'' Интеллект, Мудрость
* ''Навыки:'' Выберите два навыка из следующих: Анализ, Внимательность, Запугивание, История, Медицина, Обман, Проницательность, Религия
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) кинжал, (б) боевой посох, или (в) воинское оружие не дороже 50 см (если владеете)
* (а) дублет или (б) чешуйчатый доспех (если владеете)
* (а) набор исследователя, (б) набор путешественника или (в) набор учёного
* походный набор и комплект одежды не дороже 5 см
''Произвольная экипировка''
* Вы получаете 4к4 × 10 серебряных монет (или 100 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Псионический архетип
Вы выбираете архетип, который отражает ваши псионические способности: [[Блуждающий разум]], [[Необузданный разум]], [[Поглощающий разум]],
[[Пробуждённый разум]], [[Стихийный разум]], [[Трансцендентный разум]] или [[Формирующий разум]]. Ваш выбор определит умения, предоставляемые на 1, 3, 6, 10 и 14 уровнях.
---
!!! [img[1.png]] Псионика
''Псионические дисциплины''
Выбранный вами архетип предоставляет вам доступ к псионической дисциплине (такой как [[Телепатия]] или [[Телекинез]]). Псионическая дисциплина включает в себя пассивную особенность, расширяющую возможности персонажа, и активную псионическую способность, которую можно модифицировать и усиливать с помощью пси-очков. Кроме того, вы можете использовать свою дисциплину для воссоздания эффектов некоторых заклинаний, перечисленных в конце описания дисциплины. Вы можете выбрать вторую дисциплину при достижении 3 уровня в этом классе, и третью при достижении 18 уровня в этом классе. Вы не можете выбрать дисциплину, которая уже у вас есть. Вы получаете все умения псионической дисциплины, когда выбираете её.
Псионические способности подавляются //преградой магии// и могут быть окончены //рассеиванием магии//, но //контрзаклинанию// подвергаются только при воссоздании эффекта заклинания. Любые проверки, совершаемые для //рассеивания магии//, //контрзаклинания// или опознания воссозданного заклинания, совершаются с помехой, если у совершающего проверку нет умения Псионика. Заклинание //обнаружение магии// обнаруживает использовании псионики, но не её природу: она будет выглядеть как таинственная сила без типа, даже если используется для воссоздания эффекта заклинания.
Заклинания, воссоздаваемые с помощью псионических дисциплин, не нуждаются в вербальных и материальных компонентах, но использование любой псионической способности требует соматический компонент и вызывает пульсирующее свечение потусторонних псионических энергий, которыми псион управляет.
<<tabs "[tag[Псионическая дисциплина]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
''Пси-очки''
Ваш доступ к псионической энергии, которая подпитывает ваши умения, выражается количеством пси-очков. Максимальное количество ваших пси-очков равно вашему уровню псиона, согласно колонке «ПО (пси-очки)». За раз вы можете потратить количество пси-очков, равное половине вашего уровня псиона (округленного в большую сторону), согласно колонке «ПП (пси-предел)».
Вы должны потратить как минимум 30 минут на медитацию для восстановления потраченных пси-очков, и можете восстановить их таким образом количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
''Базовая характеристика псионики''
Интеллект является базовой характеристикой для ваших псионических способностей, талантов и заклинаний.
Вы используете Интеллект в случаях, когда умение псиона ссылается на базовую характеристику. Кроме того, вы используете Интеллект при определении Сл спасбросков от ваших умений псиона, и при бросках атаки умений псиона.
```
Сл спасброска псионики = 8 + бонус мастерства + модификатор Интеллекта
Модификатор броска атаки псионики = бонус мастерства + модификатор Интеллекта
```
---
!!! [img[2.png]] Псионические таланты
<<<
Вы получаете доступ к псионическим талантам, позволяющим вам специализироваться глубже.
<<<
Вы получаете два таланта на ваш выбор. Получая новые уровни псиона, вы получаете дополнительные таланты на ваш выбор, как показано в колонке «ПТ (Псионические таланты)».
[[Актуальный список псионических талантов|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit#gid=1996234356]]
Кроме того, когда вы получаете новый уровень этого класса, вы можете выбрать один известный вам талант и заменить его другим, который вы способны получить на этом уровне.
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Мастерство псионика
<<<
Вы мастерски владеете своими псионическими способностями.
<<<
В начале своего хода вы получаете 1 свободное пси-очко. Его можно потратить на усиление псионических дисциплин, но не на воссоздание заклинаний или подпитку псионических талантов, если не сказано обратное. Если в конце вашего хода у вас остались неиспользованные свободные пси-очки, полученные за счет этого умения, то они теряются.
Количество получаемых в ход свободных очков увеличивается до 2 при достижении 11 уровня псиона, и до 3 при достижении 17 уровня псиона. Эти очки можно распределять между различными способностями.
---
!!! [img[11.png]] Внутренняя псионика
<<<
Вы обретаете силу, позволяющую совершать великие подвиги псионической мощи.
<<<
Выберите одно заклинание 6 уровня из списка заклинаний псиона в качестве внутренней псионики.
Вы можете использовать эту внутреннюю псионику для сотворения выбранного заклинания один раз.
На следующих уровнях вы получаете новые внутренние псионики, которые можно применить таким образом:
* одно заклинание 7 уровня на 13 уровне;
* одно заклинание 8 уровня на 15 уровне;
* одно заклинание 9 уровня на 17 уровне.
Вы восстанавливаете все потраченные использования Внутренней псионики после завершения продолжительного отдыха.
Кроме того, всякий раз когда вы получаете новый уровень псиона, вы можете заменить одну из внутренних псионик другим заклинанием того же уровня из списка заклинаний псиона.
Внутренняя псионика выходит далеко за рамки обычных способностей и не ограничена тем, какими дисциплинами вы владеете. В отличие от псионических дисциплин, она требуют все компоненты, необходимые для заклинания.
---
!!! [img[20.png]] Вознесение
Когда вы умираете, вы можете решить стать бесплотным существом в Пограничном Эфире в том месте, где вы умерли на Материальном Плане, в начале своего следующего хода. Это существо обладает физическими показателями характеристик (Сила, Ловкость, Телосложение) и способностями призрака, но обладает вашими показателями ментальных характеристик (Интеллект, Мудрость, Харизма) и умениями псиона.
Вы принимаете хиты призрака, пока находитесь в этой форме, и количество ваших пси-очков, если было меньше 10, когда вы её приняли, становится равным 10. Находясь в этой форме, вы не можете отдыхать и медитировать, чтобы восстанавливать потраченные использования умений. Если вы израсходуете все пси-очки или призрак будет уничтожен, вы умрете так же, как и обычное существо.
| !Ур. | !БМ |!Умения | !ИЗакл | !Ячейки заклинаний |<|<|<|<|
|~|~|~|~| !1 | !2 | !3 | !4 | !5 |
| !1 | +2 |Искусный исследователь, Предпочтительный противник (1к4) | — | — | — | — | — | — |
| !2 | +2 |Боевой стиль, Использование заклинаний | 2 | 2 | — | — | — | — |
| !3 | +2 |Архетип следопыта, Первобытная осведомлённость, Увеличение характеристики | 3 | 3 | — | — | — | — |
| !4 | +2 |Черта | 3 | 3 | — | — | — | — |
| !5 | +3 |Дополнительная атака | 4 | 4 | 2 | — | — | — |
| !6 | +3 |Искусный исследователь, Предпочтительный противник (1к6), Увеличение характеристики | 4 | 4 | 2 | — | — | — |
| !7 | +3 |Умение архетипа следопыта | 5 | 4 | 3 | — | — | — |
| !8 | +3 |Тропами земли, Черта | 5 | 4 | 3 | — | — | — |
| !9 | +4 |Увеличение характеристики | 6 | 4 | 3 | 2 | — | — |
| !10 | +4 |Искусный исследователь, Природная завеса | 6 | 4 | 3 | 2 | — | — |
| !11 | +4 |Умение архетипа следопыта | 7 | 4 | 3 | 3 | — | — |
| !12 | +4 |Увеличение характеристики, Черта | 7 | 4 | 3 | 3 | — | — |
| !13 | +5 |— | 8 | 4 | 3 | 3 | 1 | — |
| !14 | +5 |Исчезновение, Предпочтительный противник (1к8) | 8 | 4 | 3 | 3 | 1 | — |
| !15 | +5 |Увеличение характеристики, Умение архетипа следопыта | 9 | 4 | 3 | 3 | 2 | — |
| !16 | +5 |Черта | 9 | 4 | 3 | 3 | 2 | — |
| !17 | +6 |— | 10 | 4 | 3 | 3 | 3 | 1 |
| !18 | +6 |Дикие чувства | 10 | 4 | 3 | 3 | 3 | 1 |
| !19 | +6 |Увеличение характеристики | 11 | 4 | 3 | 3 | 3 | 2 |
| !20 | +6 |Убийца противников | 11 | 4 | 3 | 3 | 3 | 2 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗакл - Известные заклинания//
---
---
!!!Быстрое создание
Вы можете быстро создать воина, следуя этим рекомендациям. Во-первых, у вашей Силы или Ловкости (в зависимости от того, какие [[доспехи|Доспехи и щиты]] и [[оружие|Оружие]] вы хотите использовать) должно быть наивысшее значение. Следующим по величине должно быть значение Мудрости. Во-вторых, выберите предысторию «[[чужеземец|Чужеземец]]».
---
---
!!!Хиты
''Кость Хитов:'' 1к10 за каждый уровень следопыта
''Хиты на 1 уровне:'' 10 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к10 (или 6) + мод. Телосложения за каждый уровень следопыта после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Лёгкие доспехи, средние доспехи
* ''[[Оружие|Оружие]]:'' Простое оружие, воинское оружие, два вида экзотических оружия на ваш выбор
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Сила, Ловкость
* ''Навыки:'' Выберите три навыка из следующих: Анализ, Атлетика, Внимательность, Выживание, Выносливость, Природа, Проницательность, Скрытность, Уход за животными
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) дублет или (б) чешуйчатый доспех
* (а) два коротких меча или (б) два простых оружия, каждое не дороже 15 см
* (а) набор исследователя, (б) набор охотника на чудовищ или (в) набор путешественника
* длинный лук, колчан с 20 стрелами, походный набор и комплект одежды не дороже 10 см
''Произвольная экипировка''
* Вы получаете 5к4 × 10 серебряных монет (или 125 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Искусный исследователь
<<<
Вы являетесь непревзойдённым исследователем и мастером выживания, как в дикой природе, так и в цивилизации, через которую пролегает ваш путь.
<<<
Получите одно из преимуществ ниже: //''неутомимый''//, //''странствующий''// или //''умелый''//. Вы получаете второе такое преимущество на ваш выбор, отличающееся от ранее выбранных, на 6 и на 10 уровнях этого класса.
''Неутомимый''
Вы можете действием дать себе временные хиты в количестве равном 1к8 + ваш мод. Мудрости (минимум 1). Вы можете совершать это действие количество раз, равное вашему бонусу мастерства. Потраченные использования восстанавливаются после завершения продолжительного отдыха.
Кроме того, вы снижаете свою степень истощения на 1 после завершения короткого отдыха или ночлега.
''Странствующий''
Ваша скорость ходьбы увеличивается на 1 м, и вы получаете скорость карабканья и плавания равную вашей скорости ходьбы.
''Умелый''
Выберите один навык из тех, которыми вы владеете. Ваш бонус мастерства для проверок этого навыка удваивается.
Кроме того, вы можете говорить, читать и писать на двух языках на ваш выбор.
---
!!! [img[1.png]] Предпочтительный противник
Когда вы попадаете по существу атакой, вы можете воззвать к своей таинственной связи с природой, чтобы пометить цель, как своим предпочтительным противником. Существо остаётся помеченным в течение 1 минуты, либо пока вы не потеряете концентрацию (как если бы концентрировались на заклинании).
Раз в свой ход, когда вы попадаете атакой по предпочтительному противнику (включая атаку, которой вы помечаете его) вы можете нанести дополнительно 1к4 урона.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
Дополнительный урон увеличивается, когда вы достигаете определенных уровней в этом классе: до 1к6 на 6 уровне и 1к8 на 14 уровне.
---
!!! [img[2.png]] Боевой стиль
Вы выбираете боевой стиль, соответствующий вашей специализации. Выберите один из следующих вариантов. Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль.
Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный следопыту.
<<tabs "[tag[Боевой стиль следопыта]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[2.png]] Использование заклинаний
<<<
Вы научились использовать магическую сущность природы для сотворения заклинаний подобно друиду.
<<<
''Ячейки заклинаний''
Таблица выше показывает, сколько ячеек заклинаний у вас есть для сотворения заклинаний 1 и более высоких уровней. Для сотворения заклинания вы должны потратить ячейку соответствующего, либо более высокого уровня. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны два заклинания 1 уровня на ваш выбор из списка заклинаний следопыта.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний следопыта.
''Заклинательная гибкость''
Каждый раз, когда вы завершаете продолжительный отдых, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний следопыта того же уровня.
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний следопыта, с уровнем, не превышающим уровень ячеек заклинаний следопыта.
''Базовая характеристика заклинаний''
Мудрость является базовой характеристикой для сотворения ваших заклинаний следопыта. Ваша магия проистекает из вашего согласия с законами природы.
Вы используете Мудрость в случаях, когда заклинание следопыта ссылается на базовую характеристику. Кроме того, вы используете Мудрость при определении Сл спасбросков от ваших заклинаний следопыта, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Мудрости
Модификатор броска атаки = бонус мастерства + модификатор Мудрости
```
''Фокусировка заклинания''
Вы можете использовать фокусировку друидов в качестве заклинательной фокусировки для заклинаний следопыта.
---
!!! [img[3.png]] Архетип следопыта
Вы выбираете архетип, отражающий ваш подход к столкновениям с окружающими опасностями: [[Охотник]], [[Повелитель зверей]], [[Специалист]], [[Странник горизонта]], [[Сумрачный охотник]], [[Убийца чудовищ]], [[Фейский скиталец]] или [[Хранитель роя]]. Ваш выбор определит умения, предоставляемые на 3, 7, 11, и 15 уровнях.
---
!!! [img[3.png]] Первобытная осведомлённость
<<<
Вы способны осознавать происходящее вокруг через взаимосвязи природы.
<<<
Вы изучаете дополнительные заклинания, как показано в таблице ниже, когда достигаете определённых уровней в этом классе, если они вам ещё не известны. Эти заклинания не учитываются в общее количество известных вам заклинаний.
Вы можете сотворять каждое из этих заклинаний один раз, не тратя ячейки заклинаний. Вы не можете сделать этого снова, пока не завершите продолжительный отдых.
| !Ур. |!Заклинание |
| !3 |//разговор с животными// |
| !5 |//животные чувства// |
| !9 |//разговор с растениями// |
| !13 |//поиск существа// |
| !17 |//общение с природой// |
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[5.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[8.png]] Тропами земли
Перемещение по немагической труднопроходимой местности не стоит вам дополнительного перемещения. Вы не получаете урона от шипов, колючек и прочих подобных угроз от немагических растений.
Кроме того, вы совершаете с преимуществом спасброски от растений, которые магическим образом препятствуют движению, например, созданных заклинанием //опутывание//.
---
!!! [img[10.png]] Природная завеса
<<<
Вы используете единство с природой, чтобы на короткое время скрыться из виду.
<<<
Вы можете бонусным действием стать невидимым вместе со всей экипировкой, которую вы несёте или носите, до начала вашего следующего хода.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[14.png]] Исчезновение
Вы можете использовать в свой ход действие [[Засада|Засада]] бонусным действием. Кроме того, вы не можете быть выслежены немагическими способом, если вы не оставите след намеренно.
---
!!! [img[18.png]] Дикие чувства
<<<
Ваши сверхъестественные чувства помогают вам сражаться с невидимыми существами.
<<<
Вы игнорируете помеху на броски атаки по невидимым существам.
Вам также известно о местонахождении всех невидимых существ в пределах 6 м от вас, при условии, что они не скрыты от вас, а вы не [[ослеплены|Ослеплённый]] и не [[оглушены|Оглохший]].
---
!!! [img[20.png]] Убийца противников
<<<
Вы являетесь непревзойдённым охотником на своих врагов.
<<<
Один раз в свой ход вы можете добавить модификатор Мудрости к броску атаки или урона по ваше предпочтительному противнику. Вы можете использовать это умение до или после броска, но до того, как эффекты броска вступят в силу.
| !Ур. | !БМ |!Умения | !ИЗаг | !ИЗакл |
| !1 | +2 |Использование заклинаний, Источник чародейства | 4 | 2 |
| !2 | +2 |Магический источник | 4 | 3 |
| !3 | +2 |Метамагия, Увеличение характеристики | 4 | 4 |
| !4 | +2 |Черта | 5 | 5 |
| !5 | +3 |— | 5 | 6 |
| !6 | +3 |Увеличение характеристики, Умение источника чародейства | 5 | 7 |
| !7 | +3 |— | 5 | 8 |
| !8 | +3 |Черта | 5 | 9 |
| !9 | +4 |Увеличение характеристики | 5 | 10 |
| !10 | +4 |Метамагия | 6 | 11 |
| !11 | +4 |— | 6 | 12 |
| !12 | +4 |Увеличение характеристики, Черта | 6 | 12 |
| !13 | +5 |— | 6 | 13 |
| !14 | +5 |Умение источника чародейства | 6 | 13 |
| !15 | +5 |Увеличение характеристики | 6 | 14 |
| !16 | +5 |Черта | 6 | 14 |
| !17 | +6 |Метамагия | 6 | 15 |
| !18 | +6 |Умение источника чародейства | 6 | 15 |
| !19 | +6 |Увеличение характеристики | 6 | 15 |
| !20 | +6 |Чародейское восстановление | 6 | 15 |
//Ур. - Уровень, БМ - Бонус мастерства, ИЗаг - Известные заговоры, ИЗакл - Известные заклинания//
''Ячейки заклинаний на уровень заклинаний''
| !Ур. | !1 | !2 | !3 | !4 | !5 | !6 | !7 | !8 | !9 |
| !1 | 2 | — | — | — | — | — | — | — | — |
| !2 | 3 | — | — | — | — | — | — | — | — |
| !3 | 4 | 2 | — | — | — | — | — | — | — |
| !4 | 4 | 3 | — | — | — | — | — | — | — |
| !5 | 4 | 3 | 2 | — | — | — | — | — | — |
| !6 | 4 | 3 | 3 | — | — | — | — | — | — |
| !7 | 4 | 3 | 3 | 1 | — | — | — | — | — |
| !8 | 4 | 3 | 3 | 2 | — | — | — | — | — |
| !9 | 4 | 3 | 3 | 3 | 1 | — | — | — | — |
| !10 | 4 | 3 | 3 | 3 | 2 | — | — | — | — |
| !11 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !12 | 4 | 3 | 3 | 3 | 2 | 1 | — | — | — |
| !13 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !14 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | — | — |
| !15 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !16 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | — |
| !17 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 1 | 1 |
| !18 | 4 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 |
| !19 | 4 | 3 | 3 | 3 | 3 | 2 | 1 | 1 | 1 |
| !20 | 4 | 3 | 3 | 3 | 3 | 2 | 2 | 1 | 1 |
---
---
!!!Быстрое создание
Вы можете быстро создать чародея, следуя этим рекомендациям. Во-первых, у вашей Харизмы должно быть наивысшее значение. Следующей по величине характеристикой должно быть Телосложение. Во-вторых, выберите предысторию «[[отшельник|Отшельник]]». В-третьих, выберите заговоры //луч холода//, //малая иллюзия//, //свет//, и //электрошок//, а также заклинания 1 уровня //волшебная стрела// и //щит//.
---
---
!!!Хиты
''Кость Хитов:'' 1к6 за каждый уровень чародея
''Хиты на 1 уровне:'' 6 + мод. Телосложения
''Хиты на следующих уровнях:'' 1к6 (или 4) + мод. Телосложения за каждый уровень чародея после первого
---
!!!Владение
* ''[[Доспехи|Доспехи и щиты]]:'' Нет
* ''[[Оружие|Оружие]]:'' Простое лёгкое и одноручное дробящее, клинковое и стрелковое оружие
* ''[[Инструменты|Инструменты]]:'' Нет
* ''Спасброски:'' Телосложение, Харизма
* ''Навыки:'' Выберите два навыка из следующих: Запугивание, Магия, Обман, Проницательность, Религия, Убеждение
!!!Экипировка
Вы можете выбрать один из предложенных ниже варинтов экипировки - ''базовый ''или ''произвольный''. Вы получаете эти предметы в дополнение к экипировке, полученной на старте другим образом (например, от вашей предыстории):
''Базовая экипировка''
* (а) лёгкий арбалет и контейнер с 20 болтами или (б) простое оружие не дороже 25 см
* (а) набор исследователя или (б) набор путешественника
* простое оружие не дороже 25 см, два кинжала, походный набор и комплект одежды не дороже 5 см
''Произвольная экипировка''
* Вы получаете 3к4 × 10 серебряных монет (или 75 см). Вы можете потратить все или часть этих денег, чтобы купить себе экипировку самостоятельно.
---
!!! [img[1.png]] Использование заклинаний
<<<
Определённое событие в вашем прошлом, либо в жизни ваших родителей или предков, оставило на вас неизгладимый отпечаток, связав вас с арканной магией. Этот источник магии, каким бы ни было его происхождение, подпитывает ваши заклинания.
<<<
''Заговоры (заклинания 0 уровня)''
Вам известны четыре заговора на ваш выбор из списка заклинаний чародея. Вы узнаёте дополнительные заговоры чародея на более высоких уровнях, как показано в колонке «ИЗаг (известные заговоры)».
''Ячейки заклинаний''
Таблица выше показывает, сколько ячеек заклинаний у вас есть для сотворения заклинаний 1 и более высоких уровней. Для сотворения заклинания вы должны потратить ячейку соответствующего, либо более высокого уровня. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны два заклинания 1 уровня на ваш выбор из списка заклинаний чародея.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний чародея.
''Заклинательная гибкость''
Каждый раз, когда вы завершаете продолжительный отдых, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний чародея того же уровня.
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний чародея, с уровнем, не превышающим уровень ячеек заклинаний чародея.
''Базовая характеристика заклинаний''
Харизма является базовой характеристикой для сотворения ваших заклинаний чародея. Сила вашей магии напрямую зависит от вашей способности проецировать свою волю в реальность.
Вы используете Харизму в случаях, когда заклинание чародея ссылается на базовую характеристику. Кроме того, вы используете Харизму при определении Сл спасбросков от ваших заклинаний чародея, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Харизмы
Модификатор броска атаки = бонус мастерства + модификатор Харизмы
```
''Внутренний фокус''
Врождённый характер вашей магии позволяет вам сотворять ваши заклинания чародея без необходимости в материальных компонентах, если для них не указана стоимость.
---
!!! [img[1.png]] Источник чародейства
Выберите источник, из которого ваш персонаж черпает свою магическую силу: [[Аберрантный разум]], [[Божественная душа]], [[Дикая магия]], [[Драконья кровь]], [[Магия Тени]], [[Механическая душа]], [[Могущество шторма]] или [[Сердце эфира]]. Ваш выбор определит умения, предоставляемые на 1, 6, 14 и 18 уровнях.
---
!!! [img[2.png]] Магический источник
Ваш внутренний источник магии выражен в очках чародейства, позволяющих вам создавать разнообразные магические эффекты.
''Очки чародейства''
Вы получаете очки чародейства в количестве равном вашему уровню в этом классе. У вас не может быть единовременно больше очков, чем это количество. Вы восстанавливаете все потраченные очки чародейства после завершения продолжительного отдыха.
''Свободное заклинательство''
Вы можете использовать очки чародейства, чтобы получить дополнительные ячейки заклинаний, и наоборот, пожертвовать ячейками, чтоб получить очки.
//''Создание ячеек заклинаний''//. В свой ход вы можете бонусным действием превратить непотраченные очки чародейства в одну ячейку заклинаний. Приведённая таблица отображает стоимость создания ячеек разных уровней. Вы можете создавать ячейки не выше пятого уровня.
Ячейки заклинаний, созданные с помощью этого умения, исчезают после завершения продолжительного отдыха.
| !Ур. ячейки заклинаний | !Очки чародейства |
| 1 | 2 |
| 2 | 3 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
//''Перевод ячейки заклинания в очки чародейства''//. В свой ход вы можете бонусным действием превратить одну ячейку заклинаний в очки чародейства в количестве равном уровню ячейки.
---
!!! [img[3.png]] Метамагия
<<<
Вы научились подстраивать заклинания под свои нужды.
<<<
Выберите два варианта Метамагии из перечисленных ниже. Вы получаете ещё по одному варианту на 10 и 17 уровнях этого класса.
При сотворении заклинания может быть использован только один вариант Метамагии, если в его описании не указано обратное.
<<tabs "[tag[Метамагия]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[3.png]] Увеличение характеристики
При достижении 3, 6, 9, 12 и 15 уровней вы можете повысить значение одной из ваших характеристик на 1, а при достижении 19 уровня - на 2. Как обычно, значение характеристики при этом не должно превысить 20.
---
!!! [img[4.png]] Черта
При достижении 4, 8, 12 и 16 уровней вы можете взять черту. Черты отражают дарование или обучение, дающее персонажу особые знания. Они воплощают тренировки, опыт и способности, превышающие те, что даёт класс.
[[Актуальный список черт|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=1541983735]]
Каждую черту можно брать только один раз, если в её описании не сказано обратное.
Для получения черты вы должны выполнять её требования. Если вы перестали выполнять требования черты, вы не можете её использовать, пока снова не начнёте выполнять требования.
---
!!! [img[20.png]] Чародейское восстановление
Вы восстанавливаете 4 потраченных очка чародейства после завершения короткого отдыха или ночлега.
Каждый искатель приключений — представитель какого-либо класса. Класс в общих чертах описывает призвание персонажа, таланты, которыми он обладает, и тактики, к которым он чаще всего прибегает, когда исследует подземелье, сражается с монстрами или участвует в напряжённых переговорах.
Класс является основным мерилом способностей вашего персонажа. Это больше чем профессия, это призвание вашего персонажа. Класс формирует ваше представление о мире и взаимодействие с ним, а также ваше отношение к другим существам и силам мультивселенной. Воин, например, может смотреть на мир прагматично, с точки зрения стратегии и манёвров, и видеть себя всего лишь пешкой в большой игре. Жрец напротив, может видеть себя в качестве усердного служителя разворачивающегося грандиозного плана божества, или назревающего конфликта между различными богами. У воина есть связи в организациях наёмников или войсках, а жрец может знать множество священников, паладинов и последователей, разделяющих его веру.
Ваш персонаж получает ряд преимуществ от выбранного вами класса. Множество этих преимуществ являются классовыми умениями — возможностями (включая сотворение заклинаний), которые отличают вашего персонажа от представителей других классов. Вы также получаете перечень владения (умение пользоваться) доспехами, оружием, навыками, спасбросками и иногда инструментами.
Искатели приключений иногда развиваются сразу в нескольких классах. [[Плут|Плут]] может поменять жизненный путь и дать присягу [[паладина|Паладин]]. [[Варвар|Варвар]] может обнаружить скрытые магические способности и практиковаться в классе [[чародей|Чародей]], продолжая совершенствоваться как варвар. [[Эльфы|Эльф]] известны тем, что сочетают военное мастерство с магической подготовкой и развиваются как [[воины|Воин]] и [[волшебники|Волшебник]] одновременно. Опциональные правила такого комбинирования классов называются [[мультиклассированием|Мультиклассирование]].
<<<
!!!Быстрое создание
Описание каждого класса включает в себя раздел, предлагающий варианты быстрого создания персонажа этого класса, включая распределение значений характеристик, предысторию, подходящую для класса и начальные заклинания.
<<<
|!Класс |!Описание | !Кость Хитов |!Основная характеристика|
|[[Бард|Бард]] |Вдохновляющий заклинатель, черпающий мощь в музыке созидания | к8 |Харизма |
|[[Варвар|Варвар]] |Свирепый воин, способный впадать в боевую ярость | к12 |Сила |
|[[Воин|Воин]] |Мастер сражения, опытный во владении различным оружием и доспехами | к10 |Сила или Ловкость |
|[[Волшебник|Волшебник]] |Учёный заклинатель, способный манипулировать структурой реальности | к6 |Интеллект |
|[[Друид|Друид]] |Проповедник Старой Веры, владеющий силами природы — лунным светом и ростом растений, огнём и молнией, и принимающий облик животных | к8 |Мудрость |
|[[Жрец|Жрец]] |Священнослужитель-заступник, владеющий божественной магией и состоящий на службе высших сил | к8 |Мудрость |
|[[Изобретатель|Изобретатель]] |Инноватор совмещающий возможности ремёсел и магии | к8 |Интеллект |
|[[Колдун|Колдун]] |Обладатель магии, полученной посредством сделки с экстрапланарной сущностью | к8 |Харизма |
|[[Кровавый охотник|Кровавый охотник]] |Боец Ордена, использующий запретные эзотерические техники для борьбы со злом | к10 |Сила или Ловкость, и Интеллект |
|[[Монах|Монах]] |Мастер боевых искусств, использующий мощь тела в поисках физического и духовного совершенства | к8 |Ловкость и Мудрость |
|[[Паладин|Паладин]] |Святой воин, связанный духовным обетом | к10 |Сила или Ловкость, и Харизма |
|[[Плут|Плут]] |Мошенник, который использует хитрость и обман, чтобы одолеть препятствия и противников | к8 |Ловкость |
|[[Псион]] |Обладатель особой способности, позволяющей актуализировать силу его разума | к6 |Интеллект |
|[[Следопыт|Следопыт]] |Воитель, использующий боевое искусство и магию природы для борьбы с угрозами на окраинах цивилизации | к10 |Сила или Ловкость, и Мудрость |
|[[Чародей|Чародей]] |Заклинатель, черпающий магию в себе, получив её в дар или как наследие | к6 |Харизма |
---
!!!Уровень
Обычно персонаж начинает с 1 уровня и достигает новых уровней, завершая приключения и получая опыт. На 1 уровне персонаж неопытен в мире приключений, хотя он мог быть солдатом или пиратом и вести опасную жизнь и раньше.
Если вы уже знакомы с игрой или если вы присоединяетесь к текущей кампании, ваш Мастер может решить, что вы начинаете с более высоким уровнем, предполагая, что ваш персонаж уже пережил несколько опасных приключений. Персонаж более высокого уровня, как правило, начинает с минимальным значением опыта, необходимым для достижения этого уровня.
---
!!!Хиты и Кость Хитов
Хиты вашего персонажа определяют, насколько стойким является ваш персонаж в сражениях и других опасных ситуациях. Ваши хиты определяются вашей Костью Хитов.
На 1 уровне, у вашего персонажа 1 Кость Хитов, и вид этой кости определяется вашим классом. Вы начинаете с числом хитов, равным наибольшему возможному результату броска этой кости, как отмечено в описании вашего класса (вы также добавляете ваш модификатор Телосложения). Это число также является вашим максимальным значением хитов.
Во время [[отдыха|Отдых]] вы можете тратить Кости Хитов на восстановление хитов.
---
!!!Бонус мастерства
В таблице, которая находится в описании вашего класса, приведён бонус мастерства, который равен +2 для персонажа 1 уровня. Ваш бонус мастерства добавляется ко многим числам, которые вы будете записывать на свой лист персонажа:
* Броски атак при использовании оружия, которым вы владеете
* Броски атак сотворяемых вами заклинаний
* Проверки характеристик при использовании навыков, которыми вы владеете
* Проверки характеристик с инструментами, которыми вы владеете
* Спасброски, которыми вы владеете
* Сл. спасбросков сотворяемых вами заклинаний
Ваш бонус мастерства не может быть добавлен к одному броску костей или какому-либо числу более одного раза. Иногда ваш бонус мастерства может быть преобразован (увеличен или уменьшен вдвое), прежде чем будет прибавлен к броску. Если обстоятельства позволяют предположить, что ваш бонус мастерства добавляется больше одного раза к одному и тому же броску или должен быть умножен более одного раза, всё равно добавьте его только один раз, увеличьте или уменьшите вдвое только один раз.
Большинство убийц наносят удары физическим оружием, а многие грабители и шпионы используют воровские инструменты для проникновения на охраняемые территории. Клинки душ, напротив, наносят удары и проникают куда-либо при помощи своего разума, прорезая как физические, так ментальные барьеры. Эти плуты обнаруживают в себе псионическую силу и используют её в своей плутовских делах. Они легко находят работу в воровских гильдиях, хотя им часто не доверяют те плуты, которые подозрительно относятся к любому, кто использует странные ментальные способности для ведения своих дел. Большинство правителей были бы счастливы нанять Клинка души в качестве шпиона.
Среди деревьев древних лесов Материального плана и Страны Фей некоторые лесные эльфы следуют по пути Клинка души, становясь незаметными и смертельно опасными стражами лесов. В бесконечной войне гитов факт того, что для борьбы с гитъянки требуется скрытность, вынуждает гитцераев идти по пути Клинка души.
Ваши псионические способности могли преследовать вас с самого детства, но проявили себя после пережитого вами в одном из приключений потрясения. Или вы обнаружили уединённый орден адептов псионики и потратили годы, изучая способы пробуждения вашей силы.
---
!!! [img[3.png]] Псионическая сила
Вы таите в себе источник псионической энергии. Эта энергия представлена в Костях Псионической энергии - к6. Количество этих костей равно вашему удвоенному бонусу мастерства, и они подпитывают ваши различные псионические способности, которые подробно описаны ниже.
Некоторые из ваших способностей расходуют Кость Псионической энергии при использовании, как указано в описании способности, и вы не можете применять способность, расходующую кость, если все ваши кости уже израсходованы. Вы восстанавливаете все израсходованные Кости Псионической энергии после завершения продолжительного отдыха.
Кроме того, бонусным действием вы можете восстановить одну израсходованную Кость Псионической энергии, но не можете сделать это повторно, пока не завершите короткий или продолжительный отдых.
Ваша Кость Псионической энергии изменяется с ростом вашего уровня в этом классе. Она становится к8 на 5 уровне, к10 на 11 уровне и 1к12 на 17 уровне.
Приведенные ниже способности используют ваши Кости Псионической энергии.
<<tabs "[tag[Псионическая сила Клинка души]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[3.png]] Психические клинки
<<<
Вы можете проявлять свои псионические силы в виде мерцающих клинков из психической энергии.
<<<
Когда вы совершаете действие Атака, вы можете проявить психической клинок в своей свободной руке и совершить атаку с помощью него.
Этот магический клинок — простое рукопашное оружие с эффективной дальностью метания 12 м, максимальной дальности у оружия нет. При попадании оно наносит урон психической энергией, равный 1к6 + модификатор характеристики, которую вы использовали для совершения броска атаки. Клинок мгновенно исчезает после попадания или промаха по цели, а также не оставляет следов на цели, если наносит урон.
После того, как вы атакуете этим клинком, вы можете бонусным действием совершить рукопашную или дальнобойную атаку оружием, используя второй психический клинок при условии, что у вас свободна другая рука для его создания. Кость урона этой бонусной атаки равна 1к4, а не 1к6.
---
!!! [img[9.png]] Клинки души
Ваши психические клинки теперь являются выражением вашей души, наполненной пси-энергией, и даруют вам следующие способности, расходующие ваши кости псионической энергии:
<<tabs "[tag[Клинки души]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[13.png]] Психическая завеса
<<<
Вы можете соткать завесу из психической энергии, которая укроет вас.
<<<
Действием вы можете магическим образом стать невидимым вместе со всем, что вы несёте или носите, на 1 час или до тех пор, пока вы самостоятельно не окончите этот эффект (действия не требуется). Эта невидимость заканчивается раньше, если вы наносите существу урон или заставляете его совершить спасбросок.
Вы не можете использовать это умение снова, пока не завершите продолжительный отдых или не потратите Кость Псионической энергии на повторное использование этого умения.
---
!!! [img[17.png]] Раздирание разума
<<<
Вы можете прорезать своими Психическими клинками разум существа.
<<<
Когда вы используете свои Психические клинки, чтобы нанести урон от Коварного удара существу, вы можете заставить это существо совершить спасбросок Мудрости со Сл 8 + ваш бонус мастерства + ваш мод. Ловкости. Если существо проваливает спасбросок, то оно становится [[ошеломлённым|Ошеломлённый]] на 1 минуту. Ошеломлённое существо может повторять спасбросок в конце каждого своего хода, оканчивая на себе эффект при успехе.
Когда вы используете умение подобным образом, вы не сможете сделать это вновь, пока не завершите продолжительный отдых или не потратите 3 Кости Псионической энергии на повторное использование этого умения.
Когда вы в свой ход совершаете действие [[Атака]], вы можете потратить 1 очко ци, чтобы из ваших рук и ног вырвались языки пламени. Досягаемость ваших безоружных атак (включая безоружные атаки, совершённые частью этого действия) увеличивается на 2 м до конца этого хода. Эти атаки наносят урон огнём вместо дробящего урона, и когда вы попадаете такой атакой, вы можете при попадании потратить еще 1 очко ци, чтобы увеличить её урон огнём на 1к10.
Клятва Древних так же стара, как раса эльфов и ритуалы друидов. Иногда называемые фейскими рыцарями, зелёными рыцарями, или рогатыми рыцарями, паладины, присягнувшие этой клятве, связывают свою судьбу со стороной света в мировой борьбе против тьмы, потому что они любят красивые и животворные вещи в мире, а не потому, что верят в принципы чести, отваги и справедливости. Они украшают свои доспехи и одежду изображениями растительности, рогов и цветов, чтобы отразить свою приверженность сохранению в мире света и жизни.
---
!!!Догматы преданности
Догматы Клятвы Древних сохранялись на протяжении бесчисленных веков. Эта клятва подчёркивает главенство принципов добра над проблемами порядка или хаоса. Её основные четыре принципа просты:
//''Разожгите свет.''// Делами милосердия, доброты и прощения разжигайте свет надежды в мире, повергая ниц отчаяние.
//''Защитите свет.''// Там, где есть добро, красота, любовь и смех в мире, выступайте против зла, которое может поглотить его. Там, где процветает жизнь, выступайте против сил, что хотят погубить её.
//''Берегите свой собственный свет.''// Восторгайся песнями и смехом, красотой и искусством. Если вы позволите свету умереть в своём сердце, то не сможете сохранить его в мире.
//''Будь светом.''// Станьте ярким маяком для всех, кто живет в отчаянии. Пусть свет вашей радости и отваги сияет во всех ваших делах.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Гнев природы.''// Вы можете использовать свой Божественный канал, чтобы призвать первородные силы для опутывания врага. Вы можете действием опутать призрачными лозами видимое вами существо в пределах 2 м от вас. Это существо должно преуспеть в спасброске Силы или Ловкости (по своему выбору), иначе оно станет [[опутанным|Опутанный]]. Опутанное лозами существо повторяет спасбросок в конце каждого своего хода. При успехе оно освобождается, а лозы исчезают.
//''Изгнание неверного.''// Вы можете использовать свой Божественный канал, чтобы произносить древние слова, причиняющие боль феям и исчадиям. Действием вы демонстрируете свой священный символ и все исчадия и феи в пределах 6 м от вас, которые могут вас слышать, должны совершить спасбросок Мудрости. При провале существо изгоняется на 1 минуту или до тех пор, пока не получит урон.
Изгнанные существа должны весь свой ход пытаться убежать от вас так далеко, как только могут, и не могут добровольно переместиться в пространство, находящееся в пределах 6 м от вас. Из всех действий они могут совершать только [[Рывок|Рывок]] или пытаться избежать эффекта, не дающего им перемещаться. Если же двигаться некуда, существа могут использовать [[Уклонение|Уклонение]].
Если истинная форма существа скрыта иллюзией, изменением облика, или другим эффектом, скрывающим её, то она раскрывается, когда существо изгоняется.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//опутывающий удар//, //разговор с животными// |
| !5 |//лунный луч//, //туманный шаг// |
| !9 |//защита от энергии//, //рост растений// |
| !13 |//град//, //каменная кожа// |
| !17 |//древесный путь//, //общение с природой// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура опеки
Вы излучаете ауру древней защитной магии, пока не являетесь [[недееспособным|Недееспособный]]. Вы, а также все союзные существа в пределах 2 м от вас, получаете сопротивление к урону от заклинаний.
На 18 уровне радиус ауры увеличивается до 6 м.
---
!!! [img[15.png]] Бессмертный страж
Если ваши хиты опустились до нуля, но вы при этом не убиты, ваши хиты вместо этого опускаются до 1. Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Кроме того, вы не страдаете от недостатков старости, и не можете быть состарены магией.
---
!!! [img[20.png]] Древний чемпион
<<<
Вы можете принимать облик древней силы природы, выбрав её внешний вид. Например, ваша кожа может позеленеть или превратиться в кору, а ваши волосы могут стать листьями или мхом, или у вас могут вырасти рога или львиная грива.
<<<
Бонусным действием вы можете магически превратиться в древнего чемпиона и получить следующие преимущества на 1 минуту:
* В начале каждого своего хода вы восстанавливаете 10 хитов.
* Все ваши заклинания паладина со временем сотворения «1 действие» могут быть сотворены бонусным действием.
* Враждебные существа в пределах 2 м от вас совершают спасброски от ваших заклинаний паладина и Божественного канала с помехой.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятва Здравомыслия - это клятва того, кто пережил столкновение с ужасами, лежащими за завесой, или, возможно, того, кто подготовился к ним с помощью мистического ордена, забытой традиции... или особенно яркого и слишком активного воображения.
В то время как большинство тех, кто заглянул в потусторонние миры, страдают от мгновенного и необратимого безумия, эти паладины заглянули туда и поклялись сохранить рассудок, чего бы им это ни стоило. Они отказываются защищать свой хрупкий разум от того, что они увидели, в утешительном саване безумия.
Паладин, давший Клятву Здравомыслия, обычно кажется окружающим тем, кто следует странным предписаниям, непонятным для тех, кто не сталкивался с потусторонним миром, его мораль скорее синяя и оранжевая, чем черно-белая. Почти все они посвящают себя тому, чтобы не дать угрозам из потустороннего мира поглотить материальный мир и разрушить хрупкие умы его обитателей.
---
!!!Догматы здравомыслия
//''Порядок.''// Никогда не действуйте под влиянием случайных или хаотичных импульсов. Это признаки безумия.
//''Бдительность.''// Не позволяйте своему вниманию ослабевать, чтобы не упустить признаки безумия.
//''Дисциплина.''// Никогда не допускайте нарушений режима, ваши привычки защитят вас от безумия.
//''Серьёзность.''// Ваша работа ужасна. Никогда не получайте от нее удовольствия. Это ведет к безумию.
//''Здравомыслие.''// Несмотря ни на что, никогда не поддавайтесь безумию.
---
Ниже перечислены некоторые опциональные причуды для паладина Клятвы Здравомыслия. Вы можете самостоятельно выбрать причуды для вашего персонажа или определить их случайным образом по таблице.
| !к6 |!Причуда |
| 1 |Вы называете других приюченными маленькими ягнятами. Они и понятия не имеют. |
| 2 |Вы разговариваете сами с собой, что помогает вам оставаться в здравом уме в стрессовых ситуациях. Вторая личность может успокоить, если будет рядом. |
| 3 |Вы сравниваете, насколько плохо может быть все, что угодно, с древними чудовищами, уничтожающими реальность. |
| 4 |Вы периодически восклицаете: "Постоянная бдительность!". |
| 5 |Вы ведете список людей, которые, как вы подозреваете, могут вас предать. |
| 6 |Вы часто меняете свой план, чтобы сбить с толку чтецов мыслей. |
| 7 |Вы никогда не поворачиваетесь спиной к порталу. |
| 8 |Вы с большим подозрением относитесь к тем, кто сотворяет на вас заклинания, даже если это усиления или исцеление. |
| 9 |Вы не верите в совпадения. Это всегда заговор космических сил. Возможно, вы правы. |
| 10 |У вас есть сто и одно суеверие. |
| 11 |Вы часто пытаетесь глубокомысленно объяснить опасность совершенно обычных действий. |
| 12 |У вашего шлемя есть подкладка из оловянной фольги. |
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Отрицание сверхъестественного.''// Сразу после того, как вы нанесли урон существу своей Божественной карой, вы можете бонусным действием свой использовать Божественный канал, чтобы попытаться лишить цель её силы. Цель должна преуспеть в спасброске Харизмы, иначе не сможет сотворять заклинания или использовать псионические умения до конца своего следующего хода.
//''Изгнание аберранта.''// Вы можете использовать свой Божественный канал, чтобы наказывать потусторонних существ. Действием вы демонстрируете свой священный символ и все аберрации и нежить в пределах 6 м от вас, которые могут вас слышать или видеть, должны совершить спасбросок Мудрости. При провале существо изгоняется на 1 минуту или до тех пор, пока не получит урон.
Изгнанные существа должны весь свой ход пытаться убежать от вас так далеко, как только могут, и не могут добровольно переместиться в пространство, находящееся в пределах 6 м от вас. Из всех действий они могут совершать только [[Рывок|Рывок]] или пытаться избежать эффекта, не дающего им перемещаться. Если же двигаться некуда, существа могут использовать [[Уклонение|Уклонение]].
Если истинная форма существа скрыта иллюзией, изменением облика или другим эффектом, эта форма проявляется пока оно изгнано.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//защита от добра и зла//, //обнаружение магии// |
| !5 |//аннулирование эффекта//, //видение невидимого// |
| !9 |//рассеивание магии//, //снятие проклятья// |
| !13 |//изгнание//, //переносящая дверь// |
| !17 |//рассеивание зла и добра//, //удержание чудовища// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Активное сознание
Вы можете совершать спасбросок против эффектов, позволяющих вам совершить спасбросок в конце вашего хода, в начале вашего хода.
Начиная с 18 уровня, вы можете реакцией дать это преимущество другому видимому вами существу в пределах 6 м от вас, которое начинает свой ход под действием эффекта, против которого оно может совершить спасбросок в конце своего хода.
---
!!! [img[15.png]] Непрерывная бдительность
Вас не могут застать врасплох, а ваше значение пассивной внимательности остается неизменным даже в [[бессознательном|Бессознательный]] состоянии, пока у вас есть хотя бы 1 хит. Кроме того, когда вы совершаете проверку инициативы, если общий результат проверки меньше вашей пассивной внимательности, вы можете заменить результат на значение вашей пассивной внимательности.
---
!!! [img[20.png]] Ясность цели
<<<
Вы способны полностью воспринимать окружающий мир таким, каков он есть, разрушая нечистую магию и пронзая скрывающие его завесы, неумолимо и сосредоточенно.
<<<
Бонусным действием вы можете получить следующие преимущества на 1 минуту:
* Вы получаете истинное зрение в пределах 40 м.
* Вы получаете иммунитет к урону психической энергией.
* Вы совершаете спасброски против магических и псионических эффектов с преимуществом.
* Сразу после того, как вы нанесли урон противнику своей Божественной карой, вы можете сотворить заклинание //рассеивание магии// бонусным действием, не тратя ячейки заклинаний. Если уровень ячейки заклинаний, потраченной на Божественную кару, был выше 3 уровня, вы сотворяете //рассеивание магии// на уровне потраченной ячейки.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятва Искупления ставит паладина на тяжёлый путь, требующий от святого воителя использовать силу лишь как самую крайнюю меру. Паладины, посвятившие себя этой клятве верят, что каждый может быть спасён и что путь благожелательности и справедливости доступен каждому. Эти паладины ищут злых существ с надеждой обратить их к свету, а противников убивают только если это явно спасёт чужие жизни. Паладины, идущие этим путём известны как искупители.
Хоть искупители и идеалисты, они не дураки. Искупители знают, что нежить, демоны, дьяволы и другие сверхъестественные угрозы могут быть злыми по своей сути. Против таких врагов паладины, принесшие эту клятву, используют всю ярость своего оружия и заклинаний. И все же искупители молятся, чтобы однажды даже злобные существа нашли своё искупление.
---
!!!Догматы искупления
Догматы Клятвы Искупления ведут паладина дорогой высоких идеалов мира и справедливости.
//''Мир.''// Насилие – это оружие, которое следует применять в крайнем случае. Дипломатия и понимание – путь к долговременному миру.
//''Невинность.''// Все приходят в этот мир невинными, и только окружающая среда или влияние тёмных сил толкает их на зло. Подавая правильный пример и работая над исцелением ран глубоко несовершенного мира, вы можете наставить любого на праведный путь.
//''Терпение.''// Перемены требуют времени. Тем, кто шёл по пути зла, надо напоминать о чистоте и искренности. Посеяв семя праведности в существе, нужно день за днем работать, чтобы оно выжило и расцвело.
//''Мудрость.''// Ваше сердце и разум должны быть чисты, ибо в конце концов вам придется признать поражение. И хотя каждое существо можно спасти, некоторые зашли так далеко по пути зла, что вам не остается ничего иного, кроме как закончить их жизнь ради общего блага. Любое такое действие должно быть тщательно взвешено, а последствия полностью осознаны. Но, приняв решение, следуйте ему, зная, что ваш путь праведен.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Отречение от насилия.''// Сразу же после того, как существо, находящееся в пределах 6 м от вас, наносит урон атакой существу, отличному от вас, вы можете реакцией заставить атакующего совершить спасбросок Мудрости. При провале цель получает урон излучением в количестве равном урону, нанесённому этой атакой, или половину этого урона при успехе.
//''Посланник мира.''// Бонусным действием вы можете наделить свое присутствие божественной силой. Вы получаете бонус +5 к проверкам Харизмы (Убеждение) на следующие 10 минут.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//убежище//, //усыпление// |
| !5 |//удержание личности//, //умиротворение// |
| !9 |//гипнотический узор//, //контрзаклинание// |
| !13 |//каменная кожа//, //отилюков упругий шар// |
| !17 |//силовая стена//, //удержание чудовища// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура хранителя
<<<
Вы можете защитить других от вреда ценой собственного здоровья.
<<<
Когда существо в пределах 2 м от вас получает урон, вы можете реакцией магическим образом получить этот урон вместо него. Это умение не переносит никакие другие эффекты, которые могут сопровождать урон, и его невозможно уменьшить никаким способом.
На 18 уровне радиус ауры увеличивается до 6 м.
---
!!! [img[15.png]] Охраняющий дух
<<<
Святое присутствие исцеляет ваши раны в бою.
<<<
Вы восполняете хиты в количестве 1к6 + половина вашего уровня паладина, если в конце вашего хода в бою у вас менее половины вашего максимума хитов и вы дееспособны.
---
!!! [img[20.png]] Посланник искупления
<<<
Вы становитесь воплощением мира.
<<<
Вы получаете следующие преимущества:
* Вы получаете сопротивление ко всему урону, который наносят другие существа (атаками, заклинаниями и другими эффектами).
* Когда существо попадает по вам атакой, оно получает урон излучением в количестве равном половине урона, полученного вами от этой атаки.
Если вы атакуете существо, делаете его целью заклинания или наносите ему урон каким-либо другим образом, кроме как при помощи этого умения, ни одно из преимуществ не работает против этого существа, пока вы не завершите продолжительный отдых.
Клятва Короны — это присяга идеалам цивилизации, будь то дух нации, верность государю или служение божеству права и законности. Паладины, которые дают эту клятву, посвящают себя служению обществу, и, в частности, справедливым законам, удерживающим общество от распада. Эти паладины — бдительные стражи на стенах, сдерживающих волны варварства и хаоса, которые угрожают уничтожить все достижения цивилизации. Часто, паладины, которые дают данную клятву, являются членами рыцарского ордена на службе короля или народа, и рассматривают принятие клятвы как часть церемонии посвящения в ряды ордена.
---
!!!Догматы короны
Догматы Клятвы Короны часто устанавливаются государем, которому присягают, но в целом они опираются на несколько общих доктрин:
//''Закон.''// Закон превыше всего. Закон — это раствор, скрепляющий камни цивилизации, и его следует уважать.
//''Преданность.''// Ваше слово - ваши узы. Без преданности клятвы и законы бессмысленны.
//''Мужество.''// Вы должны быть готовы сделать то, что должно быть сделано ради порядка, даже перед лицом превосходящих сил. Если вы не будете действовать, то кто?
//''Обязанности.''// Вы должны понимать и принимать последствия своих действий, и вы несете ответственность за выполнение своих обязанностей и обязательств.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Вызов чемпиона.''// Бонусным действием вы бросаете вызов, который заставляет других существ сражаться с вами. Любое существо по вашему выбору, которое может вас видеть и находящееся в пределах 6 м от вас, должно совершить спасбросок Мудрости. В случае провала, существо не может добровольно отойти от вас дальше, чем на 6 м. Этот эффект прекращается если существо [[недееспособно|Недееспособный]], [[умирает|Смерть]] или оказывается на расстоянии более 6 м от вас.
//''Переломить ситуацию.''// Бонусным действием вы можете поддержать раненых союзников с помощью вашего умения Божественный канал. Каждое существо по вашему выбору, способное слышать вас и находящееся в пределах 6 м от вас, может восстановить количество своих хитов равное 1к6 + ваш модификатор Харизмы (минимум 1), но только в том случае, если текущее количество его хитов составляет менее половины от максимума.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//вызов на дуэль//, //приказ// |
| !5 |//область истины//, //охраняющая связь// |
| !9 |//аура живучести//, //духовные стражи// |
| !13 |//изгнание//, //страж веры// |
| !17 |//круг силы//, //обет// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Божественная преданность
Когда существо, находящееся в 1 м от вас получает урон, вы можете реакцией магически получить этот урон вместо цели. Этот урон не может быть уменьшен или предотвращён никаким образом.
---
!!! [img[15.png]] Непоколебимый дух
Вы совершаете с преимуществом спасброски от [[ошеломления|Ошеломлённый]] или [[паралича|Парализованный]].
---
!!! [img[20.png]] Возвышенный чемпион
<<<
Ваше присутствие на поле битвы вдохновляет посвященных вашему делу.
<<<
Бонусным действием вы можете получить следующие преимущества на 1 час:
* Вы получаете сопротивление к дробящему, колющему и рубящему урону от немагических атак.
* Ваши союзники в пределах 6 м от вас совершают спасброски от смерти с преимуществом.
* Вы и ваши союзники в пределах 6 м от вас совершаете спасброски Мудрости с преимуществом.
Эффект окончится преждевременно, если вы станете [[недееспособным|Недееспособный]] или умрете.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятва Мести - это торжественное обязательство карать тех, кто совершил тяжкий грех. Когда силы зла вырезают беспомощных селян, когда целый народ выступает против воли богов, когда гильдия воров становится слишком жестокой и сильной, когда дракон терроризирует сельскую местность — в такие времена паладины объединяются и приносят Клятву Мести, чтобы исправить то, что пошло не так. Для этих паладинов, иногда называемых мстителями или тёмными рыцарями, собственная чистота не так важна, как сотворение правосудия.
---
!!!Догматы мести
Догматы Клятвы Мести разнятся от паладина к паладину, но все они основаны на наказании злодеев любыми средствами. Паладины, соблюдающие эти догматы, готовы пожертвовать даже собственной праведностью, чтобы свершить правосудие над теми, кто творит зло, поэтому такие паладины часто нейтральны или законно нейтральны. Основные принципы догматов жестоки, но просты:
//''Боритесь с большим злом.''// При выборе между борьбой с заклятыми врагами и боем с меньшим злом, выбирайте большее зло.
//''Нет пощады злу.''// Обычные враги могут рассчитывать на пощаду, но не ваши заклятые.
//''Любой ценой.''// Ваши угрызения совести не могут встать на пути истребления ваших врагов.
//''Возмещение.''// Если ваши враги сеют разруху в мире, то это потому, что вам не удалось их остановить. Вы должны помочь тем, кто пострадал от их злодеяний.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Обет вражды.''// Вы можете бонусным действием произнести слова обета вражды по отношению к видимому вами существу в пределах 2 м от вас, используя ваш Божественный канал. Вы совершаете броски атаки по нему с преимуществом в течение 1 минуты, пока его хиты не опустятся до 0, или оно не потеряет сознание.
//''Порицание врага.''// Вы можете действием продемонстрировать свой священный символ и произнести обличающую молитву, используя свой Божественный канал. Выберите одно видимое вами существо в пределах 12 м от вас. Это существо должно совершить спасбросок Мудрости. Исчадия и нежить совершают этот спасбросок с помехой.
При провале существо становится [[испуганным|Испуганный]] вами на 1 минуту, или до тех пор, пока не получит урон. Пока существо [[испугано|Испуганный]] таким образом, его скорость равна 0, и оно не может получить никаких бонусов к скорости.
При успехе, скорость существа уменьшается вдвое на 1 минуту, или до тех пор, пока оно не получит урон.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//метка охотника//, //порча// |
| !5 |//туманный шаг//, //удержание личности// |
| !9 |//защита от энергии//, //ускорение// |
| !13 |//изгнание//, //переносящая дверь// |
| !17 |//наблюдение//, //удержание чудовища// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Беспощадный мститель
<<<
Ваше сверхъестественное внимание помогает вам отрезать вражеские пути к отступлению.
<<<
Когда вы попадаете по существу провоцированной атакой, вы можете частью этой реакции переместиться на расстояние, равное половине вашей скорости. Это перемещение не провоцирует атаки.
---
!!! [img[15.png]] Душа возмездия
Твёрдость, с которой вы произносите Обет вражды, даёт вам большую власть над противником.
Когда существо, находящееся под действием вашего Обета вражды, совершает атаку, вы можете реакцией совершить атаку рукопашным оружием по этому существу, если оно находится в пределах вашей досягаемости.
---
!!! [img[20.png]] Мстящий ангел
Бонусным действием вы можете магически превратиться в ангельского мстителя и получить следующие преимущества на 1 час:
* Из вашей спины вырастают крылья, предоставляющие вам скорость полёта 12 м.
* Вы излучаете ауру угрозы в радиусе 6 м вокруг вас. Когда враждебное существо впервые входит в ауру или начинает в ней свой ход, оно должно преуспеть в спасброске Мудрости, иначе станет [[испуганным|Испуганный]] вами на 1 минуту, или до тех пор, пока оно не получит урон. Броски атаки по [[испуганным|Испуганный]] таким образом существам совершаются с преимуществом.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятва Покорения взывает к паладинам, которые ищут славы в бою и покорения своих врагов. Для этих паладинов недостаточно установить порядок. Они должны сокрушить силы хаоса. Иногда, принёсших эту клятву называют рыцарями-тиранами или железными воителями. Они часто объединяются в грозные ордена, которые служат богам или философии войны и хорошо организованной мощи.
Некоторые из этих паладинов заходят так далеко, что связываются с силами Девяти Преисподних, ценя верховенство закона над торжеством милосердия. У архидьявола Бэла, военачальника Авернуса, есть множество таких паладинов – названных адскими рыцарями – его самых ярых сторонников. Адские рыцари покрывают свои доспехи трофеями, собранными с поверженных врагов – мрачное предупреждение всем, кто осмелится противостоять им и указам их повелителей. Другие паладины этой клятвы часто яростно выступают против них, полагая, что адские рыцари зашли слишком далеко во тьму.
---
!!!Догматы покорения
У паладина, принесшего эту клятву, догматы покорения начертаны на плече.
//''Тушите огонь надежды.''// Недостаточно просто победить врага в битве. Ваша победа должна навсегда сломить желание врага сражаться. Клинок может оборвать жизнь. Страх может положить конец империи.
//''Правьте железным кулаком.''// Как только вы покорили что-то, не терпите никакого инакомыслия. Ваше слово – закон. Те, кто подчиняются ему, будут вознаграждены благосклонностью. Ослушавшиеся будут наказаны в пример тем, кто может за ними последовать.
//''Сила превыше всего.''// Вы будете править, пока не появится кто-то более сильный. Тогда вы должны стать могущественней и принять вызов.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Направленный удар.''// Когда вы совершаете бросок атаки, вы можете использовать Божественный канал, чтобы получить бонус +10 к броску. Вы можете принять решение об использовании этой способности после объявления результата броска атаки.
//''Покоряющее присутствие.''// Действием вы можете источить ужасающее присутствие. Все существа, выбранные вами в пределах 6 м от вас, должны совершить спасбросок Мудрости, если они могут видеть вас. При провале цель становится [[испуганной|Испуганный]] вами на 1 минуту. Если существо, [[испуганное|Испуганный]] этим эффектом, завершает свой ход более чем в 6 м от вас, оно может повторить спасбросок Мудрости. При успехе эффект для него оканчивается.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//доспех агатиса//, //приказ// |
| !5 |//божественное оружие//, //удержание личности// |
| !9 |//проклятие//, //ужас// |
| !13 |//каменная кожа//, //подчинение зверя// |
| !17 |//облако смерти//, //подчинение личности// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура покорения
Пока вы дееспособны, от вас постоянно исходит угрожающая аура. Если [[испуганное|Испуганный]] вами существо, не находящееся за полным укрытием от вас, находится в пределах 2 м от вас, его скорость падает до 0. Каждый раз, когда это существо начинает свой ход в пределах 2 м от вас, оно получает урон психической энергией в количестве равном половине вашего уровня паладина.
На 18 уровне радиус ауры увеличивается до 6 м.
---
!!! [img[15.png]] Презрительное возмездие
<<<
Те, кто осмелился вас ударить, будут психически наказаны за свою дерзость.
<<<
Когда существо попадает по вам атакой, оно получает урон психической энергией в количестве равном вашему модификатору Харизмы (минимум 1), если вы дееспособны.
---
!!! [img[20.png]] Непобедимый покоритель
<<<
Вы способны проявлять необычайное боевое мастерство.
<<<
Бонусным действием вы можете магически превратиться в проявление покорения и получить следующие преимущества на 1 минуту:
* Вы получаете сопротивление ко всему урону.
* Если вы совершаете действие [[Атака|Атака]], вы можете совершить одну дополнительную атаку частью этого действия.
* Критический диапазон ваших рукопашных атак оружием увеличивается на 1.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятва Преданности связывает паладина с возвышенными идеалами справедливости, добродетели и порядка. Иногда называемые кавалерами, белыми рыцарями или святыми воителями, эти паладины подходят под идеал рыцаря в сияющих доспехах, действуя с честью в стремлении к справедливости и высшему благу. Они поддерживают самые высокие нормы поведения, и некоторые, к лучшему или худшему, требуют того же от остального мира. Многие давшие эту клятву, почитают богов добра и закона, и следуют их догматам в качестве доказательства своей преданности. Они почитают ангелов — совершенных слуг добра — за свои идеалы, и изображают ангельские крылья на шлемах и гербах.
---
!!!Догматы преданности
Хотя точные слова и предписания Клятвы Преданности варьируются, паладины данной клятвы разделяют следующие догматы:
//''Честность.''// Не лгите и не обманывайте. Да будет слово ваше незыблемо.
//''Отвага.''// Никогда не бойтесь действовать, однако осторожность - вещь благоразумная.
//''Сострадание.''// Помогайте другим, защищайте слабых и карайте тех, кто угрожает им. Проявляйте милосердие к врагам, но умеряйте его мудростью.
//''Честь.''// Относитесь к другим по справедливости, и пусть ваши благородные дела будут примером для них. Делайте как можно больше добра, причиняя при этом как можно меньше вреда.
//''Долг.''// Отвечайте за свои действия и их последствия, защищайте тех, кто доверен вашей заботе, и подчиняйтесь тем, кто имеет над вами справедливую власть.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Священное оружие.''// Вы можете действием наполнить одно оружие, которое вы держите, позитивной энергией, используя свой Божественный канал. В течение 1 минуты вы добавляете свой модификатор Харизмы к броскам атаки, совершённым этим оружием (минимальный бонус +1). Также оружие испускает яркий свет в пределах 4 м и тусклый свет в пределах ещё 4 м. Если оружие не является магическим, то оно считается магическим на время действия эффекта.
Вы можете окончить этот эффект в свой ход (действие не требуется). Если вы больше не держите или не несёте это оружие, или [[теряете сознание|Бессознательный]], то этот эффект оканчивается.
//''Изгнание нечестивого.''// Вы можете использовать свой Божественный канал, чтобы наказывать нечестивых существ. Действием вы демонстрируете свой священный символ и все исчадия и нежить в пределах 6 м от вас, которые могут вас видеть или слышать, должны совершить спасбросок Мудрости. При провале существо изгоняется на 1 минуту или до тех пор, пока не получит урон.
Изгнанные существа должны весь свой ход пытаться убежать от вас так далеко, как только могут, и не могут добровольно переместиться в пространство, находящееся в пределах 6 м от вас. Из всех действий они могут совершать только [[Рывок|Рывок]] или пытаться избежать эффекта, не дающего им перемещаться. Если же двигаться некуда, существа могут использовать [[Уклонение|Уклонение]].
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//защита от добра и зла//, //убежище// |
| !5 |//малое восстановление//, //область истины// |
| !9 |//маяк надежды//, //рассеивание магии// |
| !13 |//свобода перемещения//, //страж веры// |
| !17 |//небесный огонь//, //общение// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура преданности
Вы излучаете ауру чистосердечия, пока не являетесь [[недееспособным|Недееспособный]]. Вы, а также все союзные существа в пределах 2 м от вас, получаете иммунитет к состоянию [[Очарованный]].
На 18 уровне радиус ауры увеличивается до 6 м.
---
!!! [img[15.png]] Чистота духа
Аберрации, исчадия, небожители, нежить, феи и элементали совершают с помехой броски атаки по вам. Вы также не можете быть [[очарованы|Очарованный]], [[испуганы|Испуганный]] или одержимы ими.
---
!!! [img[20.png]] Святой нимб
<<<
Вы можете окружить себя аурой божественного света.
<<<
Бонусным действием вы можете получить следующие преимущества на 1 минуту:
* Вы испускаете яркий свет в пределах 6 м и тусклый свет в пределах ещё 6 м. Этот свет считается солнечным.
* Каждый раз, когда враждебное существо начинает ход ярком свете этого умения, оно получает 10 урона излучением.
* Вы совершаете спасброски от заклинаний, сотворённых исчадиями или нежитью, с преимуществом.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Паладины, приносящие клятву cлавы, верят, что им и их товарищам суждено прославиться через героические подвиги. Они усердно тренируются и поддерживают своих товарищей, так что они всегда готовы, когда судьба позовёт их.
---
!!!Догматы славы
Догматы Клятвы Славы побуждают паладина совершать героические подвиги, которые в один прекрасный день могут воплотиться в легенды.
//''Действия превыше слов.''// Стремитесь быть известными по своим славным делам, а не словам.
//''Испытания — это всего лишь испытания.''// Смело встречайте трудности и вдохновляйте своих союзников на то, чтобы они преодолевали их вместе с вами.
//''Тренируй своё тело.''// Как и с неотёсанным камнем, с вашим телом нужно работать, чтобы раскрыть весь его потенциал.
//''Дисциплинируй душу.''// Вы должны проявлять дисциплину, чтобы преодолевать свои слабости, угрожающие затмить славу ваших свершений и подвигов ваших друзей.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Несравненный спортсмен.''// Бонусным действием вы можете использовать свой Божественный канал, чтобы усилить свои атлетические способности. В течение следующих 10 минут вы совершаете проверки Силы (Атлетика) и Ловкости (Акробатика) с преимуществом. Вы можете нести, толкать, тащить и поднимать вдвое больше веса, чем обычно, и расстояние ваших прыжков в длину и высоту увеличивается на 2 м.
//''Впечатляющий удар.''// Сразу же после того, как вы нанесете урон существу с помощью своей Божественной кары, вы можете бонусным действием использовать свой Божественный канал и даровать временные хиты существам по вашему выбору в пределах 6 м от вас, включая и себя. Общее количество временных хитов равно 2к8 + ваш уровень в этом классе. Вы можете распределять временные хиты среди выбранных существ произвольно.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//героизм//, //направленный снаряд// |
| !5 |//магическое оружие//, //улучшение характеристики// |
| !9 |//защита от энергии//, //ускорение// |
| !13 |//свобода перемещения//, //принуждение// |
| !17 |//небесный огонь//, //общение// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура рвения
<<<
Вы излучаете ауру, наделяющую вас и ваших союзников сверхъестественной скоростью, позволяя вам мчаться единым строем по полю боя.
<<<
Ваша скорость перемещения увеличивается на 2 м. Кроме того, пока вы не являетесь [[недееспособным|Недееспособный]], скорость перемещения любого союзника, который начинает свой ход в пределах 1 м от вас, увеличивается на 2 м до конца его хода.
Когда вы достигаете 18 уровня в этом классе, радиус ауры увеличивается до 2 м.
---
!!! [img[15.png]] Блестящая оборона
<<<
Вы получаете возможность обернуть защиту в неожиданную атаку.
<<<
Когда по вам или другому существу, которое вы можете видеть в пределах 2 м от вас, попадают атакой, вы можете реакцией добавить бонус к КД цели против этой атаки, что может привести к промаху. Бонус равен вашему модификатору Харизмы (минимум +1). Если атака промахивается, то вы можете совершить одну атаку оружием против атакующего частью этой реакции при условии, что атакующий находится в пределах досягаемости вашего оружия.
Вы можете использовать это умение количество раз, равное вашему модификатору Харизмы (минимум один раз). Вы восстанавливаете все потраченные использования после завершения продолжительного отдыха.
---
!!! [img[20.png]] Живая легенда
<<<
Вы можете усиливать себя легендами о своих великих подвигах, будь они правдивыми или преувеличенными.
<<<
Бонусным действием вы можете получить следующие преимущества на 1 минуту:
* Вы благословлены потусторонними силами и совершаете все проверки Харизмы с преимуществом.
* Один раз в свой ход, когда вы совершаете рукопашную атаку оружием и промахиваетесь, вы можете изменить промах на попадание.
* Если вы проваливаете спасбросок, то вы можете использовать свою реакцию, чтобы повторить его. Вы обязаны использовать новое значение.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятва Смотрителей обязывает паладинов защищать миры смертных от экстрапланарных существ, многие из которых настолько сильны, что ни одна смертная армия не сможет избежать истребления. Поэтому смотрители оттачивают свой разум, дух и тело, чтобы стать абсолютным оружием против подобных угроз.
Паладины, следующие Клятве Смотрителей, всегда бдительны при обнаружении влияния экстрапланарных сил, нередко организовывая сеть шпионов и информаторов для сбора информации о подозрительных культах. Для смотрителя иметь здоровую подозрительность и осведомлённость настолько же важно, как носить доспехи в бою.
---
!!!Догматы смотрителей
Паладин, принявший Клятву Смотрителей, поклялся защищать смертных от угроз из других миров.
//''Бдительность.''// Угрозы, с которыми вы сталкиваетесь, хитры, могущественны и разрушительны. Будьте всегда бдительны к их отравляющему влиянию.
//''Верность.''// Никогда не принимайте дары от исчадий и тех, кто им служит. Оставайтесь верны своему ордену, союзникам и долгу.
//''Дисциплина.''// Вы — это защита от бесконечных угроз, скрывающихся далеко за звездами. Ваш ум и клинок должны оставаться острыми, чтобы пережить то, что придет издалека.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Воля смотрителей.''// Вы можете использовать Божественный канал, чтобы усилить своё присутствие могущественной силой вашей веры. Действием вы выбираете количество существ, которых вы можете видеть в 6 м от вас, равное вашему модификатору Харизмы (минимум одно существо). В течение 1 минуты вы и все выбранные существа совершаете спасброски Интеллекта, Мудрости и Харизмы с преимуществом.
//''Изгнание экстрапланара.''// Вы можете использовать свой Божественный канал, чтобы наказывать потусторонних существ. Действием вы демонстрируете свой священный символ и все аберрации, исчадия, небожители, феи и элементали в пределах 6 м от вас, которые могут вас слышать, должны совершить спасбросок Мудрости. При провале существо изгоняется на 1 минуту или до тех пор, пока не получит урон.
Изгнанные существа должны весь свой ход пытаться убежать от вас так далеко, как только могут, и не могут добровольно переместиться в пространство, находящееся в пределах 6 м от вас. Из всех действий они могут совершать только [[Рывок|Рывок]] или пытаться избежать эффекта, не дающего им перемещаться. Если же двигаться некуда, существа могут использовать [[Уклонение|Уклонение]].
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//обнаружение магии//, //сигнал тревоги// |
| !5 |//видение невидимого//, //лунный луч// |
| !9 |//контрзаклинание//, //необнаружимость// |
| !13 |//аура очищения//, //изгнание// |
| !17 |//наблюдение//, //удержание чудовища// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура стража
Вы излучаете ауру бдительности, пока не являетесь [[недееспособным|Недееспособный]]. Когда вы и любые существа по вашему выбору в пределах 2 м от вас совершают бросок инициативы, вы, и выбранные вами существа получают бонус к инициативе, равный вашему бонусу мастерства.
На 18 уровне радиус ауры увеличивается до 6 м.
---
!!! [img[15.png]] Бдительное возмездие
<<<
Вы научились магическим образом наказывать любого, кто посмеет использовать чары против вас или ваших товарищей.
<<<
Каждый раз, когда вы или существо, которое вы можете видеть в пределах 6 м от вас, преуспевает в спасброске Интеллекта, Мудрости или Харизмы, вы можете реакцией нанести 2к8 + ваш мод. Харизмы урона силовым полем тому, кто заставил совершить этот спасбросок.
---
!!! [img[20.png]] Оплот смертных
<<<
Вы пробуждаете искру вашей божественной силы ради защиты мира смертных.
<<<
Бонусным действием вы можете получить следующие преимущества на 1 минуту:
* Вы получаете истинное зрение в пределах 40 м.
* Вы совершаете с преимуществом броски атаки против аберраций, исчадий, небожителей, фей и элементалей.
* Когда вы попадаете по существу атакой и наносите ему урон, вы также можете заставить это существо совершить спасбросок Харизмы. При провале, существо магическим образом изгоняется на свой родной план существования, если только оно уже не находится на нём. При успехе, существо не может быть изгнано с помощью данного умения в течение 24 часов.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
Клятвопреступник — это паладин, нарушивший священную клятву, чтобы преследовать некие темные амбиции или служить злой силе. Свет, когда-то горевший в его сердце, гаснет. Остаётся одна лишь тьма.
---
!!! [img[3.png]] Божественный канал
Вы получаете два варианта применения Божественного канала, описанные ниже. Когда вы используете ваш Божественный канал, вы выбираете, какой эффект создать.
После использования Божественного канала вы должны провести 30 минут в медитации или молитве своему божеству, чтобы использовать его снова. Вы можете делать это частью короткого или продолжительного отдыха, но не чаще чем количество раз равное вашему бонусу мастерства до завершения продолжительного отдыха.
Некоторые эффекты Божественного канала требуют совершить спасбросок. Когда вы используете эффекты такого рода, Сл равна Сл спасброска от ваших заклинаний паладина.
//''Контроль над нежитью.''// Действием вы можете выбрать одно видимое вами существо-нежить в пределах 6 м от вас. Цель должна совершить спасбросок Мудрости. При провале цель должна подчиняться вашим командам в течение следующих 10 дней, или пока вы не использует этот вариант Божественного канала ещй раз. Нежить, чей показатель опасности равен половине ваших уровней паладина или выше, обладает иммунитетом к этому эффекту.
//''Ужасающий облик.''// Действием вы можете собрать все свои самые тёмные эмоции и выдать их вспышкой магической злобы. Все существа, выбранные вами в пределах 6 м от вас, должны совершить спасбросок Мудрости, если они могут видеть вас. При провале цель становится [[испуганной|Испуганный]] вами на 1 минуту. Если существо, [[испуганное|Испуганный]] этим эффектом, завершает свой ход более чем в 6 м от вас, оно может повторить спасбросок Мудрости. При успехе эффект для него оканчивается.
---
!!! [img[3.png]] Заклинания клятвы
У каждой клятвы есть список заклинаний, которые вы получаете на новых уровнях паладина. Как только вы получаете заклинание клятвы, оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
Если вы получаете доступ к заклинанию, отсутствующему в списке заклинаний паладина, оно всё равно будет считаться для вас заклинанием паладина.
На каждом указанном уровне паладина вы добавляете перечисленные заклинания к своим подготовленным заклинаниям.
| !УП |!Заклинания |
| !3 |//адское возмездие//, //нанесение ран// |
| !5 |//корона безумия//, //тьма// |
| !9 |//восставший труп//, //проклятие// |
| !13 |//смятение//, //усыхание// |
| !17 |//заражение//, //подчинение личности// |
//УП - Уровень паладина//
---
!!! [img[7.png]] Аура ненависти
Вы излучаете ауру ненависти, пока не являетесь [[недееспособным|Недееспособный]]. Вы, а также все союзные исчадия и нежить в пределах 2 м от вас, получаете бонус к броскам урона рукопашным оружием равный вашему модификатору Харизмы (минимум +1).
На 18 уровне радиус ауры увеличивается до 6 м.
---
!!! [img[15.png]] Сверхъестественное сопротивление
Вы получаете сопротивление к дробящему, колющему и рубящему урону от немагических атак.
---
!!! [img[20.png]] Повелитель ужаса
<<<
Вы можете окружить себя аурой мрака.
<<<
Бонусным действием вы можете получить следующие преимущества на 1 минуту:
* Любой яркий свет в пределах 6 м от вас становится тусклым светом.
* Каждый раз, когда враг, [[испуганный|Испуганный]] вами, начинает ход в пределах 6 м от вас, он получает 4к10 урона психической энергией.
* Вы и выбранные вами существа, находящиеся в пределах 6 м от вас, окутываетесь плотными тенями. Существа, полагающиеся на зрение, совершают броски атаки по существам, окутанным тенью, с помехой.
* Бонусным действием в свой ход вы можете заставить тени атаковать одно существо в пределах 6 м от вас. Вы совершает по цели рукопашную атаку заклинанием. Если атака попадает, цель получает 3к10 + ваш модификатор Харизмы урона некротической энергией.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 5 уровня или выше на повторное использование этого умения.
[img width=500 class="centerme" [https://i.imgur.com/M8ADJC9.png]]
<<tabs "[tag[Кобольд - описание]]" "Описание кобольдов" "$:/state/tab1">>
[img width=340 class="centerme" [https://i.imgur.com/D0KCUvh.png]]
<<tabs "[tag[Кованый - описание]]" "" "$:/state/tab1">>
Шкуры, чешуя и панцири как правило добываются с монстров. Кожа - это продукт из шкуры, который может быть обработан из того, что собрано с монстра.
Мастер определяет, можно ли добыть с монстра шкуру, чешую или панцирь. Шкуры не отличаются по размеру, скорее, более крупные существа просто приносят больше шкур, а монстры, которые недостаточно велики для получения одной шкуры, приносят только обрезки шкур.
Чешуя также абстрагирована: каждое значение - это просто произвольное количество чешуи, которое охватывает единица чешуи. Чешуя может быть намного больше или меньше у существ разного размера.
Система не стремится определить, сколько чешуек приносит то или иное существо или сколько буквально чешуек требуется для доспеха, а скорее дает число, которое затем последовательно используется.
При сборе с существа совершается проверка Мудрости (Выживание), Сл которой указана ниже. При провале, сбор приносит 1к4 обрезков шкур вместо любых шкур, панцири на один размер меньше, и вдвое меньше чешуи.
<<<
//''Обработка шкур''//
//Процесс изготовления кожи из шкур занимает довольно много времени (согласно таблице ремесел), и часто приключенцы могут поручить его НИП (доставляя шкуры для обработки) или делать во время простоя.//
<<<
Кожевенное дело часто рассматривается как что-то вроде эквивалента кузнечному для "легких доспехов", но оно охватывает гораздо больше возможностей. Несмотря на то, что он может быть невоспетым героем, лучший друг искателя приключений - это рюкзак из прочной кожи. Рюкзаки, пояса, бурдюки для воды, колчаны и многое другое - все это изготавливается этими мастерами и может оказаться незаменимым в повседневной жизни.
Помимо обыденных изделий, кожа, шкуры, чешуя и панцири чудовищ в фантастических местах, в которые попадают эти ремесленники, часто открывают больше возможностей, чем основные компоненты повседневных предметов. Если вы хотите извлечь максимальную пользу из убитых вами монстров, вам обязательно нужен мастер-кожевенник.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления предмета из кожи в самой простой форме:
* Выберите предмет, который вы хотите изготовить, из таблицы [[Кожевенное дело|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=343757799]].
* Приобретите предметы, перечисленные в колонке Материалы для этого предмета.
* Используйте свои [[инструменты кожевника|Инструменты кожевника]] для изготовления предмета в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Ловкости + ваш бонус мастерства [[инструментов кожевника|Инструменты кожевника]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Кожевенное дело основано на использовании [[инструментов кожевника|Инструменты кожевника]]. Попытка изготовить предмет из Кожевенного дела без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на изготовление таких предметов. Кожевенное дело использует ваш модификатор Ловкости.
---
!!!Материалы: кожа и шкуры
Кожевники используют кожу и шкуры, в основном добытые с монстров, однако иногда они работают с тяжелой стеганой тканью, металлическими деталями и прочными панцирями.
---
!!!Проверка ремесла
Когда вы хотите поработать над кожевенным делом, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор кожевенного дела = бонус мастерства инструментов кожевника + модификатор Ловкости
```
!!!Успех и провал
Для кожевенного дела, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Модификаторы и улучшения
Вы можете изготавливать особые варианты стандартной экипировки, используя различные модификаторы материалов и изготовления, а также впоследствии улучшать их. Эти модификаторы и улучшения подчиняются следующим правилам:
* Приступая к изготовлению предмета вы можете добавить ему один модификатор материалов и/или один модификатор изготовления.
* При добавлении модификаторов Сл каждой проверки ремесла увеличивается как указано в соответствующих таблицах.
* Готовый предмет может быть улучшен любое количество раз, но каждое улучшение может быть применено только один раз.
* Указанная стоимость готовых предметов с модификаторами и улучшениями является ориентиром для Мастера. Такие предметы могут быть как широко распространены, так почти также редки как магические, и их цена может резко разниться.
* Щиты и отдельные элементы доспехов не получают преимуществ модификаторов и улучшений.
* Проваленная проверка ремесла при изготовлении //превосходного// или //мастерского// предмета не является таковой, если её результат удовлетворяет обычной Сл изготовления предмета. Готовый предмет считается //превосходным// или //мастерским//, если все успешные проверки при его изготовлении соответствовали модифицированной сложности. Таким образом, например, в результате изготовления //мастерского// предмета вы можете получить //превосходный// предмет, если вы провалили одну или несколько проверок при его изготовлении, но они всё ещё удовлетворяли Сл изготовления //превосходного// варианта.
---
!!!Обслуживание и подгонка
Ниже перечислены работы, требующие владения [[инструментами кожевника|Инструменты кожевника]], которые обеспечивают более повседневную полезность этого ремесла, предоставляя возможность улучшить или приспособить свое снаряжение. Эта мелкая работа может быть завершена за 2 часа при затрате 5 см материалов.
''Обслуживание экипировки''
Одним из преимуществ наличия кожевника в поле является его способность следить за состоянием экипировки, обеспечивая вам превосходство в качестве ваших доспехов. За 2 часа кожевник может обслужить количество комплектов неметаллических доспехов, равное его бонусу мастерства, наделяя каждые доспехи особой Костью Качества - к6.
Для доспехов, когда по вам попадают атакой, вы можете уменьшить полученный от неё урон на результат броска Кости Качества.
Бросок Кости Качества не требует действия, а Кость Качества тратится сразу после броска.
''Починка экипировки''
Иногда во время приключений доспехи сильно повреждаются, получая штраф к броскам атаки или КД. За 2 часа вы можете восстановить повреждения одного комплекта неметаллических доспехов, хотя по усмотрению Мастера вам могут понадобиться другие материалы для выполнения этой задачи, если предмет сильно поврежден.
''Подгонка доспеха''
Хотя изготовление доспехов в полевых условиях зачастую невозможно, вы можете вносить небольшие изменения прямо на ходу. За 2 часа вы можете подогнать комплект неметаллических доспехов под другого пользователя, равного или меньшего по размеру, чем оригинальный пользователь. Это включает подгонку под существ с крыльями, нестандартным количеством конечностей и другими нехарактерными для обычного гуманоида особенностями.
''Украшение доспеха''
За 2 часа вы можете украсить священным символом щит или комплект доспехов. Украшенные доспехи или щит могут быть использованы в качестве заклинательной фокусировки для заклинаний жреца или паладина.
[img width=490 class="centerme" [https://i.imgur.com/b3Ob4o3.png]]
<<tabs "[[Описание колдунов]] [[Классовые умения колдунов]] [[Потусторонние покровители]]" "" "$:/state/tab1">>
<<tabs "[tag[Коллегия бардов]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Некоторые барды развивают свой талант, сочиняя прекрасные баллады, которые доводят слушателей до слез. Некоторые барды просто увеличивают громкость. Коллегия Грома - это путь для тех, кто хочет быть услышанным - донести свое послание с большим ударением до как можно большего числа людей. Они часто проявляют большой интерес к совершенствованию своих инструментов, находят новые приспособления, которые позволяют им издавать новые, более громкие звуки... даже если музыкальность этих звуков иногда оспаривается более классическими исполнителями.
Лишенные тонкости, эти барды считаются новаторами и первопроходцами сами по себе... и, как правило, большой занозой в ушах для большинства других, особенно их предшествующего поколения.
Ниже перечислены некоторые опциональные причуды для барда Коллегии Грома. Вы можете самостоятельно выбрать причуду для вашего персонажа или определить её случайным образом по таблице.
| !к6 |!Причуда |
| 1 |Все проверки выступления лучше проводить при максимальной громкости. |
| 2 |Ваш вкус к моде незабываем. |
| 3 |Вы бросаетесь во все безрассудно. Старость - для зануд. |
| 4 |Вы предпочитаете странные инструменты, с которыми бесконечно возитесь. |
| 5 |Все является сценой, если вы верите в это достаточно сильно. |
| 6 |Иногда вы сильно втягиваетесь в представления с пантомимой. |
---
!!! [img[3.png]] Громовая магия
Вы узнаёте новые заклинания на указанных уровнях барда. Эти заклинания считаются для вас заклинаниями барда и не учитываются при подсчёте количества известных вам заклинаний барда.
| !УБ |!Заклинания |
| !3 |//дребезги//, //удар грома// |
| !5 |//импульс грома// |
| !7 |//эхо-копьё// |
| !9 |//пронзающий вопль// |
//УЧ - Уровень барда//
---
!!! [img[3.png]] Драматические заговоры
Вы изучаете заговоры //громовая нота// и //чудотворство//. Эти заговоры считаются для вас заговорами барда, и не учитываются в общее количество известных вам заговоров.
---
!!! [img[3.png]] Жёсткий аккорд
Действием вы можете потратить одно использование своего Вдохновения барда и сыграть мощный аккорд, разносящийся вокруг. Выбранные вами существа в пределах 4 м от вас должны совершить спасбросок Телосложения. При провале существо получает урон звуком в количестве, равном результату броска вашей Кости Вдохновения + ваш уровень барда, или половину урона при успехе. Спасброски для поддержания концентрации на заклинании при получении этого урона совершаются с помехой.
---
!!! [img[6.png]] Громче
Когда вы сотворяете заклинание, наносящее урон звуком, вы можете добавить свой модификатор Харизмы к одному броску урона этого заклинания.
---
!!! [img[6.png]] Усиленные выходки
Когда вы сотворяете заклинание барда с дистанцией более 1 м, его дистанция увеличиваетсмя на 6 м (это не влияет на область действия заклинаний, включая заклинания, у которых область действия указана в дистанции, например, //волна грома//).
---
!!! [img[14.png]] Реверберирующее эхо
Когда вы тратите ячейку заклинаний на сотворение заклинания, наносящего урон звуком, вы можете снова сотворить это заклинание в свой следующий ход, не тратя ячейку заклинаний, но наносимый им урон уменьшается вдвое.
Барды Коллегии Доблести - это отважные скальды, чьи сказания не дают забыть великих героев прошлого и вдохновляют на подвиги нынешних героев. Такие барды собираются в медовых залах или вокруг походных костров, чтобы воспеть великие свершения прошлого и настоящего. Они путешествуют с целью стать очевидцами великих событий и не дать памяти о них угаснуть. Своими песнями они вдохновляют на достижения, достойные памяти предков.
---
!!! [img[3.png]] Боевое вдохновение
<<<
Вы научились вдохновлять других в бою.
<<<
Существо, получившее от вас Кость Вдохновения барда, может один раз бросить эту кость и добавить результат к своему броску урона оружием. В качестве альтернативы, если существо атаковано, оно может реакцией совершить бросок Кости Вдохновения барда и добавить результат к своему КД от этой атаки. Оно может сделать это после объявления результата броска атаки, но до вступления его эффекта в силу.
---
!!! [img[3.png]] Дополнительные владения
Вы получаете владение средними доспехами, простым оружием и воинским оружием.
---
!!! [img[6.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[14.png]] Боевая магия
<<<
Вы научились сплетать использование заклинаний и оружия в одно гармоничное действие.
<<<
Если вы действием сотворяете заклинание барда, вы можете бонусным действием совершить одну атаку оружием.
Барды Коллегии Духов ищут предания с заложенной в них силой, будь то легенды, истории или небылицы, и воплощают их в жизнь. Используя оккультные приемы, эти барды вызывают духовные олицетворения могущественных сил, чтобы еще раз изменить мир. Однако такие духи капризны, и то, что вызывает бард, не всегда находится под его полным контролем.
---
!!! [img[3.png]] Духовная фокусировка
<<<
Вы используете инструменты, которые помогают вам обращаться к духам, будь то исторические личности или вымышленные персонажи.
<<<
Вы можете использовать следующие предметы в качестве фокусировки для ваших заклинаний барда: свечу, хрустальный шар, череп, колдовскую доску или колоду Тарокка.
Начиная с 6 уровня, когда вы сотворяете заклинание барда, удерживая духовную фокусировку, вы добавляете 1к6 к одному броску урона или исцеления этого заклинания.
---
!!! [img[3.png]] Сказки с того света
<<<
Вы связываетесь с духами, которые рассказывают свои сказки через вас.
<<<
Пока вы удерживаете духовную фокусировку, вы можете бонусным действием потратить одно использование вашего Вдохновения барда и совершить бросок по таблице "Сказки духов", используя вашу Кость Вдохновения барда, чтобы определить сказку, которую духи поручили вам рассказать. Вы сохраняете эту сказку в памяти до тех пор, пока не используете эффект сказки или не завершите короткий или продолжительный отдых.
Действием вы можете выбрать одно видимое вами существо в пределах 6 м от вас (включая себя) целью эффекта сказки. Сделав это, вы не можете использовать эффект сказки снова, пока не выбросите то же значение по таблице "Сказки духов".
Одновременно вы можете держать в памяти только одну из этих сказок, а бросок по таблице "Сказки духов" немедленно прекращает действие предыдущей сказки.
Если сказка требует от существа совершения спасброска, используется Сл спасбросков от ваших заклинаний барда.
!!!Сказки духов
| !Кость Вдохн. барда |!Сказка, рассказанная через вас |
| 1 |''Сказка об умном животном.'' В течении следующих 10 минут, когда цель совершает проверку Интеллект, Мудрости или Харизмы, она может совершить бросок дополнительной кости сразу после броска к20 и добавить выпавший результат к значению проверки. Дополнительная кость того же типа, что и ваша Кость Вдохновения барда. |
| 2 |''Сказка о прославленном дуэлисте.'' Вы совершаете рукопашную атаку заклинанием по цели. При попадании, цель получает урон силовым полем в количестве, равному двум броскам вашей Кости Вдохновения барда + ваш модификатор Харизмы. |
| 3 |''Сказка о лучших друзьях.'' Цель и другое видимое ею существо по её выбору в пределах 1 м от неё получают временные хиты в количестве равном значению броска вашей Кости Вдохновения барда + ваш модификатор Харизмы. |
| 4 |''Сказка о беглеце.'' Цель может немедленно использовать свою реакцию, чтобы телепортироваться в видимое ею незанятое пространство на расстояние до 6 м. Когда цель телепортируется, она может выбрать видимых ею существ в пределах 6 м от неё в количестве, не превышающем её модификатор Харизмы (минимум 0), чтобы позволить им немедленно совершить ту же реакцию. |
| 5 |''Сказка о мстителе.'' В течении 1 минуты любое существо, попадающее по цели рукопашной атакой, получает урон силовым полем в количестве, равному броску вашей Кости Вдохновения барда. |
| 6 |''Сказка о путешественнике.'' Цель получает временные хиты в количестве равном значению броска вашей Кости Вдохновения барда + ваш уровень барда. Пока у цели есть эти временные хиты, её скорость ходьбы увеличивается на 2 м, а она получает бонус +1 к КД. |
| 7 |''Сказка об обманщике.'' Цель должна преуспеть в спасброске Мудрости, иначе она получает урон психической энергией в количестве, равном двум броскам вашей Кости Вдохновения барда, и становится недееспособной до конца своего следующего хода. |
| 8 |''Сказка о фантоме.'' Цель становится невидимой до конца своего следующего хода, или пока не попадёт по существу атакой. Если цель попадает по существу атакой, пока она невидима таким образом, существо получает дополнительный урон некротической энергией в количестве, равном броску вашей Кости Вдохновения барда, и испугано целью до конца своего следующего хода. |
| 9 |''Сказка о силаче.'' Существа по выбору цели, видимые ею в пределах 6 м от неё, должны совершить спасбросок Силы. При провале существа получают урон звуком в количестве, равном трём броскам вашей Кости Вдохновения барда, и сбиваются с ног. При успехе существа получают половину этого урона и не сбиваются с ног. |
| 10 |''Сказка о драконе.'' Цель извергает пламя изо рта в 6-метровом конусе. Каждое существо в области должно совершить спасбросок Ловкости, и получить урон огнём в количестве, равном четырём броскам вашей Кости Вдохновения барда, при проваленном спасброске или половину при успешном. |
| 11 |''Сказка об ангеле.'' Цель восстанавливает хиты в количестве, равном двум броскам вашей Кости Вдохновения барда + ваш модификатор Харизмы, и вы оканчиваете одно состояние на цели из следующего списка: глухота, окаменение, ослепление, отравление или паралич. |
| 12 |''Сказка о повелителе разума.'' Вы произносите непостижимую легенду от иномирного существа. Цель должна преуспеть в спасброске Интеллекта, иначе она получает урон психической энергией в количестве, равном трём броскам вашей Кости Вдохновения барда, и становится ошеломлённой до конца своего следующего хода. |
<<<
Сказители, такие как барды Коллегии духов, часто излагают истории, вдохновленные какой-то более важной темой или совокупностью произведений. Определяя, какие сказки вы рассказываете, подумайте, что их объединяет. Есть ли в них персонажи из определенной группы, например, архетипы из колоды Тарокка, фигуры из созвездий, воображаемые друзья из детства или персонажи конкретного сборника рассказов? Или ваши источники вдохновения более общие, включающие исторических чемпионов, мифологических героев или городские легенды? Используйте истории, которые вы рассказываете, чтобы определить свою нишу в качестве искателя приключений.
<<<
---
!!! [img[3.png]] Путеводные шёпоты
<<<
Вы можете обратиться к духам, чтобы они направили вас и других.
<<<
Вы изучаете заговор //указание//, который не учитывается в общее количество известных вам заговоров барда. Для вас, он обладает дистанцией 12 м, когда вы сотворяете его.
---
!!! [img[6.png]] Спиритический сеанс
<<<
Духи открывают вам сверхъестественные знания.
<<<
Вы можете провести часовой ритуал общения с духами (это можно сделать во время короткого или продолжительного отдыха), используя свою духовную фокусировку. Вы можете проводить ритуал с количеством согласных существ, равным вашему бонусу мастерства (включая себя). В конце ритуала вы временно изучаете одно заклинание школы некромантии или прорицания по вашему выбору из списка любого класса.
Уровень выбранного заклинания не должен превышать количество существ, участвовавших в ритуале, и уровень самой высокой имеющейся у вас ячейки заклинаний барда. Выбранное заклинание считается для вас заклинанием барда, и оно не учитываются в общее количество известных вам заклинаний.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых. а выбранное заклинание известно вам пока вы не начнете продолжительный отдых.
---
!!! [img[14.png]] Мистическая связь
<<<
Вы получили возможность подталкивать духов из Сказок с того света к определенным сказкам.
<<<
Каждый раз, когда вы совершаете бросок по таблице "Сказки духов", вы можете бросить одну дополнительную кость и выбрать одно из двух значений. Если на обоих костях выпало одинаковое число, вы можете игнорировать результат и выбрать любую сказку из таблицы.
Барды Коллегии Знаний понемногу осведомлены обо всём на свете. Они собирают крупицы знаний отовсюду, будь то научные труды или крестьянские побасенки. Напевают ли они народные баллады в таверне, или исполняют изысканные композиции при дворе, эти барды используют свой талант, чтобы очаровать публику. И когда смолкают аплодисменты, публика может обнаружить себя рассказывающей все свои секреты, начиная со сплетен местного прихода, и заканчивая подробностями своей верности королю.
Лояльность таких бардов покоится на стремлении к красоте и правде, а не на верности монархам или приверженности к религиозным догматам. Дворяне, содержащие таких бардов в качестве советников или герольдов, хорошо знают, что бард скорее скажет неприятную правду, чем благоразумно промолчит.
Члены коллегии собираются в библиотеках, а иногда даже в колледжах, с настоящими классами и общежитиями. Там они делятся друг с другом знаниями. Они также посещают фестивали и общественные собрания, где могут выявлять растратчиков, разоблачать лжецов или выставлять на посмешище самоуверенных политиков.
---
!!! [img[3.png]] Дополнительные навыки
Вы получаете владение тремя навыками на ваш выбор.
---
!!! [img[3.png]] Острое словцо
<<<
Вы научились использовать собственное остроумие, чтобы отвлечь, смутить или по-другому подорвать способности и уверенность противников.
<<<
Если существо, которое вы можете видеть, в пределах 12 м от вас совершает бросок атаки, урона или проверку характеристики, вы можете реакцией потратить одну из ваших Костей Вдохновения барда, и вычесть результат броска этой кости из броска этого существа. Вы можете принять решение об использовании этого умения после объявления результата броска существа, но до вступления его эффекта в силу.
Существо не подвержено этому умению, если не может слышать вас, или обладает иммунитетом к очарованию.
---
!!! [img[6.png]] Дополнительные тайны магии
Вы изучаете два заклинания любого класса на ваш выбор, включая ваш собственный. Эти заклинания должны быть того уровня, который вы можете использовать, или являться заговорами.
Эти заклинания считаются для вас заклинаниями барда, и они не учитываются в общее количество известных вам заклинаний.
---
!!! [img[14.png]] Непревзойдённый навык
Если вы совершаете проверку характеристики, вы можете потратить Кость Вдохновения барда и добавить результат её броска к проверке. Вы можете принять решение об использовании этого умения после объявления результата броска проверки, но до вступления его эффекта в силу.
Барды Коллегии Красноречия являются мастерами ораторского искусства. Убеждение считается одной из высших форм искусства, а хорошо обоснованный и искусно поданный довод может оказаться сильнее, чем объективная правда. Эти барды используют сплетение логики и риторики, чтобы склонять на свою сторону скептиков и критиканов неоспоримыми аргументами и, играя на душевных нотках, вызывать эмоции у целых аудиторий.
---
!!! [img[3.png]] Подвешенный язык
<<<
Вы мастерски находите подходящие слова в нужное время.
<<<
Когда вы совершаете проверку Харизмы (Убеждение) или Харизмы (Обман), вы можете при выпадении на к20 результата «1–9» считать, что выпало «10».
---
!!! [img[3.png]] Тревожные слова
<<<
Вы можете вплетать в свою речь магию, которая тревожит слушателя и заставляет его сомневаться в себе.
<<<
Бонусным действием вы можете потратить одно использование своего Вдохновения барда и выбрать одно видимое вами существа в пределах 12 м от вас. Совершите бросок Кости Вдохновения барда. Цель должна отнять выпавший результат из следующего спасброска, который она совершит до начала вашего следующего хода.
Существо не подвержено этому умению, если не может слышать вас, или обладает иммунитетом к очарованию.
---
!!! [img[6.png]] Неисчерпаемое вдохновение
<<<
Ваши вдохновляющие слова настолько убедительны, что другие не перестают ощущать тягу к успеху.
<<<
Когда другое существо использует вашу Кость Вдохновения барда, чтобы добавить результат к проверке характеристики, броску атаки или спасброску, и бросок проваливается, оно может сохранить использованную кость Вдохновения барда.
---
!!! [img[6.png]] Всеобщая речь
<<<
Вы научились делать свою речь понятной для любого существа.
<<<
Действием вы можете выбрать существ в пределах 12 м от вас, в количестве не превышающем ваш модификатор Харизмы (минимум 1). Выбранные существа могут в течении 1 часа магическим образом понимать ваши слова, независимо от известных ими языков.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых, только если не потратите ячейку заклинаний любого уровня, чтобы использовать его вновь.
---
!!! [img[14.png]] Заразительное вдохновение
<<<
Когда вы успешно кого-то вдохновляете, сила вашего красноречия может распространиться на кого-то ещё.
<<<
Когда существо в пределах 12 м от вас использует вашу Кость Вдохновения барда, чтобы добавить результат к проверке характеристики, броску атаки или спасброску, и бросок успешен, вы можете реакцией дать одну Кость Вдохновения барда другому слышущему вас существу (отличному от вас) в пределах 12 м от вас, не тратя использование Вдохновения барда.
Вы можете совершать эту реакцию количество раз не превышающее ваш модификатор Харизмы (минимум 1) и восстанавливаете все потраченные использования после завершения продолжительного отдыха.
Бардов Коллегии Мечей называют клинками, и они выступают на публике, выказывая свое мастерство обращения с оружием. Клинки выполняют такие трюки как шпагоглотание, метание и жонглирование кинжалами, и демонстрационные бои. Хоть они и используют свое оружие для развлечения, они хорошо натренированные и умелые бойцы.
Талант обращения с оружием вдохновляет многих клинков вести двойную жизнь. Клинок может использовать цирковую труппу, чтобы прикрывать такие гнусные дела как убийства, ограбления и шантаж. Другие клинки сражают злодеев, воздают по справедливости жестоким и могущественным. Многие труппы рады принять талант клинка ради зрелищности, которую он добавит представлению, но мало кто полностью доверяет клинку в своих рядах.
Клинки часто забрасывают жизнь артистов просто потому, что сталкиваются с неприятностями, после которых трудно скрыть их тайную деятельность. Клинок, пойманный на воровстве или в качестве мстителя – слишком большая обуза для большинства трупп. Со своими навыками обращения с оружием и магией, эти клинки либо работают силовиками на гильдии воров, либо начинают скитаться сами по себе как искатели приключений.
---
!!! [img[3.png]] Боевой стиль
Вы выбираете боевой стиль, соответствующий вашей специализации. Выберите один из следующих вариантов. Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль.
<<tabs "[tag[Боевой стиль барда мечей]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[3.png]] Дополнительные владения
Вы получаете владение средними доспехами и экзотическим лёгким и одноручным клинковым оружием.
Если вы владеете клинковым оружием, то можете использовать его в качестве фокусировки для ваших заклинаний барда.
---
!!! [img[3.png]] Цветение клинков
<<<
Вы демонстрируете впечатляющее боевое мастерство и проворство.
<<<
Когда вы совершаете действие Атака в свой ход, ваша скорость передвижения увеличивается на 2 м до конца хода, а если атака оружием, совершённая частью этого действия, попадает по существу, вы можете использовать один из следующих вариантов Цветения клинков на ваш выбор. Вы можете использовать это умение только один раз в ход.
//''Оборонительное цветение.''// Вы можете потратить одно свое Вдохновение барда, чтобы оружие нанесло дополнительный урон по цели. Урон равен числу, которое выпало при броске Кости Вдохновения барда. Вы также добавляете это число к своему КД до начала своего следующего хода.
//''Режущее цветение.''// Вы можете потратить одно свое Вдохновение барда, чтобы оружие нанесло дополнительный урон по цели и по любому другому существу по вашему выбору, которое вы можете видеть в 1 м от себя. Урон равен числу, которое выпало при броске Кости Вдохновения барда.
//''Мобильное цветение.''// Вы можете потратить одно свое Вдохновение барда, чтобы оружие нанесло дополнительный урон по цели. Урон равен числу, которое выпало при броске Кости Вдохновения барда. Вы также можете оттолкнуть цель до 2 м от себя. После этого вы незамедлительно можете использовать свою реакцию, чтобы переместиться на расстояние не превышающее вашу скорости, в незанятое пространство в 1 м от цели.
---
!!! [img[6.png]] Дополнительная атака
Если вы совершаете действие Атака, вы можете совершить две атаки вместо одной.
---
!!! [img[14.png]] Мастерское цветение
Если вы используете Цветение клинков, вы можете совершить бросок к6 и использовать его результат вместо траты Кости Вдохновения барда.
Коллегия Очарования открыта для тех бардов, чьё мастерство было взращено в красочном Царстве Фей или под руководством того, кто проживал там. Обученные сатирами, эладринами, и другими фейскими существами, эти барды учатся использовать свою магию, чтобы восхищать и очаровывать окружающих.
К бардам этой коллегии относятся со смесью благоговения и страха. Их выступления – легендарны. Барды этой коллегии настолько красноречивы, что одной их песни или речи может хватить, чтобы убедить похитителей отпустить барда нетронутым или успокоить разъяренного дракона. Но та же магия, что помогает им усмирять зверей, может и подчинять разумы людей. Недобрые барды этой коллегии могут неделями паразитировать на выбранном ими сообществе, используя свои чары, чтобы превратить гостеприимных хозяев в рабов своей воли. Героические барды этой коллегии вместо этого используют свою силу, чтобы радовать угнетенных и ослаблять диктаторов.
---
!!! [img[3.png]] Завораживающее выступление
<<<
Вы можете наполнить свое выступление притягательными чарами фей.
<<<
Если вы выступаете как минимум в течение 1 минуты, то можете попытаться вызвать изумление у публики своим пением, чтением стихотворения или танцем. В конце выступления выбранные вами гуманоиды в пределах 12 м от вас, которые смотрели или слушали всё выступление, в количестве не превышающем ваш модификатор Харизмы (минимум 1) должны преуспеть в спасброске Мудрости против вашей Сл заклинаний или будут [[очарованы|Очарованный]] вами.
[[Очарованные|Очарованный]] таким образом существа боготворят вас и говорят о вас крайне восторженно с любым заговорившим с ними. Они мешают вашим недругам, хотя при этом избегают насилия, если только к этому моменту уже и так не были настроены драться за вас.
Эффект на цели заканчивается через 1 час или если цель получает любой урон, вы атакуете её, или если она замечает, как вы атакуете или наносите урон кому-то из её союзников.
Если цель преуспеет в спасброске, то не ощущает того, что вы пытались ее очаровать.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[3.png]] Мантия вдохновения
<<<
Вступая в Коллегию Очарования, вы получаете возможность слагать песни, переплетённые с чарами фей, которые наполняют ваших союзников отвагой и проворством.
<<<
Бонусным действием вы можете потратить одно использование своего Вдохновения барда, чтобы придать себе поразительный внеземной облик. Когда вы делаете это, выберите союзников, которых вы можете видеть, и которые могут видеть вас в пределах 12 м от вас, в количестве не превышающем ваш модификатор Харизмы (минимум 1).
Каждая выбранная цель получает 5 временных хитов и может немедленно использовать свою реакцию, чтобы переместиться на расстояние, не превышающее её скорость, не провоцируя атак.
Количество временных хитов увеличивается, когда вы достигаете определенных уровней в этом классе, увеличиваясь до 8 на 5 уровне, 11 на 10 уровне и 14 на 15 уровне.
---
!!! [img[6.png]] Мантия величия
<<<
Вы получаете возможность укутаться в чары фей, заставляющие других хотеть служить вам.
<<<
Бонусным действием вы можете сотворить заклинание //приказ// без траты ячейки заклинания и принимаете облик неземной красоты на 1 минуту или пока не завершится ваша концентрация (как если бы вы концентрировались на заклинании). В течение этого времени вы можете сотворять заклинание //приказ// бонусным действием в каждый свой ход, не тратя ячейку заклинания.
Любое существо, [[очарованное|Очарованный]] вами, автоматически проваливает спасбросок против //приказа//, которое вы сотворяете с помощью этого умения
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[14.png]] Несокрушимое величие
Ваша внешность приобретает потусторонние черты, заставляя вас постоянно выглядеть диким и прекрасным.
Кроме того, бонусным действием вы можете принять магически величественный вид на 1 минуту или пока вы не станете [[недееспособны|Недееспособный]]. В течение этого времени, когда существо пытается атаковать вас в первый раз за ход, оно должно совершить спасбросок Харизмы против вашей Сл заклинаний. При провале оно не может атаковать вас в этот ход и должно выбрать новую цель для атаки, иначе атака будет потеряна. При успешном спасброске оно может атаковать вас в этот ход, но получает помеху на любые спасброски, которые будет совершать против ваших заклинаний в ваш следующий ход.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
Барды верят, что космос - это произведение искусства, творение первых драконов и богов. Это творение включало в себя мелодию, которая продолжает звучать в мире и по сей день, - силу, известную как Песнь Созидания. Барды Коллегии Созидания воспроизводят эту первозданную песню в танце, музыке и поэзии, а их учителя делятся следующим уроком: "До солнца и луны была Песнь, и ее музыка пробудила первый рассвет. Ее мелодии так восхитили камни и деревья, что некоторые из них обрели собственный голос. И теперь они тоже поют. Усвойте Песнь, ученики, и вы тоже сможете научить горы петь и танцевать".
Дварфы и гномы часто побуждают своих бардов стать учениками Песни Созидания. А среди драконорожденных Песнь Созидания считается почитаемой, ибо легенды изображают Бахамута и Тиамат - величайших из драконов - как двух первых исполнителей этой песни.
---
!!! [img[3.png]] Исполнение Созидания
Действием вы можете воспользоваться магией Песни Созидания, чтобы создать один немагический предмет на ваш выбору в незанятом пространстве в пределах 2 м от вас. Предмет должен появиться на поверхности или в жидкости, которая может его выдержать. Стоимость предмета в см не может превышать более чем в 20 раз ваш уровень барда, а сам предмет должен быть не больше Среднего размера. Предмет мягко мерцает, и при прикосновении к нему существо может услышать тихую музыку. Созданный предмет исчезает через количество часов, равное вашему бонусу мастерства.
Создав предмет с помощью этого умения, вы не сможете сделать это снова, пока не завершите продолжительный отдых, если только не потратите яейку заклинания 2 уровня или выше, чтобы использовать это умение повторно.
Одновременно вы можете создать только один предмет с помощью этого умения; если вы используете это умение и у вас уже есть предмет, созданный с помощью этого умения, первый предмет немедленно исчезает.
Размер предмета, который вы можете создать с помощью этого умения, увеличивается на одну размерную категорию при достижении 6 уровня (Большой) и 14 уровня (Огромный).
---
!!! [img[3.png]] Частица потенциала
Каждый раз, когда вы даёте существу Кость Вдохновения барда, вы можете изречь ноту из Песни Созидания, чтобы создать Крошечную частицу потенциала, которая кружится в пределах 1 м вокруг этого существа. Эта частица неосязаема и неуязвима, и существует до тех пор, пока не пропадёт кость Вдохновения барда. Частица выглядит как музыкальная нота, звезда, цветок или другой символ искусства или жизни, который вы выберете.
Когда существо использует кость Вдохновения барда, частица предоставляет дополнительный эффект в зависимости от того, используется ли кость при проверке характеристики, броске атаки или спасброске, как описано ниже:
//''Проверка характеристики. ''//Когда существо совершает бросок Кости Вдохновения барда, чтобы добавить его к проверке характеристики, оно может совершить бросок Кости Вдохновения барда еще раз и выбрать, какой результат использовать, в то время как частица на мгновение всплывает и испускает разноцветные, безвредные искры.
//''Бросок атаки.''// Когда существо совершает бросок Кости Вдохновения барда, чтобы добавить его к броску атаки против цели, соринка с грохотом разбивается. Цель и существа на ваш выбор, видимые вами в радиусе 1 м от цели, должны преуспеть в спасброске Телосложения против Сл спасбросков от ваших заклинаний барда или получить урон звуком, равный значению, выпавшему на Кости Вдохновения барда.
//''Спасбросок.''// Когда существо совершает бросок Кости Вдохновения барда, чтобы добавить его к спасброску, частица исчезает со звуками тихой музыки, а существо получает временные хиты в количестве, равном значению, выпавшему на Кости Вдохновения барда + ваш модификатор Харизмы (минимум 1).
---
!!! [img[6.png]] Оживляющее представление
Действием вы можете выбрать целью немагический предмет размером не больше Большого, который никто не несёт и не носит, видимый вами в пределах 6 м от вас, и оживить его. Оживлённый предмет использует блок характеристик "Танцующий предмет", который учитывает ваш бонус мастерства (БМ) для определения некоторых значений. Предмет дружелюбен к вам и вашим спутникам и подчиняется вашим командам. Он продолжает жить в течение 1 часа, пока его хиты не уменьшатся до 0, или пока вы не умрете.
В бою предмет совершает свой ход сразу после вашего. Он может перемещаться и совершать реакции самостоятельно, но действием может совершать только [[Уклонение]], если только вы своим бонусным действием не отдадите ему приказ совершить другое действие. Этим действием может как одно из действий, указанных в блоке характеристик предмета, так и любое другое [[действие|Действия]]. Если вы [[недееспособны|Недееспособный]], предмет может совершать любое действие по своему выбору.
Вы можете отдавать приказы предмету тем же бонусным действием, которое вы совершаете для Вдохновения барда.
Оживив предмет с помощью этого умения, вы не сможете сделать это снова, пока не завершите продолжительный отдых, если только не потратите яейку заклинания 3 уровня или выше, чтобы использовать это умение повторно.
Одновременно вы можете оживить только один предмет с помощью этого умения; если вы используете это умение и у вас уже есть предмет, оживлённый с помощью этого умения, первый предмет немедленно перестаёт быть оживлённым.
---
!!! [img[6.png]] Созидательное крещендо
Когда вы используете своё умение Исполнение Созидания, вы можете создать более одного предмета одновременно. Максимальное количество предметов равно вашему модификатору Харизмы (минимум 2). Если вы создаёте предмет, который превысит это число, вы выбираете, какой из ранее созданных предметов исчезнет. Только один из этих предметов может быть максимального размера, который вы можете создать; остальные должны быть Маленькими или Крошечными.
Вы больше не ограничены стоимостью при создании предметов с помощью Исполнения Созидания.
Многие рады приветствовать бардов в своём обществе, и представители Коллегии Шёпотов используют это в своих интересах. С виду они подобны всем прочим бардам: делятся новостями, поют песни и рассказывают истории своей аудитории. На самом же деле Коллегия Шёпотов учит своих учеников, что они должны быть подобны волкам среди овец. Эти барды используют свои знания и магию, чтобы раскрывать чужие тайны и оборачивать их против других через шантаж и угрозы.
Большинство прочих бардов ненавидят Коллегию Шёпотов, рассматривая их как паразитов, которые используют репутацию бардов, чтобы обрести богатство и власть. По этой причине барды этой коллегии редко раскрывают свою истинную природу. Как правило, они утверждают, что являются представителем какой-либо другой коллегии, или сохраняют свою истинную природу втайне с целью проникновения и эксплуатации королевских дворов и других властных структур.
---
!!! [img[3.png]] Психические клинки
<<<
При вступлении в Коллегию Шёпотов вы получаете возможность сделать своё оружием магически токсичной для разума существа.
<<<
Когда вы попадаете по существу атакой оружием, вы можете потратить одно Вдохновение Барда и нанести цели дополнительные 2к6 психического урона. Вы можете использовать эту способность один раз за раунд в свой ход.
Психический урон увеличивается, когда вы получаете определенный уровень в этом классе, увеличиваясь до 3к6 на 5 уровне, 5к6 на 10 уровне и 8к6 на 15 уровне.
---
!!! [img[3.png]] Слова ужаса
<<<
Вы научились наполнять кажущиеся безобидными слова коварной магией, которая вызывает ужас.
<<<
Если вы разговариваете с гуманоидом наедине, в течение по крайней мере 1 минуты, то можете попытаться посеять семя паранойи и страха в его разуме. В конце беседы цель должна преуспеть в спасброске Мудрости против вашей Сл заклинания или будет [[испугана|Испуганный]] вами или другим существом по вашему выбору.
Эффект на цели заканчивается через 1 час или если цель получает любой урон, или если она замечает, что её союзники атакованы или получают урон.
Если цель преуспеет в спасброске, то не ощущает того, что вы пытались ее испугать.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[6.png]] Мантия шёпотов
<<<
Вы получаете возможность перенимать личность гуманоида.
<<<
Когда гуманоид умирает в пределах 6 м от вас, вы реакцией можете магическим образом поймать его тень. Вы удерживаете эту тень, пока не завершите короткий или продолжительный отдых.
Действием вы можете использовать тень. Когда вы это делаете, она исчезает, магически превращаясь в маскировку, которая появляется на вас. Теперь вы выглядите как этот мертвый гуманоид, но кажетесь живым и здоровым. Маскировка длится 1 час или пока вы не окончите её бонусным действием.
Находясь под этой маскировкой вы получаете доступ ко всей информации, которой это существо могло бы свободно поделиться со случайным знакомым. Эта информация включает в себя общие данные о его биографии и личной жизни, но не его секреты. Этой информации достаточно для того, чтобы вы смогли выдать себя за эту личность, используя его воспоминания.
Другие существа могут обнаружить вашу истинную сущность, совершив проверку Мудрости (Проницательность) против вашей проверки Харизмы (Обман), вы получаете бонус +5 к своей проверке.
Когда вы ловите тень этим умением, вы не можете поймать другую тень, пока не завершите короткий или продолжительный отдых.
---
!!! [img[14.png]] Знание тени
<<<
Вы получаете способность вплетать в свою речь тёмную магию и дергать за ниточки самых глубоких страхов существа.
<<<
Действием, вы магическим образом нашёптываете фразу, которую слышит только одно существо по вашему выбору в пределах 6 м от вас. Цель должна совершить спасбросок Мудрости против вашей Сл заклинания. Цель автоматически преуспевает в броске, если она не разговаривает с вами хотя бы на одном общем языке, или не может слышать вас. В случае успешной проверки, ваш шёпот звучит как неразборчивое бормотание и не имеет никакого эффекта.
Если цель проваливает спасбросок, то она [[очарована|Очарованный]] вами на следующие 8 часов или пока вы или ваши союзники не атакуют ее или не причинят ей урон.
Цель интерпретирует шёпот как описание самого страшного её секрета. Хотя вы не узнаете этой тайны, цель убеждена в том, что вы знаете её. [[Очарованное|Очарованный]] таким образом существо подчиняется вашим командам из страха, что вы раскроете его тайну. Оно не будет рисковать своей жизнью ради вас или сражаться за вас, если уже не было склонно делать это. Оно оказывает вам услуги и преподности подарки, которые могло бы предложить близкому другу.
Когда эффект заканчивается, существо не осознаёт, почему настолько вас боялось.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Вы концентрируете свою деятельность на людях, влиянии на них и их секретах. Многие шпионы, придворные и заговорщики следуют этому архетипу, ведя жизнь, полную интриг. Слова служат вам оружием также часто, как ножи и яды, а секреты и привелегии – ваши ценнейшие сокровища.
---
!!! [img[3.png]] Интриган
Вы получаете владение [[набором для грима|Набор для грима]], [[набором для фальсификации|Набор для фальсификации]] и одним [[игровым набором|Игровой набор]] на ваш выбор. Вы также можете говорить, читать и писать на двух языках на ваш выбор.
Кроме того, вы можете безошибочно подражать манере речи и акценту существа, речь которого вы слышали не менее 1 минуты, что позволяет вам выдавать себя за носителя языка из определённой области, если вы знаете этот язык.
---
!!! [img[3.png]] Мастер тактики
Вы можете совершать действие [[Помощь]] бонусным действием. Когда вы совершаете действие [[Помощь]], чтобы помочь союзнику атаковать существо, цель этой атаки может быть в пределах 6 м от вас, а не в 1 м, если цель может видеть или слышать вас.
---
!!! [img[9.png]] Проницательный манипулятор
Если вы потратили как минимум 1 минуту, наблюдая или взаимодействуя с другим существом вне боя, вы можете узнать некоторую информацию о его возможностях по сравнению с вашими собственными. Мастер сообщает вам, является ли это существо равным вам, превосходящим или уступающим по двум из следующих характеристик по вашему выбору:
* значение Интеллекта
* значение Мудрости
* значение Харизмы
* общее количество уровней в классах (если таковые имеются)
По усмотрению Мастера, вы также можете раскрыть для себя часть истории существа или одну из его черт характера, если таковые имеются.
---
!!! [img[13.png]] Уловка
<<<
Вы можете иногда заставить другое существо подставиться под атаку, предназначенную вам.
<<<
Когда по вам совершают атаку, и в пределах 1 м от вас есть существо, являющееся для вас укрытием от этой атаки, вы можете реакцией сделать целью этой атаки это существо.
---
!!! [img[17.png]] Коварная душа
Ваши мысли нельзя прочитать телепатией или другими средствами без вашего позволения. Вы можете предоставить ложные мысли, если преуспете в проверке Харизмы (Обман) против проверки Мудрости (Проницательность) читающего мысли.
Кроме того, независимо от того, что вы говорите, магия, которая могла бы определящая ложь, показывает, что вы честны, если вы этого хотите, и вы не можете быть принуждены говорить правду с помощью магии.
Комфортное существование означает, что вы можете позволить себе хорошую одежду и поддерживаете своё снаряжение в хорошем состоянии. Вы живёте в небольшом домике с соседями среднего класса или в личной комнате на хорошем постоялом дворе. Вы ведёте дела с купцами, опытными торговцами и военными офицерами.
[img width=220 class="centerme" [https://i.imgur.com/JmeNuzU.png]]
Коренастые полурослики выносливее других и обладают некоторой устойчивостью к ядам. Поговаривают, что в их жилах течёт толика дварфской крови. В мире Забытых Королевств таких полуросликов зовут сильными сердцем, и чаще всего они встречаются на юге.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 1. |
|^Второй завтрак |^Вы владеете инструментами повара. Вы добавляете удвоенный бонус мастерства вместо обычного к проверкам, связанным с приготовлением пищи. |
|^Выносливость коренастых |^Вы владеете навыком Выносливость. |
|^Устойчивость коренастых |^Вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом. |
Короткий отдых - это привал продолжительностью не менее 1 часа, в течении которого персонажи останавливаются, чтобы поесть, попить, обработать раны или заняться другой ненапряжённой деятельностью. Более сложные задачи могут потребовать разбивки лагеря или продолжительного отдыха. Вы не можете получить преимущества более чем от одного короткого отдыха в сутки. Во время короткого отдыха вы можете:
* Потратить одну или несколько Костей Хитов.
* Утолить жажду и/или голод.
* Облегчить действие яда или излечить болезнь набором травника.
* Облегчить боль комплектом целителя или набором травника.
* Восстановить расовые или классовые умения. Сверьтесь со своим листом персонажа, чтобы определить, какие особенности или умения вы восстанавливаете по окончанию короткого отдыха.
* Читать, изучать или исследовать что-то в пределах досягаемости, например, зашифрованную книгу, необычную резьбу на монолите или неопознанный магический предмет.
* Опознать один магический предмет.
* Настроиться на один магический предмет.
Вы родились в кочевом племени. Вы путешествовали с места на место, живя за счет земли вместе со своими соплеменниками.
* ''Владение навыками:'' Природа, Уход за животными
* ''Владение инструментами:'' [[Набор травника|Набор травника]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Набор травника, небольшое украшение, характерное для вашего племени, охотничий капкан, комплект одежды селянина и кошель с 5 см
!!!Умение: В дикой природе как дома
Дикая природа - это ваш дом, и вам удобно в нем обитать. Вы можете найти место, где можно спрятаться, отдохнуть или восстановить силы, находясь в дикой природе. Это место отдыха достаточно надежно, чтобы скрыть вас от большинства естественных угроз. Угрозы сверхъестественные, магические или активно ищущие вас, всё ещё могут сделать это, но с трудом, в зависимости от характера угрозы (на усмотрение Мастера). Однако эта способность не защищает и не скрывает вас от заклинаний, ментального поиска или угроз, которым не обязательно использовать пять органов чувств для того, чтобы выследить вас.
!!!Персонализация
Кочевники посещают цивилизацию только в случае необходимости. Вы общительны внутри своего племени и с племенами других кочевников. Однако другие сообщества обычно либо заставляют вас насторожиться, либо вызывают недоумение. Может быть, именно это замешательство побудило вас отправиться на поиски приключений? С другой стороны, вы яростно защищаете свое племя и преданы ему. Возможно, именно эта преданность заставила вас отправиться в путешествие - по собственной воле или по приказу вождей вашего племени.
| !к8 |!Черта характера |
| 1 |Я охотно окунаюсь в неизвестность. |
| 2 |Деревни, поселки и города мне не подходят. Я предпочитаю в любой день оказаться в дикой местности. |
| 3 |Я выполняю свои задачи эффективно, используя как можно меньше ресурсов. |
| 4 |Мне трудно долго оставаться на одном месте. |
| 5 |Я громко хвастаюсь своим племенем при каждом удобном случае. |
| 6 |Я бесстрашен перед лицом диких существ.|
| 7 |Я тихий и сдержанный, но наблюдательный. Ничто не ускользает от моего внимания. |
| 8 |Мое слово - моя опора. Я доведу обещание до конца, даже если оно противоречит моим убеждениям. |
| !к6 |!Идеал |
| 1 |''Родство. ''Семья - самое важное в жизни. Пусть я нахожусь далеко от своих родных, но семейные узы должны быть защищены и в жизни других людей |
| 2 |''Сохранение. ''Природа не должна подвергаться разрушению со стороны наступающей цивилизации. |
| 3 |''Жажда странствий. ''Человек должен расширять свои горизонты, познавая мир и исследуя его. |
| 4 |''Изоляция.'' Мое племя и его пути должны быть защищены и ограждены от внешнего влияния. |
| 5 |''Защита. ''Угрозы земле и людям должны быть устранены любой ценой. |
| 6 |''Принадлежность. ''У всех существ есть свое место в мире, поэтому я стремлюсь помочь другим найти свое. |
| !к6 |!Привязанность |
| 1 |Я очень хочу вернуться к своему племени и семье, которую покинул, но не могу, пока мои обязательства не будут выполнены. |
| 2 |Захватчики, вторгшиеся на мою родину, украли одного из людей моего племени. Я не буду знать покоя, пока не найду его. |
| 3 |Присутствие опасной твари на моей родине уничтожило ценную территорию и привело к смертям в моем племени. Это существо должно заплатить за то, что оно сделало. |
| 4 |Я ношу с собой безделушку, которая духовно и эмоционально связывает меня с моим народом и моим домом. |
| 5 |Во время скитаний моего племени я обнаружил в холмах странную реликвию. Я должен узнать, что это такое. |
| 6 |Один из кланов другой расы одарил меня знаком родства. |
| !к6 |!Слабость |
| 1 |Я втягиваю себя и своих друзей в различный ситуации, редко задумываясь о последствиях. |
| 2 |Незнакомые люди и окружение действуют мне на нервы. |
| 3 |Я совершенно не терплю тугодумов и тех, кто проявляет нерешительность. |
| 4 |Желание испытать что-то новое заставляет меня делать небезопасный выбор. |
| 5 |Я слишком бережно отношусь к природе, иногда в ущерб своим спутникам и себе. |
| 6 |Отсутствие житейской жилки часто становится моей слабостью в социальных, коммерческих и недружественных ситуациях. |
!!!Краткое описание процесса создания предметов
* ''Выберите предмет.'' Найдите предмет, который вы хотите изготовить, в [[соответствующей таблице|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit?usp=sharing]]
* ''Сверьтесь с Мастером.'' Он подтвердит, существует ли этот предмет и какова его редкость в его игре.
* ''Соберите [[материалы|Материалы]].'' Материалы могут быть найдены у гуманоидов, собраны у более экзотических существ, куплены в магазинах или собраны в дикой природе. Подробности о любом материале и о том, где его можно найти, описаны в разделе [[Материалы]].
* [[Начинайте работать!|Процесс создания предметов]] В таблице ниже вы можете найти соответствующий инструмент и характеристику. Используйте их, чтобы определить ваш модификатор ремесла по следующей формуле:
```
Модификатор ремесла = бонус мастерства соответствующего инструмента + модификатор соответствующей характеристики
```
** Вы можете совершать прогресс в ремесле с шагом в 8 часов (1 день). За каждые потраченные 8 часов (1 день) совершайте проверку ремесла по формуле выше и сравнивайте результат со Сл, указанной для предмета.
** При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
** При успехе достигается 8 часов прогресса, и вы можете либо отложить его на потом, либо продолжить ремесло.
** Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
<<<
//При использовании стандартных 8-часовых продолжительных отдыхов, уменьшите длину шага с 8 до 2 часов.//
<<<
* ''Вы закончили!'' Наслаждайтесь своим новым великолепным предметом!
''Особые напоминания: ''
* Вы можете "[[взять 10|Процесс создания предметов]]" на проверку ремесла, удвоив время изготовления.
* Окончательное решение по любому предмету и его рецепту остается за вашим Мастером.
* Не бойтесь спрашивать, где вы можете найти материалы - Мастер хочет, чтобы вы взаимодействовали с миром и находили вещи!
* Проверка ремесла - это особый вид проверки. Вы не можете применить к проверке ремесла другие бонусы, кроме бонуса мастерства. Как правило, единственный способ, кроме бонуса мастерства, усилить проверку ремесла - это обратиться за помощью к другому опытному ремесленнику.
---
!!!Соответствующие инструменты и характеристики
|!Ремесло | !Инструмент | !Характеристика|
| //Основные виды ремесла// |<|<|
|[[Алхимия]] | [[Инструменты алхимика]] | Интеллект или Мудрость|
|[[Вырезание палочек]] | [[Инструменты резчика по дереву]] | Ловкость|
|[[Зачаровывание]] | Магия | Интеллект|
|[[Инженерное дело]] | [[Инструменты плотника]] | Интеллект|
|[[Кожевенное дело]] | [[Инструменты кожевника]] | Ловкость|
|[[Кузнечное дело]] | [[Инструменты кузнеца]] | Сила|
|[[Кулинария]] | [[Инструменты повара]] | Мудрость|
|[[Начертание свитков]] | [[Инструменты каллиграфа]] | Интеллект|
|[[Резьба по дереву]] | [[Инструменты резчика по дереву]] | Ловкость|
|[[Ремонтное дело]] | [[Инструменты ремонтника]] | Интеллект|
|[[Рунное дело]] | Разное | Интеллект или Мудрость|
|[[Ядоварение]] | [[Инструменты отравителя]] | Интеллект или Мудрость|
| //Второстепенные виды ремесла// |<|<|
|[[Живопись]] | [[Инструменты художника]] | Мудрость|
|[[Пивоварение]] | [[Инструменты пивовара]] | Мудрость|
|[[Портняжное дело]] | [[Инструменты ткача]] | Ловкость|
|[[Работа с камнем]] | [[Инструменты каменщика]] | Сила|
|[[Сапожное дело]] | [[Инструменты сапожника]] | Ловкость|
|[[Стеклоделие]] | [[Инструменты стеклодува]] | Ловкость|
|[[Столярное дело]] | [[Инструменты плотника]] | Ловкость|
|[[Ткачество]] | [[Инструменты ткача]] | Ловкость|
|[[Ювелирное дело]] | [[Инструменты ювелира]] | Ловкость|
---
!!!Цена предметов по умолчанию
|!Редкость | !Цена расходуемого предмета| !Цена предмета|
|Обычный | 25-50 см| 50-100 см|
|Необычный | 50-250 см| 100-500 см|
|Редкий | 250-2500 см| 500-5000 см|
|Очень редкий | 2500-25000 см| 5000-50000 см|
|Легендарный | 25000+ см| 50000+ см|
<<<
Winter freezes flesh and scours the earth with icy winds that shriek through hedgerows and mountain passes alike. I can't think of anything more poetic.
— Azshalla, First Cryomancer of the North Wind
<<<
In the frozen wastes, and in the frost-blasted fields of winter, you feel at home. You find the cold, harsh conditions hospitable, even comforting. You can pull winter storms from across the world, or even from the Elemental Chaos, and use them to ruin your enemies. When you attack, your body is covered with ice crystals, and your skin pales. Your spells fill the air around you with blowing snow or hail, and powerful winds whip up.
The blizzard is your best friend and your most ferocious servitor. With its aid, you move creatures about inside killing blasts and knock them down with freezing vortexes of driving snow and ice.
Is it any wonder that your heart has grown cold, too? It is up to you whether your nature grows more and more aloof like the bleak season you embody, or whether your heart yet shelters a warm hearth for those you name friend.
''Cryomancers in the World:'' Cryomancers usually hail from lands of cold, snow, and ice: tundra, glaciers, even outer planes perpetually shrouded in winter. Others become obsessed with the power of glacial cold and focus all their energy into discovering the mysteries of the frostfell and its magic. All cryomancers, however, eventually become adapted to cold environments as their skin slowly turns to frost. They learn to take advantage of the natural or magically enhanced frostfell environment, harnessing the existing cold to further empower their own spells.
As members of this prestige path must have the ability to cast arcane spells, cryomancers come from a narrow group, usually bards, sorcerers, and wizards. Some cryomancer sorcerers believe silver dragon blood runs in their veins, while others feel they possess an innate talent for works of cold and ice magic. Most wizards who become cryomancers see the frostfell as a mysterious and undiscovered frontier of arcane power, one from which they can draw strong magic for their own purposes.
As NPCs, cryomancers live and study in complexes of ice caverns, towers constructed in frozen reaches of the outer planes, or within dungeons they have magically altered into frostfell environments. Sometimes they serve more powerful evil characters singly or in a group, such as frost giants, cryohydras, or deities of cold or ice. More often, the evil cryomancer commands their own forces of ice and cold, growing a frostfell army as they prepare to bring about a new ice age and become overlord of a frozen world.
<<<
''Frostfell ''
Cold, slush, snow, ice. A frostfell environment includes one of these elements, a combination of two or more, or all four… which might lead you to believe that the term “frostfell” refers only to those polar regions far from the centers of civilization, where frozen fields of ever-winter dominate the landscape.
But you would be wrong.
The term “frostfell” refers to any area—no matter how small (a single chamber within a dungeon) or how large (an entire plane)—dominated by a combination of ice, snow, and extreme cold, much like “the underdark” references an endless variety of regions found deep underground. The conditions, hazards, and effects of these frigid zones vary in type and severity, depending upon the specific cause and location of the given frostfell, and therefore, the possibilities are limitless.
<<<
---
!!Криомант
| !Ранг |!Умения |
| !1 |Icy Inspiration, Walk through Winter, Winter's Clutch |
| !2 |Cloak of Freezing Wind |
| !3 |Permafrost Armor |
| !4 |Blizzard |
---
!!!Предварительные условия:
* ''Заклинания.'' Способность сотворять хотя бы одно заклинание из списков заклинаний Барда, Волшебника, Колдуна или Чародея.
* ''Особое.'' Must have survived at least 24 hours in a frostfell environment unprotected.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Icy Inspiration
When you spend an inspiration to gain advantage on an attack roll, each creature you hit or missed with the attack has its speed reduced by 10 feet for 1 minute. The target can make a Strength saving throw at the end of each of its turns, ending the effect on itself on a success.
!!!Walk through Winter
Your speed cannot be reduced below 5 feet, even while grappled or restrained. You can use this to automatically escape from a grapple if you move out of the creature's reach, though you provoke opportunity attacks as normal. You also ignore difficult terrain related to ice and snow.
!!!Winter's Clutch
<<<
Your hand is coated in frost as you sweep it in front of you, encasing nearby creatures in chilling wind and sheets of ice.
<<<
//Arcane Incantation (Recharges on a short or long rest)//
As an action, choose one creature you can see within 100 feet of you. The target must succeed on a Dexterity saving throw or take 2d10 cold damage. Also on a failed save, you can move the target up to 5 feet, and it is restrained until the end of your next turn.
Additionally, you can move each ally within 100 feet of you up to 10 feet.
This incantation's cold damage increases when you reach 5th level (3d10), 11th level (5d10), and 17th level (8d10).
---
!!Ранг 2
!!!Cloak of Freezing Wind
<<<
The icy chill of winter surrounds you as cold, whipping wind protects you from attacks.
<<<
//Arcane Incantation (Recharges on a long rest)//
As a bonus action, you activate a cloak of cold on yourself. For 1 minute, each creature that hits you with a melee attack takes 2d4 cold damage, and you can push that creature up 15 feet (no action required).
You must concentrate on this incantation as if concentrating on a spell.
This incantation's cold damage increases when you reach 5th level (2d6), 11th level (2d8), and 17th level (2d12).
---
!!Ранг 3
!!!Permafrost Armor
<<<
Your body becomes more like the ice you venerate. Your skin turns white and colder to the touch as the permanent layer of frost grows deeper.
<<<
You gain a bonus to your AC equal to half your ranks in Cryomancer rounded up. You suffer no ill effects from cold environments. In warm temperatures, the frost continually evaporates and replenishes itself, enshrouding the cryomancer in a wispy vapor.
---
!!Ранг 4
!!!Blizzard
<<<
A chaotic wind swirl bursts out from you, buffeting everyone nearby with wind and ice.
<<<
//Arcane Incantation (Recharges on a long rest)//
As an action, choose any number of creatures you can see within 50 feet of you. Each target must succeed on a Dexterity saving throw or take 2d6 cold damage and be knocked prone.
Additionally, each ally you can see within 50 feet of you gains resistance to cold damage for 1 minute. You are also surrounded by freezing wind and snow. At the start of each of your turns, each creature of your choice within 50 feet of you takes 2d4 cold damage, and you can move it up to 10 feet (no action required).
You must concentrate on this incantation as if concentrating on a spell.
This incantation's initial damage increases when you reach 5th level (4d6), 11th level (5d6), and 17th level (8d6).
This incantation's secondary damage increases when you reach 5th level (2d6), 11th level (2d8), and 17th level (2d12).
[img width=330 class="centerme" [https://i.imgur.com/CbqruCU.png]]
<<tabs "[[Описание кровавых охотников]] [[Классовые умения кровавых охотников]] [[Ордены кровавых охотников]]" "" "$:/state/tab1">>
Друиды Круга Дикого огня понимают, что разрушение иногда является предшественником созидания, например, когда лесной пожар способствует последующему росту. Эти друиды связаны с первобытным духом, который питает как разрушительную, так и созидательную силу, позволяя друидам создавать контролируемое пламя, которое сжигает одно, но дает жизнь другому.
---
!!! [img[2.png]] Заклинания круга
Вы установили мистическую связь с духом дикого огня — первобытным существом созидания и разрушения. Ваша связь с этим духом даёт вам доступ к некоторым заклинаниям, когда вы достигаете определённых уровней в этом классе, как показано в таблице ниже.
Как только вы получили доступ к любому из этих заклинаний, оно считается подготовленным и не учитывается в общем количестве заклинаний, которые вы можете подготовить. Если вы получаете доступ к заклинанию, которого нет в списке заклинаний друида, оно считается для вас заклинанием друида.
| !УД |!Заклинания |
| !2 |//лечение ран//, //огненные ладони// |
| !3 |//палящий луч//, //пылающий шар// |
| !5 |//возрождение//, //рост растений// |
| !7 |//аура жизни//, //огненный щит// |
| !9 |//множественное лечение ран//, //небесный огонь// |
//УД - Уровень друида//
---
!!! [img[2.png]] Призыв Духа дикого огня
<<<
Вы способны призвать первобытного духа, связанного с вашей душой.
<<<
Действием вы можете потратить одно из ваших использований Дикого облика, чтобы призвать первобытного духа вместо принятия животной формы.
Дух появляется в незанятом пространстве, которое вы можете видеть в пределах 6 м от вас. В момент появления духа каждое существо в пределах 2 м от него (кроме вас) должно преуспеть в спасброске Ловкости против Сл ваших заклинаний, иначе получит 2к6 урона огнём.
Дух дружелюбен к вам и вашим союзникам, а также повинуется вашим командам. Блок характеристик духа использует ваш бонус мастерства для определения некоторых значений. Вы сами определяете внешний вид духа. Некоторые духи выглядят как гуманоидная фигура из переплетенных сучков, окутанных пламенем, а другие похожи на зверей, объятых огнём.
Во время сражения дух имеет такую же инициативу, как и вы, и ходит сразу же после вас. Он может перемещаться и совершать реакции самостоятельно, но действием может совершать только [[Уклонение]], если только вы своим бонусным действием не отдадите ему приказ совершить другое действие. Этим действием может как одно из действий, указанных в блоке характеристик духа, так и любое другое [[действие|Действия]]. Если вы [[недееспособны|Недееспособный]], дух может совершать любое действие по своему выбору.
Дух дикого огня исчезает по истечении 1 часа, когда его хиты уменьшаются до 0, когда вы используете Дикий облик подобным образом повторно, либо когда вы умираете.
---
!!! [img[6.png]] Усиленная связь
<<<
Связь с первобытным духом усиливает ваши разрушающие и восстанавливающие заклинания.
<<<
Каждый раз, когда вы используете заклинание, наносящее урон огнём или восстанавливающее хиты, и при этом призван ваш дух дикого огня, совершите бросок к8 и прибавьте выпавшее значение в качестве бонуса к одному из бросков урона или восстановления заклинанием.
Кроме того, когда вы сотворения заклинание с дистанцией, отличной от «на себя», центром сотворения этого заклинания можете выступать либо вы, либо дух дикого огня.
---
!!! [img[10.png]] Прижигающее пламя
<<<
Вы получаете способность обращать смерть в магическое пламя, способное как исцелять, так и сжигать.
<<<
Когда в пределах 6 м от вас или вашего духа умирает существо размером не меньше Маленького, в пространстве мёртвого существа возникает безвредное пламя и мерцает там в течение 1 минуты. Когда существо, которое вы можете видеть, входит в пространство этого пламени, вы можете реакцией погасить призрачный огонёк, после чего вы восстанавливаете вошедшему существу хиты в размере 2к10 + ваш модификатор Мудрости или наносите ему урон огнём в том же количестве.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[14.png]] Огненное возрождение
<<<
Связь с вашим духом дикого огня способна спасти вас от смерти.
<<<
Если дух дикого огня находится в 24 м от вас в момент, когда ваши хиты уменьшаются до 0 и вы теряете сознание, вы можете опустить хиты духа до 0, после чего вы восстанавливаете половину своих хитов и мгновенно поднимаетесь на ноги.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Круг Звёзд позволяет друидам черпать силу звёздного света. Испокон веков они отслеживали движение небесных тел, раскрывая тайны, сокрытые в созвездиях. Открывая и познавая эти секреты, друиды Круга Звёзд стремятся обуздать силы космоса.
Многие друиды этого круга ведут учёт звёзд, а также их влияние на мир. Некоторые записывают свои наблюдения на огромных каменных пластинах, служащих в качестве загадочных библиотек знаний. Эти хранилища могут иметь форму каменных кругов, пирамид, петроглифов и подземных храмов. Для подобного хранилища подойдёт любое прочное здание, способное защитить знания друидов даже перед лицом ужасающих катаклизмов.
---
!!! [img[2.png]] Звёздная карта
<<<
Занимаясь изучением небес, вы создали звёздную карту.
<<<
Эта карта является Крошечным объектом и может быть использована в качестве заклинательной фокусировки для ваших заклинаний друида. Вы можете сами решить, как будет выглядеть этот объект, или можете совершить бросок по таблице ниже.
| !к6 |!Вид карты |
| 1 |Свиток, покрытый изображениями созвездий |
| 2 |Каменная табличка с просверленными в ней небольшими отверстиями |
| 3 |Пятнистая шкура совомеда, украшенная рельефными метками |
| 4 |Атлас в обложке из чёрного дерева |
| 5 |Кристалл, способный проецировать образы созвездий при попадании света на его грани |
| 6 |Стеклянные диски с изображением созвездий |
Держа эту карту, вы получаете следующие преимущества:
* Вам известен заговор //указание//.
* Вы подготавливаете заклинание //направленный снаряд//. Для вас оно считается заклинанием друида. Оно всегда считается подготовленным и не учитывается при подсчёте количества заклинаний, которые можно подготовить.
* Вы можете сотворять //направленный снаряд// без использования ячеек заклинаний. Вы можете делать это количество раз, равное вашему бонусу мастерства, и восстанавливаете все потраченные использования после завершения продолжительного отдыха.
Если вы потеряете свою звёздную карту, то вы можете провести ритуал длительностью 1 час, чтобы сделать новую. Эта церемония может быть проведена в течение короткого или продолжительного отдыха, а старая карта уничтожается после создания новой.
---
!!! [img[2.png]] Звёздная форма
Бонусным действием вы можете использовать умение Дикий облик, чтобы принять звёздную форму, а не облик зверя.
Находясь в звёздной форме, вы сохраняете все свои игровые показатели, однако ваше тело становится светящимся: ваши суставы мерцают как звёзды, а светящиеся линии соединяют их подобно изображениям на звёздных картах. Эта форма излучает яркий свет в радиусе 2 м и тусклый свет в радиусе еще 2 м. Эта форма активна в течение 10 минут. Она заканчивается раньше, если вы становитесь [[недееспособны|Недееспособный]], умираете или повторно её используете.
Каждый раз, когда вы принимаете звёздную форму, выберите одно из указанных ниже созвездий, которое будет мерцать на вашем теле. Ваш выбор определяет преимущества, пока вы находитесь в звёздной форме:
//''Лучник.''// На вас проявляется созвездие лучника. Когда вы активируете эту форму, а также бонусным действием в последующие ходы вы можете совершенить дальнобойную атаку заклинанием, направляя светящиеся стрелы в цель, находящуюся в пределах 12 м от вас. При попадании цель получает урон излучением в количестве, равном 1к8 + ваш модификатор Мудрости.
//''Чаша.''// На вас проявляется созвездие животворящего кубка. Когда вы накладываете заклинание, которое тратит ячейку заклинания и восстанавливает хиты существа, вы или другое существо в пределах 6 от вас можете восстановить хиты в количестве, равном 1к8 + ваш модификатор Мудрости.
//''Дракон.''// На вас проявляется созвездие мудрого дракона. Когда вы совершаете проверку Интеллекта или Мудрости, а также когда вы совершаете спасбросок Телосложения для поддержания концентрации на заклинании, вы можете при выпадении на к20 результата «1–9» считать, что выпало «10».
---
!!! [img[6.png]] Космическое знамение
Когда вы завершаете продолжительный отдых, вы можете обратиться к своей карте за знамениями. Когда вы делаете это, бросьте кость. Пока вы не завершите свой следующий продолжительный отдых, вы получаете возможность использовать дополнительную реакцию в зависимости от выпавшего на кости значения (чётного или нечётного):
//''Благо (чётное).''// Когда существо, которое вы можете видеть в пределах 6 м от вас, совершает бросок атаки, проверку характеристики или спасбросок, вы можете реакцией бросить к6 и добавить выпавшее число к результату броска этого существа.
//''Горе (нечётное).''// Когда существо, которое вы можете видеть в пределах 6 м от вас, совершает бросок атаки, проверку характеристики или спасбросок, вы можете реакцией бросить к6 и вычесть выпавшее число из результата броска этого существа.
Вы можете использовать эту реакцию количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Мерцающие созвездия
Созвездия вашей Звёздной формы улучшаются. 1к8 «лучника» и «кубка» увеличиваются до 2к8, и пока «дракон» активен, вы получаете скорость полёта 4 м и можете парить.
Кроме того, в начале каждого вашего хода, пока вы находитесь в своей Звёздной форме, вы можете менять созвездия, мерцающие на вашем теле.
---
!!! [img[14.png]] Состоящий из звёзд
Пока ваша Звёздная форма активна, вы становитесь частично бестелесным, получая сопротивление дробящему, колющему и рубящему урону.
Круг Земли состоит из мистиков и мудрецов, поколениями передающих из уст в уста сложную систему древних знаний и обрядов. Эти друиды проводят собрания в священных кольцах деревьев или мегалитов, где на тайном друидическом языке звучат секреты самого мироздания. Мудрейшие представители круга служат духовными лидерами и советниками вождей в общинах, придерживающихся Старой Веры. Причастность к Кругу Земли наделяет магию друида силой тех мест, где персонажа посвятили в священные таинства.
---
!!! [img[2.png]] Заклинания круга
Ваша мистическая связь с землёй даёт вам доступ к некоторым заклинаниям, когда вы достигаете определённых уровней в этом классе. Выберите эту землю - болото, гору, лес, луг, побережье, Подземье, пустыню или тундру - и обратитесь к соответствующей таблице ниже.
Как только вы получили доступ к любому из этих заклинаний, оно считается подготовленным и не учитывается в общем количестве заклинаний, которые вы можете подготовить. Если вы получаете доступ к заклинанию, которого нет в списке заклинаний друида, оно считается для вас заклинанием друида.
<<tabs "[tag[Заклинания круга]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[2.png]] Дополнительный заговор
Вы изучаете один заговор из списка заклинаний друида на ваш выбор. Этот заговор не учитывается в общее количество известных вам заговоров.
---
!!! [img[2.png]] Естественное восстановление
<<<
Единение с природой через медитацию позволяет вам частично восстановливать свою магическую энергию.
<<<
После завершения короткого отдыха или ночлега, вы можете восстановить часть использованных ячеек заклинаний. Ячейки заклинаний могут иметь суммарный уровень, который не превышает половину вашего уровня друида (округляя вверх), и ни одна из ячеек не может быть шестого уровня или выше.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[6.png]] Тропами земли
Перемещение по немагической труднопроходимой местности не стоит вам дополнительного перемещения. Вы не получаете урона от шипов, колючек и прочих подобных угроз от немагических растений.
Кроме того, вы совершаете с преимуществом спасброски от растений, которые магическим образом препятствуют движению, например, созданных заклинанием //опутывание//.
---
!!! [img[10.png]] Покровительство природы
Вы не можете быть [[очарованы|Очарованный]] или [[испуганы|Испуганный]] феями и элементалями. Вы также получаете иммунитет к болезням и ядам.
---
!!! [img[14.png]] Природное убежище
<<<
Природные создания начинают чувствовать вашу тесную связь с естественным миром и не решаются нападать на вас.
<<<
Когда зверь или растение атакует вас, это существо должно совершить спасбросок Мудрости против Сл спасбросков от ваших заклинаний друида. В случае провала существо должно выбрать новаую цель, или его атака автоматически промахнётся. В случае успеха существо получает иммунитет к эффекту этого умения на 24 часа.
Существо знает об этом эффекте еще до попытки атаковать вас.
Друиды часто считаются хранителями природного порядка и имеют глубокую связь с обитателями природы. Иногда эта связь становится чудовищно порочной. Друид этого круга обнаруживает, что его разум опутали ужасы потустороннего мира, его естественная связь с природой и ее зверями искажается темными снами.
Друидов этого круга могут преследовать ужасы, которые они видят, но многие просто находят свой разум невосприимчивым к жуткому (возможно, благодаря прикосновению безумия). Некоторые даже относятся к извращенным мерзостям с той же осторожностью, с какой другие друиды относятся к злобным и диким животным, воспринимая их с прагматичным пониманием и сочувствием.
Иногда их связь даже кажется взаимной.
Ниже перечислены некоторые опциональные причуды для друида Круга Кошмаров. Вы можете самостоятельно выбрать причуду для вашего персонажа или определить её случайным образом по таблице.
| !к6 |!Причуда |
| 1 |Иногда вы просыпаетесь с другими чертами лица. |
| 2 |Вы давно забыли, как выглядели изначально. |
| 3 |Вы называете ужасающие вещи "милыми". |
| 4 |Вы пытаетесь говорить с животными на запретном языке. |
| 5 |Вы называете отход ко сну "визитом на ту сторону". |
| 6 |Вы упоминаете о глазах, наблюдающих за вами. Никто другой не может видеть эти глаза. |
---
!!! [img[2.png]] Заклинания круга
Вы получаете доступ к некоторым заклинаниям, когда вы достигаете определённых уровней в этом классе, как показано в таблице ниже.
Как только вы получили доступ к любому из этих заклинаний, оно считается подготовленным и не учитывается в общем количестве заклинаний, которые вы можете подготовить. Если вы получаете доступ к заклинанию, которого нет в списке заклинаний друида, оно считается для вас заклинанием друида.
| !УД |!Заклинания |
| !2 |//сообщение// |
| !3 |//смена обличья// |
| !5 |//мутация// |
| !7 |//Эвардовы чёрные щупальца// |
| !9 |//связь с иным миром// |
//УД - Уровень друида//
---
!!! [img[2.png]] Мистическая мутация
Вы можете бонусным действием потратить одно из ваших использований Дикого облика, чтобы вызвать у себя мистическую мутацию, порожденную вашими извращенными кошмарами, воплотив часть их в реальность через искривление вашей плоти.
Когда вы используете это умение, вы получаете временные хиты в количестве, равном вашему уровню друида + ваш мод. Мудрости, и отращиваете на выбор Глазной Стебель или Цепкие Щупальца. Мутация длится 10 минут. Она оканчивается раньше, если вы отмените её бонусным действием, станете [[недееспособным|Недееспособный]], либо снова используете это умение.
''Глазной Стебель''
Когда вы вызываете эту мутацию, и бонусным действием в последующие ходы, пока она существует, вы можете выбрать целью видимое вами существо в пределах 12 м от вас и совершить бросок по следующей таблице, чтобы выстрелить в него случайным лучом глаза.
Вы можете выбрать луч из таблицы, вместо совершения броска, количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются при следующем использовании Мистической мутации.
| !к6 |!Луч |!Эффект |
| !1 |Луч страха |Цель должна преуспеть в спасброске Мудрости, иначе будет [[испугана|Испуганный]] вами до начала вашего следующего хода. |
| !2 |Луч телекинеза |Цель должна преуспеть в спасброске Силы, иначе будет сдвинута вами на 2 м выбранном направлении. |
| !3 |Луч замедления |Цель должна преуспеть в спасброске Мудрости, иначе будет подвержена эффекту заклинания //замедление// до начала вашего следующего хода. |
| !4 |Луч окаменения |Цель должна преуспеть в спасброске Телосложения, иначе будет [[опутана|Опутанный]] до начала вашего следующего хода. |
| !5 |Луч бессилия |Цель должна преуспеть в спасброске Телосложения, иначе получит 1к8 + ваш мод. Мудрости урона некротической энергией. |
| !6 |Луч расщепления |Цель должна преуспеть в спасброске Ловкости, иначе получит 1к10 + ваш мод. Мудрости урона силовым полем. |
''Цепкие Щупальца''
Когда вы вызываете эту мутацию, и бонусным действием в последующие ходы, пока она существует, вы можете совершить рукопашную атаку заклинанием по существу в пределах 2 м от вас. При попадании цель получает 1к6 + ваш мод. Мудрости дробящего урона. Вместо этой атаки вы можете попробовать совершить действие [[Захват]] с досягаемостью 2 м, используя ваш модификатор Мудрости вместо Силы для проверок захвата. Количество ваших щупалец равно вашему модификатору Мудрости, и вам нужно хотя бы одно свободное щупальце, чтобы совершать это бонусное действие.
---
!!! [img[6.png]] Аберрантные мутации
Вы можете сотворять заклинание //мутация//, не тратя ячейки заклинаний. Вы можете сотворить это заклинание таким образом количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Фасетчатые формы
Вы можете вызвать одновремено и Глазной Стебель, и Цепкие Щупальца, когда используете умение Мистическая мутация. Пока у вас проявлены обе мутации, вы можете использовать эффект любой из них действием или бонусным действием. Кроме того, увеличивается урон вашего луча бессилия (до 2к8 + ваш мод. Мудрости), луча расщепления (до 2к10 + ваш мод. Мудрости) и цепкого щупальца (до 2к6 + ваш мод. Мудрости).
---
!!! [img[14.png]] Мастерство мутации
Когда вы сотворяете заклинание мутация, вы можете выбрать одно дополнительное свойство (как если бы сотворяли его на 1 уровень выше).
---
!!! [img[14.png]] Пронзающие глаза
Пока существует ваш Глазной Стебель от Мистической мутации, у вас есть [[истинное зрение|Зрение и свет]] радиусом 20 м.
Друиды Круга Луны — непримиримые стражи дикой природы. Их собрания проходят под полной луной для обмена новостями и предостережениями. Они обитают в самой дремучей глуши, где можно неделями не встречать другого гуманоида, не говоря уже о друиде.
Переменчивые как сама луна и дикие до глубины души, друиды этого круга то крадутся кошкой, то парят орлом, то ломятся в облике медведя, устрашая забредшее чудище.
---
!!! [img[2.png]] Боевой дикий облик
Вы можете использовать умение Дикий облик бонусным действием, а не действием.
Кроме того, пока вы превращены умением Дикий облик, вы можете бонусным действием потратить ячейку заклинания, чтобы восстановить себе 1к8 хитов за каждый уровень потраченной ячейки.
---
!!! [img[2.png]] Облики круга
<<<
Обряды Круга Луны позволяют вам принимать облик более опасных животных.
<<<
Вы можете использовать умение Дикий облик, чтобы превратиться в зверя с показателем опасности 1 (игнорируйте столбец Макс. ПО таблицы Дикого облика, но соблюдайте прочие ограничения).
Начиная с 6 уровня этого класса, вы можете превращаться в зверя с показателем опасности вплоть до уровня друида, делённого на 3 (округляя в меньшую сторону).
| !Ур. | !Макс. ПО |!Ограничения |
| !2 | 1 |Без скорости плавания и полёта |
| !4 | 1 |Без скорости полёта |
| !6 | 2 |Без скорости полёта |
| !8 | 2 |— |
| !9 | 3 |— |
| !12 | 4 |— |
| !15 | 5 |— |
| !18 | 6 |— |
---
!!! [img[6.png]] Пиродный удар
Ваши атаки в Диком облике считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
---
!!! [img[10.png]] Стихийный дикий облик
Вы можете потратить сразу два использования Дикого облика, чтобы превратиться в водяного, воздушного, земляного или огненного элементаля.
---
!!! [img[14.png]] Тысяча обличий
<<<
Вы научились магически изменять свою физическую форму более тонкими способами.
<<<
Заклинание //смена обличья// всегда считается подготовленным для вас, оно считается для вас заклинанием друида, не учитывается в количестве подготовленных заклинаний, и вы можете сотворять его без увеличения уровня, не тратя ячейку заклинаний.
Друиды Круга Пастыря общаются с духами природы, особенно с духами зверей и фей, и взывают к этим духам за помощью. Эти друиды признают, что все живые существа играют роль в естественном мире, но они сосредоточены на защите животных и фей, которым трудно защитить себя. Пастыри, как они известны, считают таких существ своими подзащитными. Они отражают атаки чудовищ, которые угрожают им, отгоняют охотников, которые убивают больше добычи, чем необходимо, не позволяют цивилизации вторгаться в среду обитания редких животных и священные места фей. Многие из этих друидов счастливы вдали от больших и маленьких городов, довольствуясь тем, что проводят свои дни в обществе животных и фей из дикой природы.
Члены этого круга становятся авантюристами, чтобы противостоять силам, которые угрожают их подзащитным, или в поисках знаний и силы, которые помогут им лучше охранять своих подопечных. Везде, куда бы ни пошли эти друиды, духи дикой природы следуют за ними.
---
!!! [img[2.png]] Речь лесов
<<<
Вы получили возможность говорить с животными и многими феями.
<<<
Вы можете говорить, читать и писать на Сильване. Кроме того, звери могут понять вашу речь, а вы можете расшифровывать звуки, которые они издают, и их движения. У большинства животных недостаточно интеллекта для передачи или понимания сложных концепций, но дружелюбный зверь может рассказать то, что он видел или слышал в недавнем прошлом. Это умение не обеспечивает дружелюбие животных, хотя вы можете сочетать её с дарами, чтобы наладить с ними контакт, как и с другими неигровыми персонажами.
---
!!! [img[2.png]] Тотем духов
<<<
Вы можете вызывать духов природы, чтобы влиять на окружающий вас мир.
<<<
Бонусным действием вы можете магическим образом вызвать бестелесный дух в видимой вами точке в пределах 12 м от вас. Дух создает ауру в радиусе 6 м вокруг этой точки. Он не считается ни существом, ни объектом, хотя он имеет спектральный вид существа, которое представляет.
Бонусным действием вы можете перемещать дух на расстояние до 12 м в видимую вами точку.
Дух существует в течение 1 минуты или пока вы не станете [[недееспособным|Недееспособный]].
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
Эффект ауры духа зависит от типа духа, который вы вызываете из предложенных ниже вариантов.
<<tabs "[tag[Тотем духов]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[6.png]] Могущественный призыватель
<<<
Звери и феи, которых вы вызываете, становятся более стойкими, чем обычно.
<<<
Любой зверь или фея, вызванные или созданные заклинанием, которое вы сотворяете, получает следующие преимущества:
* Вызванное существо появляется с дополнительными хитами: за каждую Кость Хитов, которые есть у существа, прибавляется дополнительно 2 хита.
* Урон от его природного оружия считается магическим при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
---
!!! [img[10.png]] Дух-хранитель
<<<
Ваш Тотем духов защищает зверей и фей, которых вы вызываете своей магией.
<<<
Когда зверь или фея, которых вы вызвали или создали заклинанием, заканчивает свой ход в ауре вашего Тотема духов, это существо восстанавливает хиты в количестве, равном половине вашего уровня друида.
---
!!! [img[14.png]] Верные призванные
<<<
Духи природы, с которыми вы общаетесь, защищают вас, когда вы наиболее беззащитны.
<<<
Если ваши хиты опустились до 0 или вы [[недееспособны|Недееспособный]] против своей воли, вы можете немедленно получить преимущества заклинания призыв животных, как если бы оно было сотворено с использованием ячейки заклинаний 9-го уровня. Заклинание вызывает четырех зверей по вашему выбору с показателем опасности 2 или ниже. Призванные звери появляются в пределах 4 м от вас. Если они не получат от вас никаких приказов, они защищают вас и нападают на ваших противников. Заклинание не требует концентрации и длится 1 час, или пока вы не отмените его (действие не требуется).
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Друиды, являющиеся членами Круга Снов, происходят из регионов, имеющих особенно сильную связь со Страной Фей и её сказочной реальностью. То, что друиды опекают мир природы, делает естественным союз между ними и феями с добрым мировоззрением. Эти друиды стремятся наполнить мир сказочными чудесами из снов. Их магия исцеляет раны и приносит радость подавленным сердцам. Священные земли, которые они оберегают – это мерцающие, плодородные места, где сон и реальность сливаются вместе, а уставшие могут найти покой.
---
!!! [img[2.png]] Бальзам Летнего Двора
<<<
Вы наделены благословениями Летнего Двора. Вы становитесь источником энергии, дарующим исцеление от увечий.
<<<
У вас есть запас энергии фей, представленный количеством костей к6 равным вашему уровню Друида.
Бонусным действием вы можете выбрать одно видимое вами существо в пределах 24 м от вас, и потратить количество костей, равное половине вашего уровня друида или меньше, чтобы восстановить цели количество хитов, равное результату броска этих потраченных костей. Также цель получает по одному временному хиту за каждую потраченную кость.
Потраченные кости восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Очаг лунного света и тени
Во время короткого или продолжительного отдыха вы можете призвать теневую силу Сумрачного Двора, чтобы помочь защитить вас во время отдыха. В начале отдыха вы касаетесь точки в пространстве и создаёте невидимую сферу радиусом 6 м с центром в этой точке. Полное укрытие препятствует сфере.
Находясь внутри этой сферы, вы и ваши союзники получаете бонус +5 к проверкам Ловкости (Скрытность) и Мудрости (Внимательность), а любой свет от открытого огня в сфере (костер, факелы и т. д.) не виден за её пределами.
Сфера исчезает в конце отдыха или когда вы покидаете сферу.
---
!!! [img[10.png]] Скрытые пути
<<<
Вы можете использовать скрытые магические пути, которые некоторые фей используют для перемещения в пространстве в мгновение ока.
<<<
Бонусным действием вы можете телепортироваться на расстояние до 12 м в видимое вами свободное пространство. Либо же вы можете действием телепортировать одно согласное существо, которого вы касаетесь, на расстояние до 6 м, в видимое вами свободное пространство.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[14.png]] Гуляющий во снах
<<<
Волшебство Страны Фей предоставляет вам возможность путешествовать мысленно или физически через страну сновидений.
<<<
Когда вы завершаете короткий отдых, вы можете сотворить одно из следующих заклинаний, не расходуя ячейку заклинаний или материальный компонент: //вещий сон// (с вами, как посыльным), //наблюдение// или //круг телепортации//.
Этот //круг телепортации// особенный. Вместо того, чтобы открывать портал в постоянный круг телепортации, он открывает портал в последнее место, где вы завершили продолжительный отдых на этом плане. Если вы не совершали продолжительного отдыха на этом плане, заклинание не срабатывает, но его использование не тратится.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
<<tabs "[tag[Круг друидов]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Вы можете попытаться проскочить сквозь пространство враждебного существа, уклоняясь от него.
Вы совершаете действием или бонусным действием проверку Ловкости (Акробатика), противопоставленную результату Ловкости (Акробатика) цели.
При успехе, вы можете в этом ходу один раз переместиться сквозь пространство цели и не провоцируете от неё атаку, покидая её досягаемость.
Кузнечное дело - популярное ремесло среди двух категорий приключенцев: тех, кто хочет бить тяжелыми металлическими предметами, и тех, кто хочет, чтобы между ними и бьющим был тяжелый металлический предмет.
Несмотря на то, что зачастую можно положиться на городского кузнеца, вы сможете проявить свои творческие способности, засучив рукава и сделав работу самостоятельно... и, возможно, сэкономив несколько монет в процессе.
Кузнечное дело - это медленная тяжелая работа, но оно более терпимо к неудачам, чем большинство других видов ремесел, и в большей степени зависит от знания своего материала, поскольку шаблоны, по которым вы работаете, как правило, являются общими для многих из них.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления предмета в самой простой форме:
* Выберите предмет, который вы хотите изготовить, из таблицы [[Кузнечное дело|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=2136286124]].
* Приобретите предметы, перечисленные в колонке Материалы для этого предмета.
* Используйте свои [[инструменты кузнеца|Инструменты кузнеца]] для изготовления предмета в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Силы + ваш бонус мастерства [[инструментов кузнеца|Инструменты кузнеца]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Кузнечное дело основано на использовании [[инструментов кузнеца|Инструменты кузнеца]]. Попытка изготовить металлический предмет без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на изготовление таких предметов. Кузнечное дело использует ваш модификатор Силы.
Хотя кузнецы могут использовать свои навыки для мелких нужд, таких как заточка оружия и подгонка снаряжения на ходу, многие из их возможностей ремесла требуют полностью оборудованной кузницы; полностью оборудованная кузница включает в себя кузнечный горн, наковальню и [[инструменты кузнеца|Инструменты кузнеца]].
---
!!!Проверка ремесла
Когда вы хотите поработать над кузнечным делом, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор кузнечного дела = бонус мастерства инструментов кузнеца + модификатор Силы
```
!!!Успех и провал
Для кузнечного дела, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Модификаторы и улучшения
Вы можете изготавливать особые варианты стандартной экипировки, используя различные модификаторы материалов и изготовления, а также впоследствии улучшать их. Эти модификаторы и улучшения подчиняются следующим правилам:
* Приступая к изготовлению предмета вы можете добавить ему один модификатор материалов и/или один модификатор изготовления.
* При добавлении модификаторов Сл каждой проверки ремесла увеличивается как указано в соответствующих таблицах.
* Готовый предмет может быть улучшен любое количество раз, но каждое улучшение может быть применено только один раз.
* Указанная стоимость готовых предметов с модификаторами и улучшениями является ориентиром для Мастера. Такие предметы могут быть как широко распространены, так почти также редки как магические, и их цена может резко разниться.
* Щиты и отдельные элементы доспехов не получают преимуществ модификаторов и улучшений.
* Проваленная проверка ремесла при изготовлении //превосходного// или //мастерского// предмета не является таковой, если её результат удовлетворяет обычной Сл изготовления предмета. Готовый предмет считается //превосходным// или //мастерским//, если все успешные проверки при его изготовлении соответствовали модифицированной сложности. Таким образом, например, в результате изготовления //мастерского// предмета вы можете получить //превосходный// предмет, если вы провалили одну или несколько проверок при его изготовлении, но они всё ещё удовлетворяли Сл изготовления //превосходного// варианта.
---
!!!Обслуживание и подгонка
В то время как основной целью кузнечного дела является ковка доспехов и оружия из металла, для приключенца такие события являются важными вехами, которые, как правило, происходят не каждый день. Ниже перечислены работы, требующие владения [[инструментами кузнеца|Инструменты кузнеца]], которые обеспечивают более повседневную полезность этого ремесла, предоставляя возможность улучшить или приспособить свое снаряжение.
Эта мелкая работа может быть завершена за 2 часа при затрате 5 см материалов. Ниже перечислены варианты мелкой работы для кузнецов:
''Обслуживание экипировки''
Одним из преимуществ наличия кузнеца в поле является его способность следить за состоянием экипировки, обеспечивая вам превосходство в качестве ваших доспехов и оружия. За 2 часа кузнец может обслужить количество оружия или комплектов металлических средних или тяжёлых доспехов, равное его бонусу мастерства, наделяя каждое оружие или доспехи особой Костью Качества - к6.
Для оружия бросок Кости Качества может быть добавлен к броску атаки или урона. В случае доспехов, когда по вам попадают атакой, вы можете уменьшить полученный от неё урон на результат броска Кости Качества.
Бросок Кости Качества не требует действия, а Кость Качества тратится сразу после броска.
''Починка экипировки''
Иногда во время приключений оружие или доспехи сильно повреждаются, получая штраф к броскам атаки или КД. За 2 часа вы можете восстановить повреждения одного оружия, либо комплекта металлических средних или тяжёлых доспехов, хотя по усмотрению Мастера вам могут понадобиться другие материалы для выполнения этой задачи, если предмет сильно поврежден. Оружие, которое окончательно сломано, обычно не подлежит простому ремонту.
''Подгонка доспеха''
Хотя изготовление доспехов в полевых условиях зачастую невозможно, вы можете вносить небольшие изменения прямо на ходу. За 2 часа вы можете подогнать комплект металлических средних или тяжёлых доспехов под другого пользователя, равного или меньшего по размеру, чем оригинальный пользователь. Это включает подгонку под существ с крыльями, нестандартным количеством конечностей и другими нехарактерными для обычного гуманоида особенностями.
''Полировка доспеха''
За 2 часа вы можете отполировать комплект металлических средних или тяжёлых доспехов, позволив его владельцу совершать проверки Харизмы при взаимодействии с определёнными Мастером гуманоидами с преимуществом. Доспехи перестают быть отполированными через 24 часа ношения или по окончанию сражения.
''Украшение доспеха''
За 2 часа вы можете украсить священным символом щит или комплект металлических доспехов. Украшенные доспехи или щит могут быть использованы в качестве заклинательной фокусировки для заклинаний жреца или паладина.
''Подгонка оружия''
За 2 часа вы можете подогнать оружие, размер которого отличается от размера владельца, под его размер. При этом размер самого оружия не меняется и оно следует правилу [[Размер оружия|Размер]].
<<<
My power comes from within, and I wield it in the name of the gods, yet even the brightest light must cast a shadow.
— Doomveil, initiate of the Shadow Sun clan
<<<
A Shadow Sun fist is a martial artist who studies the balance between good and evil, light and dark. Founded by a reformed half-fiend, this fighting school teaches its students to find power in balance. A Shadow Sun fist uses dark energies to drain their foe’s life, but then turns and uses the power of light to lend that stolen strength to an ally. A Shadow Sun fist is a study in contrasts. They know that evil lurks in the hearts of all living creatures. Even the purest of the pure suffer temptation. By exploring their inner demons, bringing them into the light, and accepting them as part of their soul, they achieve a deeper understanding of themselves and the strength within them. A Shadow Sun fist would argue that denying, rather than accepting, one’s base impulses would be the same as refusing to use one’s left arm.
''Shadow Sun Fists in the World:'' Shadow Sun fists rarely gather in large numbers; instead, they walk the land in anonymity, and train in remote, inhospitable outposts. Thus, adding them to your campaign is relatively easy. They could be active in a region for years, but little lore about them exists aside from tales of nameless strangers who appear, defeat evil, and fade back into the night.
A character who might pursue this path is most likely to discover the Shadow Sun fists by accident. For example, a Shadow Sun fist might, if they see a prospective member, secretly place a map to the nearest dojo within the possible fist’s possessions. If the petitioner can reach the dojo and survive the training, they become a fist. Many Shadow Sun warriors don’t even know the identities of the fists who set them along this path.
''Shadow Sun Fists in the Game:'' A Shadow Sun fist works well as a mysterious, perhaps untrustworthy NPC who allies with the characters against a powerful, supernatural threat. A wandering fist might know something about a demon’s weaknesses, and the PCs must work with him to overcome the monster. However, the fist’s tendency toward suspicion makes them relationship with the party icy at best. The characters must decide whether to trust the fist or strike out on their own. A villain might pose as a Shadow Sun fist, using the order’s mysterious nature to cloak their true nature.
''Adaptation.'' This prestige path could also represent an order of monster hunters, a band of good-aligned assassins that strikes down evildoers, or a martial art taught by a specific, isolated monastery. The key trait in this prestige path is the struggle between light and dark that lies at its center. The rest of the description is merely meant to inspire. If the descriptions don’t work for you, think of any races, religious orders, and other aspects of your campaign where the struggle between light and dark would be a good fit.
<<<
''Shadow Sun Lore''
Characters can make an Intelligence (Arcana) check to research Shadow Sun fists to learn more about them. When a character makes an ability check, read or paraphrase the following, including the information from lower DCs.
''DC 10:'' Shadow Sun fists are loners who fight evil on their own terms.
''DC 15:'' Supposedly, these fists use the powers of darkness against their enemies.
''DC 20:'' Shadow Sun fists harness both dark and light in battle. This represents the competition in their own souls between their good and evil aspects. They are heroic, but they draw their power by skirting close to the powers of evil.
One does not find a Shadow Sun fist. Rather, a fist finds you. Sometimes, gangs of toughs pose as members of this prestige path to strike terror in commoners and another weak folk. Such antics end quickly if a real Shadow Sun fist hears of them.
<<<
---
!!Кулак тени солнца
| !Ранг |!Умения |
| !1 |Divine Sun, Touch of the Shadow Sun |
| !2 |Shadow Sun Inspiration, Undimmed Sun |
| !3 |Radiant Hammer Fists |
| !4 |Blinding Sun Technique |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое доброе.
* ''Владение навыками.'' Религия, Скрытность.
* ''Особое.'' Боевые искусства монаха или Боевой стиль Рукопашный бой.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Мудрости (на ваш выбор)
```
---
!!Ранг 1
!!!Divine Sun
<<<
Radiance surrounds you as you teleport yourself and a friend across the battlefield and sear through your enemy's defenses.
<<<
//Shadow Sun Fist • Ki Focus, Offensive, Psionic, Radiant, Teleportation (Recharges after a short or long rest) //
When you take the attack action on your turn, you can teleport yourself and one ally within 5 feet of you a number of feet equal to your walking speed + 10 feet to unoccupied spaces adjacent to each other, before or after one of your melee weapon attacks.
In addition, the next time you hit a creature with an unarmed strike before the end of your turn, your attack deals an extra 2d10 radiant damage, and until the end of your next turn, whenever the target takes radiant damage, it takes an additional 1d6.
The extra radiant damage this exploit deals on a hit increases when you reach 9th level (3d10), 13th level (4d10), and 17th level (5d10).
!!!Touch of the Shadow Sun
When you hit a creature with an unarmed strike, you can deal necrotic damage equal to a roll of your unarmed strike damage die + your Wisdom modifier. You can use this feature only once per turn.
Your mystical touch can also mend wounds. As an action, the turn after you dealt necrotic damage with this ability, you can touch a creature and restore a number of hit points equal to a roll of your unarmed strike damage die + your Wisdom modifier.
When you use your Flurry of Blows, you can replace one of the unarmed strikes with a use of this feature's healing touch.
---
!!Ранг 2
!!!Undimmed Sun
<<<
Just as you begin to feel the weight of your wounds, you stand defiant as the gods heal you.
<<<
//Shadow Sun Fist • Healing, Psionic, Utility (Recharges after a long rest) //
As a bonus action, while you are below half your hit point maximum, you regain 3d10 + 12 hit points. In addition, for 1 minute, you gain resistance to all damage.
The number of hit points you regain from this exploit increases when you reach level 13 (4d10 + 20), and 17th level (5d10 + 30).
!!!Shadow Sun Inspiration
You can spend an inspiration on your turn (no action required) to regain 3d8 hit points. In addition, until the end of your next turn, your attacks deal extra radiant damage equal to your Wisdom modifier on a hit.
The number of hit points regained by this feature increases when you reach 13th level (3d10), and 17th level (3d12).
---
!!Ранг 3
!!!Radiant Hammer Fists
Whenever you deal damage with an unarmed strike, you can make that damage radiant, instead of any other damage type. In addition, whenever you score a critical hit with an unarmed strike, each enemy adjacent to you is blinded until the end of your next turn.
---
!!Ранг 4
!!!Blinding Sun Technique
<<<
You utter a prayer as the psionic energy within you flows into your attacks. With each strike, the divine radiance that burns within you grows stronger.
<<<
//Shadow Sun Fist • Ki Focus, Offensive, Psionic, Radiant (Recharges after a long rest) //
When you hit a creature with an unarmed strike, your attack deals an extra 5d10 radiant damage. In addition, for 10 minutes, you gain a +4 bonus to damage rolls, and you can score a critical hit with unarmed strikes on a roll of 19 —20. When you score a critical hit while under this effect, the target of the critical hit is blinded for 1 minute. A creature blinded by this exploit can make a Wisdom saving throw at the end of each of its turns, ending the effect on itself on a success.
Вы можете потратить 2 очка ци, чтобы сотворить заклинание //волна грома//.
Приключенцам необходимо питаться. Некоторые довольствуются старыми черствыми пайками, другие предпочитают применять свои кулинарные навыки, чтобы быть сытыми... даже в глубинах подземелья, где свежие ингредиенты могут быть... странными.
Талантливый кулинар может не только готовить вкусные угощения, но и приносить пользу от хорошего питания... особенно при использовании правильно приготовленных магических ингредиентов.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги приготовления блюда в самой простой форме:
* Приобретите свежий ингредиент, собрав или найдя его.
* Просмотрите таблицы рецептов ([[Кулинария|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=916086694]]) пиров, закусок или рационов, для которых подходит этот ингредиент, и соберите другие необходимые материалы, перечисленные в соответствующей колонке.
* Используйте свои [[инструменты повара|Инструменты повара]] для приготовления блюда в течение количества часов, указанного в колонке Время изготовления. Блюдо должно быть изготовлено за один сеанс ремесла, без перерывов между проверками. Все рецепты требуют источника тепла (например, костра).
* Каждые 2 часа совершайте проверку ремесла (1к20 + ваш модификатор Мудрости + ваш бонус мастерства [[инструментов повара|Инструменты повара]]).
* При успехе вы прибавляете 2 часа к прогрессу приготовления. Как только ваш прогресс в приготовлении блюда сравняется с указанным временем приготовления, блюдо считается готовым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Кулинария основана на использовании [[инструментов повара|Инструменты повара]]. Попытка приготовить блюдо без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на приготовление блюд. Кулинария использует ваш модификатор Мудрости.
---
!!!Срок годности блюда
Срок годности блюда зависит от его вида. Пир следует съесть в течение 1 часа, закуску - в течение 1 дня, а рацион - в течение 1 месяца.
---
!!!Ингредиенты
Материалами для приготовления пищи являются свежие ингредиенты и провизия. Свежий ингредиент - это то, что вы собираете, что может повысить качество вашей пищи, а иногда и дать сверхъестественное усиление сверх простого насыщения. К провизии относятся приправы, специи, мука и даже репа. Из этих продуктов можно приготовить вполне приемлемые блюда, но пользы от них меньше, чем от хорошей еды. Некоторые ингредиенты обладают дополнительным экзотическим свойством и могут наделять особыми эффектами.
<<<
//''Обобщённая система, конкретные примеры''//
//Как и во всех других областях, эта система ремесел не пытается предоставить конкретных примеров, а скорее представляет собой систему, которая позволяет узнать результат всего, что вы можете приготовить. Например, группа может получить 1 обычный свежий ингредиент, добыв его с крюкастого ужаса, а затем объединить его с 1 обычной провизией, чтобы приготовить //бутерброды с крюкастой индейкой// или //убийственные куриные пальчики//, но эффект от любого из этих примеров все равно будет соответствовать //обычному пиру//.//
<<<
!!!Срок годности ингредиентов
Срок годности простых ингредиентов истекает очень быстро, и их необходимо использовать в течение 24 часов после сбора, иначе они становятся непригодными. Долгохранящиеся рационы попадают в категорию провизии и обычно не могут быть использованы для приготовления чего-либо, кроме базовых блюд.
Способность приносить какую-либо магическую пользу связана со свежестью; даже хорошо приготовленные консервированные продукты предоставляют только эффект //обычого пира// (это сытная и вкусная еда, но она не является магической).
В отличие от свежих ингредиентов, провизия хранится значительно дольше, и отслеживать её срок годности не нужно.
!!!Сытость
Магические преимущества, которые вы получаете, употребляя редкие и магические блюда, не могут быть получены снова, пока не пройдет 24 часа для любого конкретного блюда. В сочетании с вышеуказанным истечением срока годности ингредиентов это обычно означает, что любой собранный ингредиент годится только для одного приема пищи; это сделано намеренно. При желании вы можете собрать и больше, но кулинария в естественных условиях - это профессия мимолетных достижений и непостоянных возможностей.
---
!!!Проверка ремесла
Когда вы хотите приготовить блюдо, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор кулинарии = бонус мастерства инструментов повара + модификатор Мудрости
```
!!!Успех и провал
Для кулинарии, когда вы преуспеваете в проверке ремесла, вы прибавляете 2 часа к прогрессу приготовления. Все проверки должны быть выполнены последовательно, без перерывов. Как только ваш прогресс в приготовлении блюда сравняется с указанным временем приготовления, блюдо считается готовым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, не могут быть восстановлены.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
Кутёж – это привычная деятельность во время простоя для многих персонажей. Кто не хочет отдохнуть с друзьями в таверне и чего-нибудь выпить между приключениями?
//''Ресурсы''//. Кутёж включает в себя неделю вкусной еды, крепких напитков и общения. Персонаж может кутить с простонародьем, зажиточными людьми или знатью. Кутёж с простонародьем обойдётся в 10 см, а с зажиточными людьми – в 50. Для кутежа со знатью необходим доступ в местный высший свет, а затраты составят 250 см в неделю.
У персонажа благородного происхождения такой доступ есть по умолчанию, но, чтобы он был и у других персонажей, им необходимы определённые контакты. Другой способ – использовать набор для грима и пройти проверку навыка Обман, чтобы выдать себя за аристократа из отдалённого города.
//''Определение результата''//. После недели кутежа персонаж может попытаться обзавестись контактами в выбранном социальном классе. Персонаж совершает проверку Харизмы (Убеждение).
| !Результат |!Последствия |
| 1-5 |Персонаж получил один враждебный контакт. |
| 6-10 |Персонаж никого не встретил. |
| 11-15 |Персонаж получил один дружественный контакт. |
| 16-20 |Персонаж получил два дружественных контакта. |
| 21+ |Персонаж получил три дружественных контакта. |
Контакты – это персонажи Мастера, у которых теперь есть связь с персонажем игрока. Каждый из них либо доброжелательно настроен по отношению к персонажу, либо по какой-то причине обижен на него. Враждебный контакт действует против персонажа, по возможности ему мешая, но не опускается до преступлений или насилия. Дружественные контакты – это друзья, которые готовы помочь персонажу, но не будут для этого рисковать жизнью.
К контактам среди простонародья относятся преступники, рабочие, наёмники, городские стражники и другие люди, посещающие самые неприглядные таверны города.
Контакты среди зажиточных людей — это члены гильдий, волшебники, городские чиновники и прочие люди, посещающие заведения с хорошей репутацией.
Контакты среди знати — это аристократы и их слуги. Кутёж с такой компанией включает в себя банке- ты, званые ужины и тому подобное.
После того как контакт помог или помешал персонажу, персонаж снова должен покутить, чтобы вернуть доброе расположение контакта. Контакт помогает вам один раз, а не пожизненно. Контакт остаётся дружественным, что может повлиять на игру и его взаимодействие с персонажами, но не гарантирует помощи.
//''Осложнения''//. Персонажи, которые кутят, рискуют ввязаться в драку, стать объектом неприятных слухов и испортить свою репутацию в городе. Согласно правилам, персонаж может получить осложнение с вероятностью 10% после недели кутежа.
''Осложнения при кутеже с простонародьем''
| !к8 |!Осложнение |
| 1 |Карманник украл у вас 1к10 × 5 см. |
| 2 |После драки в таверне у вас остался шрам. |
| 3 |Вы не помните точно, что делали вечером, но явно что-то очень и очень незаконное. |
| 4 |Вам запрещено появляться в таверне из-за разгульного поведения. |
| 5 |После пары-тройки кружек, вы поклялись на главной площади, что отправитесь на выполнение опасного задания. |
| 6 |Сюрприз! Вы теперь женаты/замужем. |
| 7 |Бегать голым по улице казалось лучшей идеей на свете! |
| 8 |Все зовут вас каким-то странным смущающим прозвищем, например, Пьяной кудряшкой или Убийцей скамеек, и никто не говорит, почему. |
''Осложнения при кутеже с зажиточными людьми''
| !к8 |!Осложнение |
| 1 |Вы случайно оскорбили главу гильдии, и гильдия не будет вести с вами дел, пока вы публично не извинитесь. |
| 2 |Вы поклялись выполнить некое задание для храма или гильдии. |
| 3 |После неуместного поступка о вас говорит весь город. |
| 4 |Особо неприятная личность по уши влюбилась в вас. |
| 5 |Вы нажили себе врага в лице местного мага. |
| 6 |Вы согласились помочь в проведении местного фестиваля, представления или аналогичного мероприятия. |
| 7 |Напившись, вы произнесли тост, который спровоцировал скандал с местными. |
| 8 |Вы потратили дополнительные 100 см, пытаясь произвести впечатление на людей. |
''Осложнения при кутеже со знатью''
| !к8 |!Осложнение |
| 1 |Одна из благородных семей настойчиво хочет сочетать вас браком с одним из своих наследников. |
| 2 |Вы споткнулись и упали во время танца, и теперь ваш конфуз у всех на устах. |
| 3 |Вы согласились взять на себя долги одного аристократа. |
| 4 |Один из рыцарей бросил вам вызов. |
| 5 |Вы нажили себе врага в лице местного аристократа. |
| 6 |Один занудный аристократ настаивает, чтобы вы посещали его каждый день и слушали его долгие и утомительные рассуждения о магии. |
| 7 |Вы оказались центром различных постыдных слухов. |
| 8 |Вы потратили дополнительные 500 см, пытаясь произвести впечатление на людей. |
<<<
Вы настраиваете доспех для того, чтобы действовать деликатно.
<<<
Доспех обладает следующими особенностями:
''Метатель молний.'' Похожий на драгоценный камень нарост появляется на одном из ваших бронированных кулаков или на груди по вашему выбору. Он считается простым дальнобойным оружием с дистанцией 18 м, наносящим 1к6 урона электричеством при попадании. Один раз в каждый свой ход, когда вы попадаете по существу этим оружием, вы можете дополнительно нанести ему 1к6 урона электричеством.
''Заряженные шаги.'' Ваша скорость передвижения увеличивается на 1 м.
''Заглушающее поле.'' Вы получаете преимущество на проверки Ловкости (Скрытность). Если доспех накладывает помеху на данную проверку, то преимущество и помеха отменяют друг друга, как обычно.
Доспехи, изготовленные из лёгких и тонких материалов, предпочитают ловкие искатели приключений, поскольку те предоставляют защиту, и при этом не ограничивают подвижность. Если вы носите лёгкий доспех, вы при определении Класса Доспеха добавляете модификатор Ловкости к базовому числу, предоставленному доспехом.
//''Дублет''//. Толстая кожаная куртка со стёганой подкладкой и стоячим воротником, защищающим шею. Используется как поддоспешник или самостоятельный доспех.
//''Кожаный''//. Нагрудник и плечи этого доспеха изготовлены из кожи, вываренной в масле. Остальные части доспеха сделаны из более мягких и гибких материалов.
//''Баклер''//. Маленький (20−40 см в диаметре, чаще всего металлический круглый щит с округлым выступом (умбоном) в центре. ''Атаки, совершаемые баклером, не лишают вас его бонуса к КД.''
[img width=340 class="centerme" [https://i.imgur.com/xOYifys.png]]
Легконогие полурослики умеют отлично скрываться, в том числе используя других существ как укрытие. Они приветливы и хорошо ладят с другими. В мире Забытых Королевств легконогие являются самой распространённой ветвью полуросликов.
Легконогие более других склонны к перемене мест, и часто селятся по соседству с другими народами, или ведут кочевую жизнь. В мире Серого Ястреба таких полуросликов называют мохноногими или великанчиками.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 1. |
|^Естественная скрытность |^Вы можете предпринять попытку скрыться даже если заслонены только существом, превосходящими вас в размере как минимум на одну категорию. |
|^Лёгкая поступь |^Если вы не носите обуви, ваши шаги не издают звука. Кроме того, вы можете перемещаться осторожно. Каждый метр такого перемещения стоит один дополнительный метр, а перемещение таким образом не активирует ловушки и прочие механизмы, которые срабатывают под давлением или весом. |
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Бабуин |— |
| 0 |Барсук |— |
| 0 |Кошка |— |
| 0 |Олень |— |
| 0 |Гиена |— |
| 0 |Сова |Скорость полёта |
| 1/8 |Кровавый ястреб |Скорость полёта |
| 1/8 |Летающая змея |Скорость полёта |
| 1/8 |Гигантская крыса |— |
| 1/8 |Гигантская куница |— |
| 1/8 |Ядовитая змея |Скорость плавания |
| 1/8 |Мастифф |— |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Кабан |— |
| 1/4 |Удав |Скорость плавания |
| 1/4 |Лось |— |
| 1/4 |Гигантский барсук |— |
| 1/4 |Гигантская летучая мышь |Скорость полёта |
| 1/4 |Гигантская лягушка |Скорость плавания |
| 1/4 |Гигантская ящерица |— |
| 1/4 |Гигантская сова |Скорость полёта |
| 1/4 |Гигантская ядовитая змея |Скорость плавания |
| 1/4 |Гигантский паук-волк |— |
| 1/4 |Пантера |— |
| 1/4 |Волк |— |
| 1/2 |Человекообразная обезьяна |— |
| 1/2 |Чёрный медведь |— |
| 1/2 |Гигантская оса |Скорость полёта |
| 1 |Бурый медведь |— |
| 1 |Лютый волк |— |
| 1 |Гигантская гиена |— |
| 1 |Гигантский паук |— |
| 1 |Гигантская жаба |Скорость плавания |
| 1 |Тигр |— |
| 2 |Гигантский кабан |— |
| 2 |Гигантский удав |Скорость плавания |
| 2 |Гигантский лось |— |
[img width=420 class="centerme" [https://i.imgur.com/v6seN9i.png]]
Лесные гномы обладают природными способностями к иллюзии, и унаследовали проворство и скрытность. В мирах D&D лесные гномы встречаются редко, и являются скрытным народом. Они собираются в спрятанные в глубинах лесов общины, и используют иллюзию и обман, чтобы укрыться от опасности или скрыть свой побег в случае обнаружения. Лесные гномы обычно дружелюбны с другими добрыми лесными народами, и считают эльфов и добрых фей своими главными союзниками. Эти гномы также дружат с мелкими лесными зверушками, которые предупреждают их об опасности.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Общение с маленькими зверьми |^С помощью звуков и жестов вы можете передавать простые понятия Маленьким или ещё меньшим зверям. Лесные гномы любят животных и часто держат белок, барсуков, кроликов, кротов, дятлов и других животных в качестве питомцев. |
|^Природная иллюзия |^Вам известен заговор //малая иллюзия//. Базовой характеристикой для его использования является Интеллект. |
|^Инстинкт разведчика |^Лесные гномы яро оберегают места своего обитания и могут сказать, какая веточка не на своём месте. Вы владеете навыками Выживание и Природа. Вы совершаете проверки Мудрости (Выживания), с целью выслеживания существа в лесах, лугах, холмах и джунглях, с преимуществом. |
[img width=518 class="centerme" [https://i.imgur.com/mG5qGKJ.jpg]]
Поскольку вы — лесной эльф, у вас обострённые чувства и интуиция, и ваши стремительные ноги несут вас быстро и незаметно через ваши родные леса. Эта категория включает диких эльфов Серого Ястреба и кагонести из Саги о Копье, а также расы, называемые лесными эльфами Серого Ястреба и Забытых Королевств. В Фаэруне лесные эльфы (также называемые дикими или зелёными) являются затворниками, не доверяющими не-эльфам.
Кожа лесных эльфов, как правило, имеет медный оттенок, иногда со следами зелёного. У них часто коричневые и чёрные волосы, но иногда они бывают светлого или бронзового оттенков. У них зелёные, карие или орехового цвета глаза.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Быстрые ноги |^Ваша базовая скорость ходьбы увеличивается до 7 метров. |
|^Маскировка в дикой местности |^Вы можете предпринять попытку спрятаться, даже если вы слабо заслонены листвой, сильным дождём, снегопадом, туманом или другими природными явлениями. |
|^Эльфийская боевая подготовка |^Вы владеете воинским лёгким и одноручным клинковым оружием, а также простыми и воинскими луками. |
<<<
Дух лося делает вас необычайно быстрым.
<<<
Пока вы пребываете в ярости и не носите тяжёлых доспехов, ваша скорость ходьбы увеличивается на 3 м.
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Кошка |— |
| 0 |Олень |— |
| 0 |Орёл |Скорость полёта |
| 0 |Козёл |— |
| 0 |Гиена |— |
| 0 |Шакал |— |
| 0 |Гриф |Скорость полёта |
| 1/8 |Кровавый ястреб |Скорость полёта |
| 1/8 |Летающая змея |Скорость полёта |
| 1/8 |Гигантская куница |— |
| 1/8 |Ядовитая змея |Скорость плавания |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Топороклюв |— |
| 1/4 |Кабан |— |
| 1/4 |Лось |— |
| 1/4 |Гигантская ядовитая змея |Скорость плавания |
| 1/4 |Гигантский паук-волк |— |
| 1/4 |Пантера (леопард) |— |
| 1/4 |Птеранодон |Скорость полёта |
| 1/4 |Ездовая лошадь |— |
| 1/4 |Волк |— |
| 1/2 |Гигантский козёл |— |
| 1/2 |Гигантская оса |Скорость полёта |
| 1 |Гигантский орёл |Скорость полёта |
| 1 |Гигантская гиена |— |
| 1 |Гигантский гриф |Скорость полёта |
| 1 |Лев |— |
| 1 |Тигр |— |
| 2 |Аллозавр |— |
| 2 |Гигантский кабан |— |
| 2 |Гигантский лось |— |
| 2 |Носорог |— |
| 3 |Анкилозавр |— |
| 4 |Слон |— |
| 5 |Трицератопс |— |
<<<
I can see my destiny in the face of the moon, and I call to it in greeting.
— Vellios, Primal Moonstalker
<<<
Shifters harbor a bestial nature inside themselves. When a shifter is under duress, this nature reveals itself in their features and prowess. This innate savagery is the gift of shifters' lycanthrope ancestors, the quality passed down through the generations that gives the shifter race its identity. Most shifters can call on their legacy when needed, but you enjoy a closer kinship to your lycanthrope forebears.
You take the name moonstalker for the strong lycanthropic heritage you have awakened in your spirit. You have always had an animalistic side, manifested in your physical features and sometimes through your behavior, but at some point you learned that you were different, and that the gift from your ancestors was greater than you could have believed. You are still able to shift your form, physically expressing shifter traits, but you can take that power a step farther and use your bestial nature to fully transform into a wolf or a tiger. This ability accompanies a host of other changes, and your tactics and behavior leave behind civilized methods for those of an untamed predator.
''Moonstalkers in the World:'' Most moonstalkers are shifters, but certain barbarians, clerics, druids, and paladins, can find themselves among these ranks. Moonstalker PCs tend to prefer being outside, surrounded in wilderness. They don't have a problem with being in cities, but there is generally very little prey they can hunt without angering the local townsfolk.
Moonstalker NPCs often live as hunters and outlanders, indulging their primal desires for battle, hunting prey, and guarding their territory. Neutral good moonstalkers are likely to protect their domains from encroaching monsterous races such as gnolls and orcs. Aberrations in particular enrage them and they will relentlessly hunt them down, purging them from the world. Such moonstalkers are likely to be helpful to PCs as long as they don't despoil the moonstalker's territory.
Neutral evil moonstalkers revel in the violence of the kill, often leaving totems and fetishes crafted from their kills to mark their territory. An honorable hunt is one of their favorite thrills, something dangerous that will make a fine trophy.
''Moonstalker Lore.'' Characters proficient in nature can research moonstalkers to learn more about them. When a character makes an Intelligence (Nature) check, read or paraphrase the following, including the information from lower DCs.
''DC 10: ''“Moonstalkers are often shifters or druids who have given into their savage nature.”
''DC 15:'' “Moonstalkers will often have creatures they share an affinity with as guardians..”
''DC 20:'' “Not all moonstalkers are wild; some merely seek ways to enhance their connection with nature. The majority of them are savage, though, and travelers should stay out of their demesne.”
''DC 25:'' Characters who achieve this level of success can learn important details about specific moonstalkers, including the boundaries of their demesne and possibly even what kind of beasts frequent those lands.
''Adaptation.'' The special requirements are especially relevant if you don't have shifters in your setting. You could consider expanding this path to other bestial races, such as gnolls, jackleweres, and lycanthropes.
You could also expand the list of creatures the moonstalker can turn into. The dire wolf and tiger were simply chosen to honor the original paragon path, but any CR 1 or lower beast or monstrosity could work.
---
!!Лунный преследователь
| !Ранг |!Умения |
| !1 |Call to the Moon, Go for the Throat, Hunter Inspiration |
| !2 |Unleash the Silent Predator |
| !3 |Savage Tactics |
| !4 |Circle the Prey |
---
!!!Предварительные условия:
* ''Раса.'' Шифтер.
* ''Мировоззрение.'' Любое нейтральное.
* ''Особое.'' Вы можете игнорировать требование к расе, если у вы принадлежите к одному из следующих подклассов: [[Круг Луны]], [[Домен Природы]], [[Клятва Древних]] или [[Путь Тотемного воина]].
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Телосложения или Мудрости (на ваш выбор)
```
---
!!Ранг 1
!!!Call to the Moon
<<<
A blood curdling howl escapes from your throat, announcing that the hunt has begun.
<<<
//Rank 1 Rite • Enchantment, Fear, Offensive (Recharges on a short or long rest) //
As a bonus action, choose any number of creatures you can see within 25 feet of you. Each target must succeed on a Wisdom saving throw or take 2d6 psychic damage and, until the end of your next turn, attack rolls against the target have advantage.
This rite’s damage increases when you reach 5th level (4d6), 11th level (6d6), and 17th level (8d6).
!!!Go for the Throat
Your bestial savagery boils when you see your foe prostrated before you. When you hit a prone target with a melee attack, your attack deals an extra 1d6 damage. This extra damage increases to 2d6 when you reach level 11.
!!!Hunter Inspiration
Drawing on your inspiration in battle, causes you to become as swift and elusive as the wind. When you spend an inspiration to gain advantage on an attack roll, you can move a number of feet equal to your proficiency bonus multiplied by 5 before or after the attack. This movement does not provoke opportunity attacks.
---
!!Ранг 2
!!!Unleash the Silent Predator
<<<
Your body contorts as you transform into the creature lurking inside you.
<<<
//Rank 2 Rite • Polymorph, Transmutation, Utility (Recharges on a long rest) //
As a bonus action, you assume the form of a dire wolf or a tiger (your choice) for 1 minute, until you drop to 0 hit points or die, or you choose to end this rite as a bonus action. Your game statistics are replaced by the statistics of the form you chose, but you retain your alignment, personality, and Intelligence, Wisdom, and Charisma scores. You also retain all of your skill and saving throw proficiencies, in addition to gaining those of the creature. If the creature has the same proficiency as you and the bonus in its stat block is higher than yours, use the creature’s bonus instead of yours.
You assume the hit points of your new form. When you revert to your normal form, you return to the number of hit points you had before you transformed. If you revert as a result of dropping to 0 hit points, any excess damage carries over to your normal form. As long as the excess damage doesn’t reduce your normal form to 0 hit points, you aren't knocked unconscious.
You retain the benefit of any features from your class, race, or other source and can use them if the new form is physically capable of doing so. However, you can’t use any of your special senses, such as darkvision, unless your new form also has that sense. You are limited in the actions you can perform by the nature of your new form, and you can’t speak, cast spells, or take any other action that requires hands or speech. Your gear melds into the new form. You can’t activate, use, wield, or otherwise benefit from any of your equipment.
---
!!Ранг 3
!!!Savage Tactics
<<<
Your own savagery in the presence of a prostrated foe influences your allies as well.
<<<
While you are within 5 feet of a prone enemy, you and your allies gain a bonus on damage rolls against that enemy equal to your proficiency bonus.
---
!!Ранг 4
!!!Circle the Prey
<<<
You stalk around your enemy, searching for an opening to make a killing blow.
<<<
//Rank 4 Rite • Evocation, Offensive, Weapon (Recharges on a long rest) //
When you take the attack action on your turn, before one of the attacks, you can move a number of feet equal to your proficiency bonus multiplied by 5 without provoking opportunity attacks. If you do so, the next time you hit a creature with a melee weapon attack before the end of your turn, your attack deals an extra 1d10 damage, and the target begins bleeding. The target must also succeed on a Strength saving throw or be knocked prone.
While bleeding the target takes 2d4 necrotic damage at the start of each of its turns. The target or a creature within 5 feet of it can use an action to make a DC 15 Wisdom (Medicine) check to stop the bleeding.
This rite’s bonus damage increases when you reach 5th level (2d10), 11th level (3d10), and 17th level (5d10).
This rite's necrotic damage from the bleeding effect increases when you reach 5th level (2d6), 11th level (2d8), and 17th level (2d12).
<<<
Tonight, a full moon rises over the mountains. This is the night of the Lycan – my night.
— Moon Brother Stonestalker
<<<
Several legends tell of the blood moon, a night, or sometimes a season, when the Primal Beast stalks the wilderness of the world in physical form. During the blood moon, the predators of the world are said to be more dangerous and to have an insatiable hunger. According to some legends, the blood moon is a perversion of the world’s natural state, brought about by the gods or by the fierce response of the primal spirits to some violation of precepts. Whatever the cause and exact effects of the blood moon, some lycanthropes use these legends as a symbol for their own ferocious zeal in protecting the natural balance of the world.
You are a moonblooded, favoring your curse as a gift, and choosing to embrace it fully, making it a part of who you are. You take pride and pleasure in fighting without conscious thought, drawing on bestial instinct and wisdom to guide your attacks upon prey. You are a fierce hunter, a silent stalker of the wilds, but you are also a crusader for the primal spirits, ensuring that neither gods nor primordials overstep the bounds set for them at the dawn of time.
Through the power of the blood moon, you and your spirit brothers, sisters, and ancestors are the custodians of the world.
''Werebear:'' Solitary hunters, werebears are occasionally found in small families and even more rarely in small communities. They often take up service with local foresters, serving as wardens and caretakers for old forests.
Werebear societies are often matriarchal, with the women making many of the day-to-day decisions about how to run the community. The largest, oldest males serve as enforcers and protectors of the settlement.
''Wereboar:'' Wereboars are usually solitary, preferring the quiet of the forest and marshlands to the dangers of "civilized" societies. A few choose to live in small groups. Wereboars are aware that some civilized races hunt their kind for sport, and this realization doubtless contributes to their terrible tempers. Despite these facts, some wereboars successfully enter the world of civilized people. These wereboars serve as powerful wardens for certain liberal-minded nobles; others gain reputation as fearsome rebels against oppressive powers.
''Wererat:'' Wererats live closer to their humanoid kin that most other lycanthropes. Like their rodent brethren, they have managed to find their own niche within the dark corners of society. Usually viewed as plague-carrying vermin, they have nonetheless proven to be among the most successful lycanthropes at blending their extensive colonies with the throngs of humankind. Whole warrens of a city are sometimes converted into wererat enclaves. Although they are secretive and paranoid, wererats make fearsome enemies when provoked.
''Weretiger:'' Weretigers maintain an air of nobility, no matter how savage their tastes. Regal in bearing, these feline predators are among the most powerful of lycanthropes, and they accept no others as equals. They are a near match in strength to the mighty werebears, but they possess the tenacity of wereboars coupled with enough savagery to quell a pack of werewolves. Clannish but social, weretigers occasionally establish themselves as rulers in humanoid lands. They surround themselves with luxuries when possible but have no problem living in the wild.
''Werewolf:'' Werewolves are justifiably the most feared of the lycanthropes. Their predatory instincts are incredibly strong, and their savagery is legendary. But while many werewolves have slaked their thirst for blood upon mankind, many living among humans have managed to control their feral appetites and blend into society. Those who can subjugate their natural urges in this way are individuals of great inner discipline, and they often find themselves in leadership positions.
Werewolves sometimes line in small, remote village communities with others of their kind, where they exult in the union with their animal heritage. These secretive enclaves are hostile to strangers, and their members jealously guard the inner secrets.
''Moonblooded:'' Most lycanthropes are either born with the curse in their blood or they contract it in life. The moonblooded are something more. Through a ritual preformed during the blood moon, the moonblooded petition a visit from the Primal Spirit. It is believed that when the Primal Spirit deems a lycanthrope worthy, it elevates their curse to becoming a part of them.
Moonblooded cease to be considered cursed, and become in complete control. It is possible to find multiple types of lycanthrope living together as moonblodded brothers and sisters. All lycanthropes innately sense a moonblooded as having authority in all matters. To violate a moonblooded is to invite the wrath of the Primal Spirit, for it does not choose to bestow its blessing on those that are no worthy.
A moonblooded always receives a mark upon their body in the shape of the moon under which they were blessed.
''Adaptation:'' Lycanthropes are found in almost every prime world throughout the multiverse. So moonblooded can be found in those places as well. The most common place to find moonblooded is in the Feywild, where there are entire kingdoms of lycanthropes.
---
!!Лунокровный
| !Ранг | !Звание |!Умения |
| !1 | of the Crescent Moon |Warmth of Flame, Flame of Censure |
| !2 | of the Half-Moon |Purity of Silver, Purity of Spirit |
| !3 | of the Gibbous Moon |Bolstered by Flame, Warding Flame |
| !4 | of the Full Moon |Silver Flame Inspiration, Pierce Magic, Silver Inquisition, Silver Brand |
---
!!!Предварительные условия:
* ''Владение навыками.'' Природа.
* ''Особое.'' Должен быть заражен ликантропией и поклоняться божеству луны или природы.
---
!!Ранг 1
!!!Blood Moon Blessing
Your lycanthropy is no longer considered a curse, it is now a part of you and can no longer be cured with remove curse or similar magic, though it can still be lifted with a wish spell. You can no longer spread your curse and can also choose to not shift during a full moon.
This also weakens the magic. Your body and spirit need time to adjust to the changes. Make the following changes to the lycanthrope template:
* Your alignment is no longer dictated by your lycanthropy.
* Your damage immunity is reduced to damage resistance.
* //''Shapechanger''// requires a successful DC 15 Wisdom check, and when shifting out of hybrid form, you suffer 1 level of exhaustion due to the pain. Shifting to your true form does not require a check.
!!!Blood Moon Frenzy
<<<
With a fearsome roar, you strike at the enemies around you, dealing harsher wounds to those near death.
<<<
//Rank 1 Rite (Recharges on a short or long rest) //
As an action, make a melee weapon attack against any number of creatures you can see within 5 feet of you, with a separate attack roll for each target. On a hit, the target suffers the attack's normal effects, plus an extra 1d6 damage if the target is below half hit points.
---
!!Ранг 2
!!!Blood Moon Hunger
Once per round, when you reduce a creature to 0 hit points with a melee attack, you can spend a hit die to regain hit points.
!!!Hybrid Form
Exiting your hybrid form no longer causes exhaustion.
---
!!Ранг 3
!!!Master of the Moon
Shifting no long requires a Wisdom ability check.
!!!Savage Incarnation
<<<
Invoking the power in your blood, you become the primal aspect of your other self.
<<<
//Rank 3 Rite (Recharges at the start of your turn)//
As a bonus action, spend a hit die but do not regain hit points. For 1 minute, you size increases size (Small becomes Medium, Medium becomes Large), your speed increases by 10 feet, you gain +1 bonus on attack rolls and a +1d8 bonus on damage rolls.
You cannot speak or cast spells as the primal fury takes you, though you can maintain concentration on spells you have already cast.
---
!!Ранг 4
!!!Blood Moon Inspiration
When you spend an inspiration to gain advantage on an attack roll, you can make one additional melee weapon attack as part of the same action.
!!!Primal Stand
As an action, you can spend any number of hit dice as if you were going to regain hit points. Instead of regaining hit points, you gain that amount of temporary hit points.
!!!Frenzied Claws
While in your hybrid form, you can score a critical hit with your natural weapons on a roll of 19–20.
!!!Nature’s Grave
<<<
One of you will not walk away from this fight.
<<<
//Rank 5 Rite (Recharges on a short or long rest) //
When you hit a creature with a melee weapon attack and you or the target are below half hit points, your attack deals an extra 12d10 damage. You leap at the enemy in a furious attack.
[img width=400 class="centerme" [https://i.imgur.com/sgo3z9E.png]]
<<tabs "[tag[Людоящер - описание]]" "Описание людоящеров" "$:/state/tab1">>
[img class="centerme" [https://i.imgur.com/hdpD9dc.png]]
Людоящеры-аспиды - самые маленькие представители людоящеров, известные своей способной изменять окрас кожей. Они предпочитают скрытность и быстрые нападения из засады открытым сражениям, и являются мастерами камуфляжа и применения ядов. Используя и то и другое со смертоносным эффектом, людоящеры-аспиды получают удовольствие от терпеливого выслеживания своей добычи. Их решимость непоколебима - поставив перед собой задачу, они сосредотачивают всё своё внимание на том, чтобы добиться цели. Аспиды обитают в укромных местах и охраняют секрет расположения своих жилищ ценой своей жизни. Они не делают различий между нарушителями их границ, каждый вторженец погибает одинаково.
|!Особенность |!Описание |
|^Размер |^Рост людоящеров-аспидов варьируется между 90 и 120 см, а вес от 30 до 45 кг. Ваш размер — Маленький. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Аспид |^Вы владеете инструментами отравителя. Кроме того, частью продолжительного отдыха вы можете нацедить из собственных желез количество доз (100 г) яда, равное половине вашего бонуса мастерства. Вы можете действием покрыть одной такой дозой одно колющее или рубящее рукопашное оружие, либо три боеприпаса. Существо, по которому попадает атака отравленным оружием или боеприпасом получает 1к4 урона ядом. Урон от яда увеличивается до 1к6, когда вы достигаете 6 уровня, и до 1к8, когда вы достигаете 14 уровня. Нанесённый яд эффективен 1 минуту, после чего высыхает. |
|^Пронырливость |^Вы можете проходить сквозь пространство, занятое существами, чей размер больше вашего. |
|^Смена окраса |^Вы способны изменять окрас своей чешуи и выделять маслообразную субстанцию, которая реагирует на пигментацию вашей чешуи. Нанесение этой субстанции на одежду или доспехи, позволяет им изменять цвет, аналогично вашей чешуе. Вы можете предпринять попытку спрятаться, прижавшись к твёрдой поверхности, которая своими размерами не меньше вас, даже если вы при этом находитесь на виду. Если вы пытаетесь спрятаться вне сражения и при этом не перемещаетесь, и не совершаете действий, вы совершаете проверку Ловкости (Скрытность) с преимуществом. |
|^Хищник |^Вы владеете навыком Выживание. Вы совершаете проверки Мудрости (Выживание) с целью обнаружения следов и охоты на дичь с преимуществом. |
|^Ядовитая пасть |^Ваши когти и зубы не так сильны, как у ваших более крупных сородичей, но специальные железы в вашей пасти способны вырабатывать сильный яд. Вы можете совершать своими ядовитыми зубами безоружные атаки. Когда вы атакуете ими, вы наносите 1к6 + ваш мод. Силы урона ядом, вместо обычного для безоружной атаки дробящего урона. |
[img width=280 class="centerme" [https://i.imgur.com/uk7RN6B.png]]
Людоящеры-острозубы - самые многочисленные, изобретательные и сфокусированные на выживании представители людоящеров. Некоторые называют их трусливыми оппортунистами, но они лишь оценивают ситуацию с расчётом на самый высокий шанс выживания.
Являясь более цивилизованными представителями своей расы, людоящеры-острозубы
обитают в крупных водоёмах или болотах, либо кочуют по равнинам верхом на динозаврах. Сельскому хозяйству они предпочитают охоту и рыбалку, а глиняным хижинам - вигвамы.
Многие племена острозубов сформировали крепкие дружественные отношения со своими соседями-нелюдоящерами. Другие гуманоидные расы называют этот вид "высшими людоящерами" за их способность понимать чужие эмоции и наличие своего кодекса чести.
|!Особенность |!Описание |
|^Размер |^Рост людоящеров-острозубов варьируется между 180 и 210 см, а вес от 80 до 120 кг. Ваш размер — Средний. |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Голодная пасть |^В сражении вы можете впасть в неистовство голодного хищника. Бонусным действием, вы можете совершить специальную атаку укусом. Если атака нанесла урон, то урон наносится как обычно для укуса, а, если цель - живое существо из плоти и крови, вы получаете временные хиты равные нанесённому урону. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Земноводный охотник |^Ваша скорость плавания равна вашей скорости ходьбы, и вы можете задерживать дыхание на 15 минут. Кроме того, вы совершаете проверки Ловкости (Скрытность), находясь под водой, с преимуществом. |
|^Зубы и когти |^У вас есть зубы и когти, которыми вы можете совершать безоружные атаки. Когда вы атакуете ими, вы наносите 1к6 + ваш мод. Силы рубящего урона для когтей, либо колющего урона для зубов, вместо обычного для безоружной атаки дробящего урона. |
|^Природная интуиция |^Благодаря мистической связи с природой, вы получаете владение двумя из следующих навыков на ваш выбор: Внимательность, Выживание, Медицина, Природа, Скрытность или Уход за животными |
[img width=400 class="centerme" [https://i.imgur.com/h6tBqpo.png]]
Людоящеры-чернобрюхи - самые крупные, сильные и агрессивные представители людоящеров. Племена чернобрюхов активно пытаются расширять свою территорию, убивая всех, кто пытается этому препятствовать. Они совершают вылазки под покровом ночи, полагаясь на своё врождённое сумеречное зрение. Челюсти людоящеров-чернобрюхов сжимают попавшихся в них несчастных словно тиски и обладают достаточной силой, чтобы разорвать жертву на части. Чернобрюхи не терпят использование хитрых уловок и ловушек, считая, что эти приёмы годятся только для мелких слабаков. Вместо этого они предпочитают бить сильно и сильно.
|!Особенность |!Описание |
|^Размер |^Рост людоящеров-чернобрюхов варьируется между 210 и 250 см, а вес от 140 до 200 кг. Ваш размер — Средний. |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 1. |
|^Зубы и когти |^ У вас есть зубы и когти, которыми вы можете совершать безоружные атаки. Когда вы атакуете когтями, вы наносите рубящий урон, равный 1к6 + ваш мод. Силы, вместо дробящего урона, обычного для безоружного удара. Атаки вашей зубастой пастью следуют тем же правилам, что и когти, но наносят колющий урон, равный 1к8 + ваш мод. Силы. |
|^Мёртвая хватка |^Вы можете совершать особую атаку [[Захват|Захват]], используя свою пасть вместо свободной руки. Пока вы удерживаете цель в захвате таким образом, вы совершаете броски атаки укусом по ней с преимуществом, но не можете использовать укус против других целей. |
|^Мощное телосложение |^Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом. |
|^Сумеречное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
<<<
My blood courses with arcane power, as you are about to see.
— Cotter Maggin the Bloody
<<<
You have learned to combine blood with arcane formulas to cast more powerful spells—your own blood. Your blood is your life, but it is also your source of power. Few mages step upon this path to arcane mastery, because it is a path steeped in pain and soaked in blood. But you have embraced the way of blood and magic, and you have become more powerful because of it.
''Blood Magi in the World:'' Death is the ultimate risk that spellcasters, like all adventurers, must contend with. Some are cut down before they have a chance at true glory; others find true peace only in the afterlife; and others are brought back from death by companions with the powerful magical resources to perform such a miracle. For a rare few such arcanists, this trip to the great beyond and back brings a new enlightenment—a comprehension of the body and its individual parts that transcends the understanding of those who have not experienced death and returned to tell the tale.
These newly raised spellcasters say that the first sound they hear upon returning to life is the pulse of life-giving blood in their veins. To these fortunate few, this flow of blood through their veins is sweet music: the sound of life. They can feel it reenergizing every particle of their form, flushing death away and leaving life in its place. It is thick and warm, and they greedily embrace it.
Such arcane spellcasters become blood magi: formerly deceased spellcasters who, when returned to life, gain an understanding of their blood’s importance, bequeathed by their close call. They learn to evoke magic from this vital fluid that sustains their lives. Blood magi cannot be trained, owing to the unusual nature of their enlightenment, and they are most likely to have first been sorcerers.
NPC blood magi are thus rarely, if ever, found in groups. They are more likely to be thinly scattered throughout a region’s spellcaster population.
''Adaptation:'' A twist on the blood magus as presented here would be to tie the path to some deity or entity. Whenever the blood magus works their blood magic, they also give blood sacrifices to the deity or entity so named, and it is through this bloody patron that the blood magus powers their magic.
---
!!Маг крови
| !Ранг |!Умения |
| !1 |Blood Component, Blood Pulse |
| !2 |Durable Casting, Scarification |
| !3 |Bloodseeking Spell, Soul Burn |
| !4 |Bloody Inspiration, Bursting Blood, Bloodwalk, Destructive Salutation |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое, кроме законно-доброго.
* ''Заклинания.'' Способность сотворять хотя бы одно заклинание из списков заклинаний Барда, Волшебника, Колдуна или Чародея.
* ''Особое.'' Персонаж должен был быть убит и возвращён к жизни.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Blood Component
You can substitute a drop of your own blood for a spell’s material components, if any, and in so doing increase the spell’s power. The pinprick or minor knife cut to draw the requisite blood can be used with the same hand that casts the spell (just like using material components from a pouch). Using this ability deals 1 point of damage to you and grants a +1 bonus on spell attack rolls made with the spell and to the save DC of the spell. This bonus increases at rank 3 (+2), and rank 4 (+3).
If a spell has a material component listed with a cost, the component must still be provided. If a spell has no material component, you can still use this ability to enhance the spell if you desire.
The damage you deal to yourself from this ability cannot be reduced or mitigated in any way.
!!!Blood Pulse
<<<
A mote of crimson plasma springs from your hand, streaks across the battlefield, and detonates amid your enemies, covering them in a blood-red shroud.
<<<
//Rank 1 Incantation (Recharges on a short or long rest) //
As an action, choose any number of creatures in a 15-foot radius sphere centered on a point you can see within 100 feet. Each target must make a Constitution saving throw against your spell save DC. On a failed save, a target takes 2d6 necrotic damage, and until the end of your next turn the target takes 1d4 necrotic damage for every 5 feet it travels. On a successful save, a target takes half as much damage and does not take damage while moving.
---
!!Ранг 2
!!!Durable Casting
<<<
You have a knack for being able to concentrate on casting spells and maintaining them despite taking damage while doing so.
<<<
For the purpose of making a Constitution saving throw maintain concentration on a spell when you might be distracted by damage, you lower the concentration save DC by a number equal to twice your rank in blood magus.
For example, if struck for 30 points of damage while concentrating on a spell, a rank 2 blood magus must make a Constitution saving throw with a DC of only 11. 30 divided by 2 = 15 - 4 (twice their ranks in blood magus) = 11.
Because of this ability, damage you take from using your blood component and bloodseeking spell path features never requires you to make a Constitution saving throw to maintain concentration.
!!!Scarification
You can inscribe spells on your own skin for later use. This process involves deeply scratching your skin (which deals no damage but often leaves scars). The scratches remain fresh until the inscribed spell is cast, at which time the wound heals normally. You can scribe any spell you know into your skin the same as a Wizard scribe spells into their spellbook.
All rules and costs associated with scribing a new spell into a Wizard's spellbook apply to this ability. Likewise, "reading" a scar follows the same rules as reading a scroll, but only you can decipher your own scars. You can only have a number of these scars at any one time equal to your ranks in blood magus.
---
!!Ранг 3
!!!Bloodseeking Spell
You can imbue your damaging spells to draw blood from their targets. To use this ability, you must inflict a wound on yourself, this is exactly the same as your blood component ability, but it deals 3 damage instead of 1.
A bloodseeking spell deals an extra 1d8 damage to each target that takes damage from the spell. Most constructs, elementals, oozes, plants, undead, and any creatures without blood or a similar substance within their bodies are immune to this effect. Some creatures like flesh golem and vampires that still have blood within them are not immune to this effect.
!!!Soul Burn
<<<
You trade some of your vitality for more arcane power.
<<<
//Rank 3 Incantation (Recharges on a long rest) //
As a bonus action, you can spend a hit die and regain no hit points. Instead, you regain the use of one spell slot. The spell slot must be of a level that is equal to or lower than your ranks in blood magus. (Warlocks do not suffer this restriction).
---
!!Ранг 4
!!!Bloody Inspiration
When you spend an inspiration to gain advantage on an attack roll with a spell and that attack hits, one target takes 2d8 necrotic damage at the start of each of its turns. The target can make a Constitution saving throw against your spell save DC at the end of each of its turns, ending the effect on a success.
!!!Bursting Blood
When you are dealt a critical hit, enemies within 50 feet of you who can see you take psychic damage equal to 1d12 + your Constitution modifier.
!!!Bloodwalk
<<<
At rank 4, you become perfectly attuned to the song of blood. You gain the ability to transport yourself great distances via the blood of living creatures.
<<<
As an action, you can seamlessly enter any living creature with blood or a similar fluid whose size equals or exceeds your own and pass any distance to another living creature on the same plane in a single turn, regardless of the distance seperating the two. You merely designate a direction and distance (“a living creature twenty miles due west of here”), and the bloodwalk ability transports you to a destination creature as close as possible to the desired location. You can’t specify a named individual as the endpoint unless you have previously obtained a sample of that creature's blood and has preserved it in a vial that you carry.
The entry and destination creatures need not be familiar to you. You cannot use yourself as an entry creature. If an intended entry creature is unwilling, you must make a successful unarmed attack to enter. (A missed attack does not use up the ability.) When exiting a creature, you choose an unoccupied space within 5 feet of the creature in which to appear. Entering and exiting a creature is painless unless you wish otherwise (see below). In most cases, though, the destination creature finds being the endpoint of a magical portal surprising and quite unsettling.
If you desire, you can attempt to make a blood exit from the destination creature. You burst forth explosively from the creature's body, dealing 8d10 points of necrotic damage unless the target succeeds on a Constitution saving throw against your spell save DC, in which case, the target takes no damage. When you make a bloody exit, you must succeed on a Constitution saving throw against your spell save DC or be stunned until the start of your next turn from the shock of your explosion.
!!!Destructive Salutation
<<<
You greet your enemies with a psychic wave that scrambles their minds and leaves them stunned.
<<<
//Rank 5 Incantation (Recharges on a long rest)//
As an action, choose any number of creatures in a 15-foot sphere centered on a point you can see within 100 feet. Each target must make a Wisdom saving throw against your spell save DC. On a failed save, a target takes 4d6 psychic damage, and is stunned for 1 minute. On a successful save, a target takes half as much damage, and is not stunned.
While stunned, the target takes 2d12 psychic damage at the start of each of its turns. A stunned target can repeat the saving throw at the end of each of its turns, ending the effect on a success.
<div class="tc-table-of-contents">
<<toc-selective-expandable "Магические предметы">>
</div>
<<tabs "[tag[Магическая традиция]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
У чернил много применений, но в ремесле в основном используются магические чернила, способные удерживать арканные слова свитков. Эти чернила синтезируются алхимиками из магических свойств реагентов, а поскольку речь идет об извлечении их магических свойств, характер используемых реагентов не влияет на конечные чернила, кроме как на их редкость.
Магические чернила обычно не находят и не собирают, хотя их можно найти в качестве трофея, а в некоторых случаях Мастер может решить, что кровь, собранная с исчадия, небожителя или дракона, может быть приравнена к ним. Как правило, они создаются из реагентов или покупаются у алхимиков, которые создают их из реагентов.
Магические чернила не могут быть повторно использованы, если они были объединены в другую форму (например, зелья, эссенции или чернила).
Принято считать, что порция магических чернил весит 0.1 кг (0.2 кг с учётом веса флакона).
Вы — существо тени, потому что ваша врождённая магия исходит из самого Царства Теней. Вы могли бы проследить свою родословную до сущности из этого места, или, возможно, вы подверглись воздействию её беспощадной энергии и преобразованы ею.
Сила теневой магии накладывает странный отпечаток на ваше физическое присутствие. Искра жизни, которая поддерживает вас, приглушена, как будто она изо всех сил пытается противостоять тёмной энергии, пропитавшей вашу душу. Вы можете самостоятельно выбрать причуду для вашего персонажа или определить её случайным образом по таблице ниже.
| !к6 |!Причуда |
| 1 |Вы всегда холодны на ощупь. |
| 2 |Когда вы спите, кажется, что вы не дышите (хотя вам все равно необходимо дышать, чтобы жить). |
| 3 |Вы почти не истекаете кровью, даже при тяжёлых ранениях. |
| 4 |Ваше сердце бьётся один раз в минуту. Этот стук иногда удивляет вас. |
| 5 |У вас есть проблема с тем, чтобы вспомнить, что к живым существам и трупам следует относиться по-разному. |
| 6 |Вы моргнули. Один раз. На прошлой неделе. |
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Иллюзии или Некромантии.
| !УЧ |!Заклинания |
| !1 |//вызов страха//, //иссушающий укол//, //маскировка// |
| !3 |//бесследное передвижение//, //луч слабости// |
| !5 |//покров духов//, //призыв порождения теней// |
| !7 |//мираж//, //облачение тени// |
| !9 |//поток негативной энергии//, //сотворение// |
//УЧ - Уровень чародея//
---
!!! [img[1.png]] Глаза тьмы
Вы получаете [[ночное зрение|Зрение и свет]] радиусом 40 м.
Когда вы достигаете 3 уровня в этом классе, вы изучаете заклинание //тьма//, которое не учитывается при подсчёте известных вам заклинаний чародея. Кроме того, вы можете сотворить его, потратив 2 очка чародейства. Если вы сотворяете его за очки чародейства, вы можете видеть сквозь тьму, созданную этим заклинанием.
---
!!! [img[1.png]] Сила могилы
<<<
Ваше существование в сумеречном состоянии между жизнью и смертью понижает ваши шансы на поражение.
<<<
Когда урон опускает ваши хиты до 0, вы можете совершить спасбросок Харизмы (Сл 5 + полученный урон). В случае успеха ваши хиты вместо этого опускаются до 1. Вы не можете использовать это умение, если ваши хиты опущены до 0 уроном излучением или уроном от критического удара.
Если вы преуспели в этом спасброске, вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[6.png]] Гончая дурного знамения
<<<
Вы научились вызывать воющее существо тьмы, преследующее ваших врагов.
<<<
Бонусным действием вы можете потратить 3 очка чародейства, чтобы магическим образом вызвать гончую дурного знамения, нацеливая её на одно видимое вами существо в пределах 24 м от вас.
Гончая появляется в выбранном вами незанятом пространстве в пределах 6 м от цели. Совершите проверку инициативы для гончей. В свой ход, она может перемещаться только к своей цели по самому прямому маршруту и может использовать свое действие только для атаки своей цели. Гончая может совершать провоцированные атаки, но только против своей цели. Кроме того, в то время как гончая находится в пределах 1 м от цели, цель спасброски против ваших заклинаний с помехой. Гончая исчезает, если её хиты опускаются до 0, если хиты её цели опускаются до 0, или через 5 минут.
---
!!! [img[14.png]] Теневая поступь
<<<
Вы способны переходить из одной тени в другую.
<<<
Когда вы находитесь в тусклом свете или темноте, бонусным действием вы можете магическим образом телепортироваться на расстояние до 24 м в видимое вами незанятое пространство, которое также находится в тусклом свете или темноте.
---
!!! [img[18.png]] Мрачная форма
Вы можете бонусным действием потратить 6 очков чародейства, чтобы магическим образом принять теневую форму. В этой форме вы получаете сопротивление ко всему урону, кроме урона силовым полем и излучением, и вы можете перемещаться через других существ и объекты, как если бы они были труднопроходимой местностью. Если вы завершаете ход внутри объекта, вы выталкиваетесь в ближайшее незанятое пространство и получаете 1к10 урона силовым полем за каждый пройденный метр.
Эта форма действует 1 минуту. Эффект заканчивается раньше, если вы [[недееспособны|Недееспособный]], если вы умираете, или если вы отмените его бонусным действием.
Выбравшие архетип Мастера боевых искусств, полагаются на техники, выработанные поколениями бойцов. Для такого воина сражение сродни академической задаче, и часто включает вещи, далёкие от боя, вроде кузнечного мастерства или каллиграфии. Не все воины способны впитать уроки истории, теорию и артистизм, отражённые в архетипе Мастера боевых искусств, но те, кто справился с этим, являются отлично подготовленными воинами, обладающими прекрасными навыками и знаниями.
---
!!! [img[3.png]] Боевое превосходство
Вы изучаете приёмы, использующие специальные кости, называемые Костями Превосходства.
//''Приёмы.''// Вы изучаете три приёма на ваш выбор. Большинство приёмов тем или иным образом усиливают атаку. Вы можете использовать только один приём для каждой атаки.
Вы изучаете ещё по два дополнительных приёма при достижении 7, 10 и 15 уровней этого класса. Каждый раз, когда вы получаете уровень, вы можете заменить один из уже изученных приёмов на новый.
[[Актуальный список приёмов|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=643283028]]
//''Кости Превосходства.''// У вас есть четыре Кости Превосходства - к8. Ваши приёмы расходуют Кость Превосходства при использовании, как указано в описании приёма, и вы не можете использовать приём, если все ваши кости уже израсходованы. Вы восстанавливаете все израсходованные Кости Превосходства после завершения короткого или продолжительного отдыха.
Вы получаете еще по одной Кости Превосходства при достижении 7 и 15 уровней в этом классе.
Ваша Кость Превосходства изменяется с ростом вашего уровня в этом классе. Она становится к10 на 10 уровне и к12 на 18 уровне этого класса.
//''Спасброски.''// Некоторые из ваших приёмов требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска приёма = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!! [img[3.png]] Ученик войны
Вы получаете владение одним [[инструментом ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[7.png]] Знай своего врага
Если вы потратили как минимум 1 минуту, наблюдая или взаимодействуя с другим существом вне боя, вы можете узнать некоторую информацию о его возможностях по сравнению с вашими собственными. Мастер сообщает вам, является ли это существо равным вам, превосходящим или уступающим по двум из следующих характеристик по вашему выбору:
* значение Силы
* значение Ловкости
* значение Телосложения
* Класс Доспеха
* текущие хиты
* общее количество уровней в классах (если таковые имеются)
* количество уровней в классе Воин (если таковой имеется)
---
!!! [img[15.png]] Неустанный
Если на момент броска инициативы у вас не осталось неизрасходованных Костей Превосходства, вы получаете одну.
<<<
That's no dragon – it's a slug, content to sleep on a pile of coins. See my power, the same power wielded by the dragon lords of ancient Arkhosia: I, my friend, am truly a dragon. I have mastered a study of magic that was ancient when your kind were barbarians at our feet.
— Ragnar the Red
<<<
In the early years of the world, the mightiest sorcerers were dragons, powerful spellcasters who used the elemental magic churning in their blood to create devastating spells that cemented their hold over vast empires. Even as recently as the dragonborn empire of Arkhosia, dragons were the exemplars of the draconic sorcerer's path. In the present age, however, few dragons practice the art that their ancestors created.
Your path follows in the ancient footsteps of the greatest sorcerers the world has ever known, drawing on the traditions preserved from Arkhosia's dragon lords and the sorcerers before them, back almost to the beginning of the world. The steps along this path represent an increasing attunement to the draconic energies in the initiate's being. Wielding the same power as the dragons of old, you inure yourself to the dangers of battle, making your mere presence a threat to your foes as you wreathe yourself in flames or lightning, acid or poison, cold or thunder, according to the nature of the draconic magic in your blood. Your dragon breath is another spell in your arsenal, and when you use spells that create the same elemental force as your breath, you demonstrate mastery over the magic that powers them. The dragons of old are alive in your soul, and their power is yours to command.
''Dragonsoul Masters in the World:'' Dragonsoul masters are mages who seek both arcane mastery and spiritual awakening. Walking a path that will lead them toward arcane perfection as the scholars of Arkosia understood it.
Dragonsoul masters are often hermits, prefering seclusion where they can study in peace, only venturing out to find relics and treasure that will aid in their studies. They’re likely to earn extra money as a sage or court magus, as long as it doesn’t interfere too much with their studies. Sometimes tales of a dragon in a cave on the mountain might just be a dragonsoul master who has lived up there a long time. Their blasts for elemental energy being mistaken for the breath of a dragon is not uncommon.
''Dragonsoul Master PCs:'' Draconic bloodline sorcerers are the most likely class to walk the path of the dragonsoul master. Any dragonborn might choose to pursue it in honor of their ancient empire, focusing on their own ancestry. Very rarely, half-dragons also choose this path, allowing them to become a bit more like a full dragon. Bards, warlocks, and wizards are also known to follow this path. Martial classes such as barbarians and rangers are more common in this path than fighters and rogues. The barbarian might already possess some supernatural abilities, possibly because of the dragonsoul attached to them, or a ranger who feels an affinity for dragons might try and be more like them.
''Adaptation:'' Ancient Arkosia is just an example of an empire they could be based in. In Dragonlance it would be Draconians. Really, you can base the dragonsoul masters in any dragonborn society, or just make them a mysterious and enigmatic cult if you don’t like having dragonborn at all in your setting.
---
!!Мастер драконьего духа
| !Ранг |!Умения |
| !1 |Breath Expertise, Draconic Inspiration, Breath of the Dragon Soul |
| !2 |Draconic Durability, Dragon Breath Inspiration, Countering Breath |
| !3 |Dragon Soul Resistance, Dragon’s Revenge |
| !4 |Dragon Tempest, Veil of the Dragon |
---
!!!Предварительные условия:
* ''Владение навыками.'' Магия.
* ''Заклинания.'' Способность сотворять одно заклинание чародея 1 уровня или выше.
* ''Особое.'' Требование к заклинаниям не обязательно выполнять, если персонаж драконорождённый или принадлежит к схожей расе
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Харизмы (на ваш выбор)
```
---
!!!Драконий дух
You possess a dragonsoul. Choose a color to associate your dragonsoul with, which will inform the damage type of your incantations and resistance granted by other features.
|!Дракон |!Вид урона |
|Белый или Серебряный |Холод |
|Бронзовый или Синий |Электричество |
|Зелёный |Яд |
|Золотой, Красный или Латунный |Огонь |
|Медный или Чёрный |Кислота |
|Аметистовый |Силовое поле |
|Изумрудный |Психическая энергия |
|Кристальный |Излучение |
|Сапфировый |Звук |
|Топазный |Некротическая энергия |
---
!!Ранг 1
!!!Breath Expertise
Your breath weapon and the incantations granted by this path are considered spells belonging to each of your spellcasting classes. If you are wielding a focus that would benefit a spell you cast, or have a class feature that applies to your spells, you can apply those benefits to your breath weapon and dragonsoul incantations.
!!!Draconic Inspiration
When you spend an inspiration for any reason, you also gain a number of temporary hit points equal to your level.
!!!Breath of the Dragonsoul
<<<
You exhale a mighty blast of elemental essence.
<<<
//Arcane Incantation (Recharges on a short or long rest) //
As an action, you breathe elemental energy in a 25-foot cone originating from you. Each creature within the cone must succeed on a Dexterity saving throw or take 2d6 damage of a type based on your Dragonsoul.
The damage of this incantation increases when you reach 5th level (4d6), 11th level (6d6), and 17th level (8d6).
---
!!Ранг 2
!!!Draconic Durability
You gain two special bonus hit dice, which are d8s. You always regain both of these dice at the end of a long rest in addition to the normal number of hit dice you would regain. Your maximum hit points are not affected.
!!!Dragon Breath Inspiration
When you spend an inspiration to gain advantage on an attack roll, you can also use your breath weapon as part of that same action, even if it not recharged.
!!!Countering Breath
<<<
As your foe unleashes a blast of elemental power, you release your own, subtly altering your breath to negate your enemy’s effect.
<<<
//Arcane Incantation (Recharges on a short or long rest)//
As a reaction, when an enemy targets you with a cone, cube, or similar effect that targets multiple creature within a radius and deals the same damage type as your Dragonsoul, you can exhale in a 15-foot cone originating from you. If you do so, you and each within your cone automatically succeed on their saving throws against the effect, and they take no damage if they would normally take half damage on a successful save.
---
!!Ранг 3
!!!Dragonsoul Resistance
You gain resistance to a damage type based on your Dragonsoul. If you already have resistance to that damage type from your Draconic Ancestry racial feature, half-dragon Resistance, the resistance you can gain using a sorcery point from your Elemental Affinity class feature, or similar draconic source that your DM approves of, it becomes an immunity to that damage type instead of resistance. In the case of Elemental Affinity, you gain resistance all the time, but when you spend the sorcery point on Elemental Affinity you gain an immunity to that damage type instead of resistance while that feature is active.
!!!Dragon’s Revenge
<<<
Elemental power surrounds you and lashes out at those who attack you.
<<<
//Arcane Incantation (Recharges on a long rest)//
As a bonus action, you are surrounded by elemental power for 1 minute. While surrounded, when any enemy hits or misses you with an attack, that enemy takes 2d4 damage of a type based on your Dragonsoul.
The damage of this incantation increases when you reach 5th level (2d6), 11th level (2d8), and 17th level (2d12).
---
!!Ранг 4
!!!Dragon Tempest
<<<
Your exhalation of elemental energy transforms into a swirling vortex of power.
<<<
//Arcane Incantation (Recharges on a long rest)//
As an action, you exhale a vortex of energy in a 25-foot cone originating from you. Each creature within the cone must succeed on a Dexterity saving throw or take 2d6 damage of a type based on your Dragonsoul.
Additionally, the energy forms into a 20-foot radius sphere centered on a point within the cone that lasts for 1 minute. The first time a creature enters the sphere on its turn or starts its turn there, it takes 2d4 damage of the same type as the initial cone. As a bonus action, you can move the sphere up to 15 feet.
You must concentrate on this incantation as if concentrating on a spell.
The damage this incantation deals increases when you reach 5th level (4d6 on a failed save and 2d6 in the sphere), 11th level (6d6 on a failed save and 2d8 in the sphere), and 17th level (8d6 on a failed save and 2d12 in the sphere).
!!!Veil of the Dragon
<<<
Elemental forces in the form of a dragon hover around you as you slash your foes with claws of magic.
<<<
//Arcane Incantation (Recharges on a long rest)//
As an action, you conjure elemental forces to take the form of a dragon surrounding you. Each creature within 15 feet of you must succeed on a Dexterity saving throw or take 2d6 damage of a type based on your Dragonsoul.
Additionally, for 1 minute, any creature that makes a melee attack against you takes 3d4 damage. Until this incantation ends, you can use an action on your turn to force each creature within 15 feet of you to succeed on a Dexterity saving throw or take 2d6 damage of the same type as the initial saving throw.
You must concentrate on this incantation as if concentrating on a spell.
The damage of this incantation deals increases when you reach 5th level (4d6 on a failed save, and 3d6 when attacked), 11th level (6d6 on a failed save, and 3d8 when attacked), and 17th level (8d6 on a failed save, and 3d12 when attacked).
<<<
See how the dagger dances along my fingertips, see it spin. I have forgotten more ways to use this dagger than you can ever imagine.
— Daggermaster Enfys
<<<
Who is this fool who dares to challenge you in the arena? You brandish a greatsword, and they whip out a dagger. You unsheathe your longsword, and they throw off their armor. You advance menacingly, and they only smile at you - a big, maniacal grin. Are they mad? Do they have a death wish? No, the are a daggermaster, and you have made the classic mistake of underestimating their prowess. As you fight, they seem almost relaxed, stepping lightly to the side, dodging your blows easily. Their eyes note your every move, as though taking mental notes about your style. Then, in the split second when you lower your guard, they exploit your error, plunging their weapon into your heart.
You and your dagger become one as you master the intricacies of battleing with the blade. You are a master of the dagger, able to employ your weapon in ways that no lesser warrior can match.
''Daggermasters in the World: ''Daggermasters are deadly warriors who prefer to use dagger and related weapons in combat. Their training and techniques with these weapons make them just as lethal as any well-armed fighter. Daggermasters enjoy cultivating misconceptions about the level of danger they present, and they relish any chance to demonstrate that the most unimposing weapons can be the most lethal. Thus, daggermasters are rarely impressed by how mighty their opponents appear.
A daggermaster specializes in fighting with the dagger or similar weapon. They are not penalized for using other weapons with which they are proficient, but every path ability is tied into using one of these weapons.
The typical daggermaster was once a rogue, whose sneak attack class feature dovetails nicely with the features of this prestige path. Bards and monks are also good candidates, as are barbarians, fighters, and rangers who are willing to exchange their arsenals of weapons for a less cumbersome approach. Clerics and druids seldom choose this path, perceiving its members as faithless, while paladins ironically view daggermasters as too self-absorbed. Sorcerers, warlocks, and wizards rarely become daggermasters because they don't appreciate the path's lack of offensive options and tight focus on weapon use.
NPC daggermasters are silently egotistical gladiators who regard their fighting style as superior to all other martial philosophies. They place enormous emphasis on making a single decisive strike, thereby hoping to end a bout in a single round. Most daggermasters puck up their skills in a guild. A few, however, learn from seasoned professionals who expect a potential gladiator to practice frantically with the dagger until they can pass the required rite-of-passage combat.
---
!!Мастер кинжала
| !Ранг |!Умения |
| !1 |Dagger Precision, Critical Opportunity |
| !2 |Dagger Sneak Attack, Unfettered Defense |
| !3 |Bleeding Wound, Meditation of the Blade |
| !4 |Daggermaster's Inspiration, Feint Mastery, Dagger Advantage, Deep Dagger Wound |
---
!!!Предварительные условия:
* ''Владение оружием.'' Кинжалы.
* ''Владение навыками.'' Обман, Проницательность.
* ''Особое.'' Кандидат должен победить достойного оппонента (ПО оппонента выше, чем уровень персонажа - 3), используя только кинжалы или схожее оружие.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Dagger Sneak Attack
You gain the rogue's sneak attack class feature as described in the Player's Handbook, but only when using daggers. Your sneak attack damage starts at 1d6 and increases to 2d6 at rank 3, and 3d6 at rank 4.
If you already possess the sneak attack class feature, the dagger sneak attack damage and normal sneak attack damage stack. So if you normally do 3d6 extra damage with sneak attack and you are a rank 3 daggermaster using a dagger, your sneak attack damage is 5d6.
!!!Critical Opportunity
<<<
Your first attack deals a critical wound, so you follow the attack with another strike.
<<<
//Rank 1 Exploit (Recharges on a short or long rest)//
As a bonus action, choose one creature you scored a critical hit against this turn using a dagger. Make one additional melee attack against the target using a dagger. On a hit, the target suffers the attack's normal effects plus an extra 3d10 damage.
---
!!Ранг 2
!!!Dagger Precision
You are adept at slipping your dagger into the most vulnerable areas of your any target. When you make an attack roll using a dagger, you can score a critical hit on a roll of 19-20, or 18-20 if the attack was made with advantage.
!!!Unfettered Defense
You benefit from an increased survival instinct during combat. Because of this sixth sense, while you are not wearing armor and are unencumbered, your AC equals 10 + your Dexterity modifier + your Intelligence modifier.
---
!!Ранг 3
!!!Bleeding Wound
Your dagger leaves a lingering impression on your foe. Once per turn, when you hit a creature with an attack and deal dagger sneak attack damage, you can forgo 1d6 of your dagger sneak attack to wound the target.
At the start of each of the wounded creature's turns, it takes 1d4 necrotic damage for each time you have wounded it. The wounds will close when the creature regains any number of hit points.
Alternatively, the wounded creature, or a creature within 5 feet of it, can use an action to make a Wisdom (Medicine) check against your exploit save DC, ending the effect of such wounds on it on a success.
!!!Meditation of the Blade
<<<
With a moment of concentration, you focus your will into the point of your blade.
<<<
//Rank 3 Exploit (Recharges on a long rest) //
As a bonus action, for 1 minute, you increase the damage of any dagger you wield by 1 die size. So if your dagger did 1d4 piercing damage, it now does 1d6 piercing damage.
---
!!Ранг 4
!!!Daggermaster's Inspiration
You become inspired by all of the openings in your opponent's defenses. You can spend an inspiration to make one additional attack with a dagger you are wielding instead of gaining advantage on a roll.
!!!Feint Mastery
While you are armed with a dagger, you become so sure of your ability to mislead opponents that you can use a bonus action on your turn to feint, choosing one creature within 5 feet of you as your target. Make a Charisma (Deception) check, if your d20 roll is lower than 10, you can treat it as a 10. If your check exceeds your opponent's passive Wisdom (Insight) score, you gain advantage on your next attack roll against that creature.
!!!Dagger Advantage
As your opponent slows and tires, your strikes quicken, coming from unseen angles. When you score a critical hit with a dagger, you gain advantage on all attack rolls against the target until the end of your next turn.
!!!Deep Dagger Wound
<<<
Your dagger springs forward, plunging deep into your foe.
<<<
//Rank 5 Exploit (Recharges on a long rest)//
When you hit a creature with a melee attack using a dagger, your attack deals an extra 3d10 damage, and the target begins bleeding. While bleeding, the target takes 2d12 necrotic damage at the start of each of its turns. If you scored a critical hit, the target takes 4d12 necrotic damage instead of 2d12. The target will continue to bleed until it, or a creature within 5 feet of it, uses an action to make a successful Wisdom (Medicine) check against your exploit save DC, or if the target receives any magical healing.
<<<
My blades thirst for blood.
— Rhaskana, Bloodclaw Secretkeeper
<<<
A bloodclaw master embraces the animal within to a degree that it becomes external, partially transforming him into the beast from which the discipline was inspired. He employs small, light weapons almost like claws.
Mastering bloodclaw rites builds your strength and hardiness, and your strikes shred enemies. You spring at your foes with astounding speed. With true mastery, you take on the characteristics of the celestial tiger. Course orange and white fur covers your body. Your hands become clawed paws and a tiger's visage replaces your features. With great green orbs for eyes and a mouth filled with sharp teeth, you embody the bloodclaw style.
''Becoming a Bloodclaw Master: ''This path favors those who prefer fighting with two light weapons. Most bloodclaw masters are fighters or rangers who have trained in a two-weapon fighting style. Monks also find their way onto this path naturally, having spent time learning to strike with fingers curled toward their palm to make a claw, transforming each digit into a rigid talon capable of raking and rending. Some barbarians also choose to embrace their inner beast, becoming a bloodclaw master after either taking a few fighter or ranger class levels or selecting the tavern brawler feat. A few rogues also consider this class, because fighting with two weapons offers more chances to sneak attack, making them especially deadly.
<<<
''Shifters and the Bloodclaw Master ''
A shifter character, from the EBERRON campaign setting, gains slightly different benefits from taking ranks in this path. The path’s shifting ability instead grants the shifter one additional shift per day at 1st and 5th ranks (but not rank 3), and the duration of the character’s racial shifting ability is increased by 1 round for each rank they takes in this prestige class. The PC is treated as having the razorclaw shifter trait for the purpose of meeting prerequisites (such as for other shifter feats).
<<<
''Playing a Bloodclaw Master: ''Like the tiger, you are aloof and proud, but quick to act when a situation demands it. Some mistake your demeanor for arrogance, but you know your attitude is more like patience. You seek to learn the details around a circumstance before offering your input. When you speak, you do so sagely, with confidence, even if you aren’t certain that you are actually correct. It is more important that others believe you are right, that you are infallible. Your patience is not infinite, however, and you are always eager to spring into action. Nothing bothers you more than spending a long period of time in a small, enclosed room with nothing to do and no one to kill. As you identify with your internal tiger, you adopt external ways of displaying your bond, perhaps by striping your arms or face with black soot or adorning yourself with jewelry fashioned from tooth and claw.
''Combat. ''Half of a battle occurs before the fight begins. You prefer to choose your battleground, to stalk your opponent into terrain that best suits your abilities. Once battle is joined, you become a frenzy of motion, striking quickly and at the most vulnerable target available, hindering your opponents’ ability to react. You lead with a charge, shifting along the way, to get yourself in position where your claws or your blades can deal the most damage. Taking advantage of your leaping skills, you jump to any available high ground to gain an upper hand.
''Bloodclaw Masters in the World.'' Bloodclaw masters are feral fighters that represent the purest form of the Tiger Claw discipline, at least in their own minds. They are a specialized extension of the martial practice, an example of how a character might embody the essence of a particular martial school. In the case of Tiger Claw, the followers of the discipline itself are fragmented and disorganized, and a bloodclaw master could just as easily be a valuable ally or a memorable foe.
''Organization.'' It is said that a mountain can be home to only one tiger. In ages past, the Tiger Claw martial school had many monasteries and fighting colleges, but now the former order is fractured and in shambles after many of the masters met their end following the destruction of the Temple of the Nine Swords and the death of the Tiger Lord. Now, masters of the Tiger Claw are few and far between. Although they show each other courtesy, many work against each other for their own petty ends. Bloodclaw masters are seen by the discipline’s masters as pawns they can use to gain personal power, and even while they provide training, they secretly plot to use their pupils against their rivals.
''NPC Reactions.'' The sometimes-outlandish appearance and marked standoffishness of bloodclaw masters tends to intimidate most people. Those who have significant knowledge of the martial paths give due respect to a bloodclaw master, but the reception by others depends on the venue. People in locales that adventurers frequent are more likely to be indifferent to a bloodclaw master, while those in more upscale environs tend to be unfriendly.
''Bloodclaw Master Lore.'' Characters can research bloodclaw masters to learn more about them. When a character makes an Intelligence (History) check, read or paraphrase the following, including the information from lower DCs.
''DC 5: ''Somehow, these people can turn in to tigers.
''DC 10:'' Bloodclaw masters are fierce two-weapon wielders in combat.
''DC15: ''They are masters of a martial discipline, known as the Tiger Claw, that allows them to channel an inner beast to briefly transform themselves into a form not unlike a tiger.
''DC 25:'' Characters who achieve this level of success can learn important details about a specific notable bloodclaw master, the areas where they operate, and the kinds of activities they undertake.
A character can attempt a DC 20 Intelligence (Investigation) check to locate a bloodclaw master, provided one is in the region. Alternately, they might attempt to locate a master of the Tiger Claw discipline, who could at least provide information and background on the bloodclaw master and the way of the beast. Doing so requires the master’s attitude to be helpful.
''Bloodclaw Masters in the Game:'' Bloodclaw masters epitomize the Tiger Claw discipline. A campaign that incorporates multiple martial schools can use bloodclaw masters to represent the more active members of the Tiger Claw school. Even a setting that is not entirely integrated with the martial classes could incorporate a bloodclaw master as a lone warrior.
The path appeals greatly to players fond of dual-weapon- wielding characters. The specialist, rather than the generalist, will find the bloodclaw master appealing.
''Adaptation:'' In the EBERRON setting, bloodclaw masters are typically shifters who use the teachings of Tiger Claw and the way of the bloodclaw master to bring themselves closer to their animalistic heritage. Groups of Tiger Claw adepts and bloodclaw masters share their martial knowledge in conclaves throughout the Eldeen Reaches.
<<<
''The Tiger Claw Discipline ''
The Tiger Claw discipline embraces a feral rage that lurks within the heart of its initiates. In battle, such warriors growl like wild animals, attack with a fury similar to that of a barbarian, and rely on overwhelming, vicious assaults to defeat their enemies. The Tiger Claw discipline’s favored weapons are the kukri, kama, handaxe, claw, greataxe, and unarmed strike. Its key skill is Athletics.
<<<
---
!!Мастер кровавого когтя
| !Ранг |!Умения |
| !1 |Bloodclaw Shifting, Bloodclaw Rake |
| !2 |Bloodclaw Synergy, Claws of the Beast |
| !3 |Eyes of the Tiger, Tiger Frenzy |
| !4 |Pouncing Inspiration, Rending Claws, Tiger's Endurance, Awaken the Celestial Tiger |
---
!!!Предварительные условия:
* ''Владение навыками.'' Атлетика.
* ''Особое.'' Одно из следующих: Боевые искусства монаха, боевой стиль Сражение двумя оружиями, либо черта Драчун.
---
!!Ранг 1
!!!Bloodclaw Shifting
As a bonus action, you can become more like a tiger by focusing your feral nature. You can enter a state that is superficially similar to a barbarian’s rage. While you are shifting, your appearance takes on tigerlike aspects: Your fingernails become more pointed and clawlike, the irises of your eyes become narrow, catlike slits, your ears grow more pointed, and so on. While shifting, you gain a +2 bonus damage rolls with melee weapons and you grow claws that can be deal piercing damage equal to 1d4 + your Strength modifier, instead of the bludgeoning damage normal for an unarmed strike. These claws count as light weapons for the purposes of two-weapon fighting.
This transformation lasts for 1 minute, until you die, or until you revert to your normal appearance as a bonus action.
Once you shift, you can’t do so again until you finish a short or long rest. At rank 3 and again at rank 5, you gain an additional use of your shifting ability before needing to rest.
!!!Bloodclaw Rake
<<<
You sprint across the battlefield, and your weapon tears your foe and leaves it in debilitating agony.
<<<
//Rank 1 Rite (Recharges on a short or long rest)//
As an action, you can move up to your speed plus 10 feet, ignoring difficult terrain. Any creature that hits you with an opportunity attack provoked by this movement takes slashing damage equal to your Strength modifier, and you mark the creature until the start of your next turn.
Until the end of your turn, you can take the attack action as a bonus action.
In addition, the next time you hit a creature with a melee attack using an unarmed strike or Tiger Claw weapon, the target takes an extra 1d10 damage, and suffers disadvantage on attack rolls until the end of your next turn. Additionally, if the target moves more than 10 feet on their next turn, they take an additional 1d10 damage of the same type as the attack that triggered this effect.
<<<
''Marking''
The marks referenced here refers to the combat variant of the same name from the Dungeon Master's Guide. If you don't want to use this combat variant, other options could include using a spell like hunter's mark, or a class feature like vow of emnity.
<<<
---
!!Ранг 2
!!!Bloodclaw Synergy
Whenever you hit a creature with a melee weapon attack using an unarmed strike or Tiger Claw weapon on your turn, you gain a +1 bonus to AC and your speed increases by 10 feet until the start of your next turn.
!!!Claws of the Beast
When you hit a target with the bonus action attack granted by two-weapon fighting or martial arts, your attack deals an extra 1d6 damage on a hit.
---
!!Ранг 3
!!!Eyes of the Tiger
Your eyes function better in darkness, as you adopt the senses of the tiger. You gain 30 feet of darkvision. If you already had darkvision, it increases by 30 feet.
!!!Bloodclaw Frenzy
<<<
Pain clarifies your mind, lessing you strike with ease at foes that come too close.
<<<
//Rank 3 Rite (Recharges on a long rest) //
As a reaction, when you are reduced below half hit, you enter the Bloodclaw Frenzy stance for 1 minute, until you enter a different stance, or end the stance (no action required). Until the stance ends, any enemy that ends its turn within 5 feet of you takes slashing damage equal to your Strength modifier. You cannot deal this damage if you are incapacitated.
---
!!Ранг 4
!!!Pouncing Inspiration
When you take the dash action on your turn, you can spend an inspiration. If you do so, until the end of your turn, your speed increases by 10 feet and your movement does not provoke opportunity attacks. In addition, you can make a single melee weapon attack with advantage as a bonus action until the end of your turn.
!!!Rending Claws
While you are shifting and attack with two unarmed strikes or two different Tiger Claw weapons and you successfully hit a target with both weapons on the same turn, the second weapon that hits deals an extra 2d10 damage.
!!!Tiger's Endurance
As a bonus action, you can spend one hit die. When you do so, roll the die. You regain hit points equal to your die roll + your Constitution modifier + your bloodclaw master rank. In addition, you gain a bonus to AC equal to 2 + your Strength modifier until the end of your next turn.
Once you use this ability, you can’t do so again until you finish a short or long rest.
!!!Awaken the Celestial Tiger
<<<
As you spring at your enemy, your body transforms into the celestial tiger—a relentless force of unearthly fury.
<<<
//Rank 5 Rite (Recharges on a long rest)//
As an action, you can take the dash action. Until the end of your turn, you can use a bonus action to make two melee weapon attacks using unarmed strikes or Tiger Claw weapons against one creature within reach. On a hit, the target suffers the attack's normal effects plus an extra 2d10 damage, and the target is knocked prone. If you hit with both attacks, the target takes 2d10 additional damage.
Additionally, you assume the aspect of the Celestial Tiger for 1 minute, until you fall unconscious, or until you end the aspect as a bonus action. Until the aspect ends, you are immune to fear effects, and whenever you take the attack action on your turn, you can make one additional melee weapon attack.
<<<
My blade is exquisite and deadly, as much a work of art as it is a weapon. And in my hands, it is unstoppable.
— Swordmaster Torc
<<<
You and your weapon are as one. You are a master of the sword, axe, maul, spear, able to employ your craft in ways that no lesser warrior can even imagine.
''Weaponmasters in the World:'' The weaponmaster focuses body, mind, weapon, and will. They devote their strength and their life to the service of a master or an ideal they accept as greater than themselves. Some weaponmasters become masters in their own right, but even one who becomes an emperor sees himself as a servant of some higher power.
Most characters who become weaponmasters aspire to the path from the beginning of their careers. Often, other weaponmasters or elite military organizations train likely young men and women in the principles of service, the arts of war, and the purity of mind and body necessary to become a weaponmaster. Even those who do not qualify at the end often become powerful adventurers.
''Adaptation:'' A weaponmaster can be a lone adventurer, serving an ideal or attempting to fulfill a lifetime goal. Some weaponmasters swear fealty to great lords and rise to become trusted bodyguards, warlords, or leaders in the lord’s service. Monks and paladins know the strenuous road a weaponmaster must travel, and some tread that path. Fighters value the might of the weaponmaster, and some clerics have been known to join their ranks. Few wizards or sorcerers achieve weaponmaster status, and bards and barbarians find themselves particularly unsuited to service as a weaponmaster.
While it might be thought that a rogue would make a poor weaponmaster, such characters are not unheard of and can be deadly adversaries.
---
!!Мастер оружия
| !Ранг |!Умения |
| !1 |Signature Weapon, Precision Cut |
| !2 |Steel Grace, Power Surge |
| !3 |Withstand, Fantastic Flourish |
| !4 |Inspiring Steel Defense, Instill, Steel Blitz, Crescendo Strike |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое законное.
* ''Умение класса.'' Дополнительная атака.
* ''Особое.'' Кандидат в мастера оружия должен принести присягу о службе.
<<<
''Oath of Service ''
A weaponmaster’s oath of service must be sworn in front of witnesses and must be upheld for the weaponmaster to continue advancing in ranks. Typical oaths include swearing service to a powerful lord, to an organization with the same goals of the weaponmaster, to the weaponmaster’s deity, or even to an ideal or principle the weaponmaster upholds.
A weaponmaster who breaks their oath, for whatever reason, loses access to their weaponmaster special abilities and must receive the atonement feature of the ceremony spell from a 9th level cleric of their alignment to get them back and to continue advancing in the weaponmaster path.
This dual requirement can pose a serious conundrum at times. If a lawful good weaponmaster swears service to a lord who then orders the weaponmaster to perform an evil act, the weaponmaster is caught between their oath and their alignment. They must violate one to fulfill the other, and either way they need to atone. If the weaponmaster chooses their alignment, they can break their oath, gain atonement, and swear a new oath (often one relating to “correcting” their former lord). They can then advance as a weaponmaster again. If the weaponmaster chooses their lord, they change alignment and must gain atonement from, in this case, an evil cleric.
''DM Note:'' The idea of the oath of service does not exist to punish a player who chooses to roleplay a weaponmaster, but to challenge that player. You should work with the player to come up with an oath that fits into your campaign—one that provides the player with roleplaying opportunities and you with a hook you can use to motivate the entire party.
<<<
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Signature Weapon
The weaponmaster chooses one of their weapons (it must be one for which they are proficient) to become a signature weapon. Most weaponmasters choose either a sword or spear for this weapon, but even a weaponmaster’s natural weapons can be chosen. If the weapon is a manufactured one, it must be of at least masterwork quality.
Upon qualifying for the path, a weaponmaster gains the ability to establish a link with their signature weapon. The character focuses part of their life energy on the weapon, making it more effective in their hands and their hands alone. The character must spend 24 hours attuning to the weapon.
When attuned to the signature weapon, it counts as magic for the purposes of overcoming damage resistance. It also gains a bonus on attack and damage rolls equal to one half the weaponmaster's ranks in this prestige path, rounded up. If the weapon is magic and already gains a bonus, use only the highest bonus between the two features.
''Masterwork Weapon Note.'' If you don't have rules for masterwork weapons in your campaign, my easy rule is that it costs 10x as much as normal.
!!!Precision Blow
<<<
You slip your weapon past an enemy's armor and strike your foe just so, leaving a bleeding wound.
<<<
//Rank 1 Exploit (Recharges on a short or long rest)//
When you hit a creature with a melee attack using your signature weapon, your attack deals an extra 3d10 damage.
---
!!Ранг 2
!!!Steel Grace
If you move at least 10 feet straight toward a target and then hit it with a melee attack using your signature weapon on the same turn, you can make one additional melee attack with the same weapon against that target.
!!!Power Surge
You can use a bonus action on your turn to make a DC 15 Constitution check. On a success, you gain a bonus Strength ability checks and Strength saving throws for 1 minute. This bonus equals one half of your proficiency bonus rounded down. Each time after the first that you successfully use this ability in a single 24-hour period, the check DC increases by 5.
---
!!Ранг 3
!!!Withstand
When you are subjected to an effect that allows you to make a Dexterity saving throw to take only half damage, you can make a Constitution saving throw instead of a Dexterity save. If you have evasion, shield master, or similar ability that applies on Dexterity saving throws, those benefits apply on this Constitution saving throw as well.
!!!Fantastic Flourish
<<<
With perfect timing, you flick one enemy's blood into the eyes of another.
<<<
//Rank 3 Exploit (Recharges on a long rest)//
As a bonus action, choose one enemy within 25 feet of you who has seen you hit one if its allies with an attack using your signature weapon within the last minute. Until the end of your next turn, the target suffers disadvantage on attack rolls against any creature other than you.
---
!!Ранг 4
!!!Inspiring Steel Defense
When you spend an inspiration to gain advantage on an attack roll, you also gain a +5 bonus to AC and Dexterity saving throws until the start of your next turn.
!!!Instill
As an action, you can touch one willing creature within reach and make a Constitution check DC 10 + the target's level (or CR if it doesn't have levels). On a success, you can transfer some of your power to the target. You subtract up to 3 points from the bonus to attack and damage you gain from your ''Signature Weapon'' path feature. The target gains those bonuses instead. While a target is instilled with your power, their melee weapon attacks become magical for the purposes of overcoming damage resistance.
You regain your instilled power 1 hour later, when it transfers back out of the target. If the target dies before the instilled power is transferred back, you must make a Constitution saving throw DC 10 + the target's level (or the target's CR if it doesn't have levels). On a failed save, you are reduced to 0 hit points. On a successful save, you immediately regain your instilled power.
!!!Steel Blitz
When you score a critical hit with your signature weapon, you regain the use of a martial exploit that recharges on a short or long rest.
!!!Crescendo Strike
<<<
With a tremendous roar, you swing your weapon over your head and make lunching strikes at all nearby enemies. At the end of the flurry, you regain some of your power.
<<<
//Rank 5 Exploit (Recharges on a long rest) //
As an action, make a melee attack using your signature weapon against any number of creatures you can see within your reach, with a separate attack roll for each target. On a hit, a target suffers the attack's normal effects plus an extra 7d6 damage.
For each target you hit with this exploit, you regain 1d12 hit points.
<<<
I’ve seen the things you never intended me to see, heard whispers meant only for your conspirators. I know you well enough to take you down.
— Spy Master Rodrick
<<<
In halls of power, on the field of battle, and even among those who seek what is long lost, reliable information is king. Those in the know have an advantage over their allies and enemies and readily know the difference between the two. Thus, have persons skilled in acquiring secrets always had ample work and reasons to hone their skills. Such agents learn how to conceal their true motivations and cover their tracks while focusing on attaining their goals. Any laps in precision can mean death.
Long ago, you learned how to sneak into places where you’re not welcome. No secret is safe from your expertise and trickery. Subterfuge is your stock-in-trade. You know how best to peer into the intentions of your enemies, and you work undercover with the greatest of ease. Most of your enemies never know that you are in their midst, and you always manage to turn their ignorance against them.
''Master Spies in the World:'' Some adventurers glory in their reputations—the wider their exploits are known, the happier they are. By contrast, the master spy prefers to avoid attention. They do their work quietly and in private, keeping well away from public scrutiny. To allay suspicions, they often maintain a cover identity by pretending to be a member of some other profession.
Master spies are rarely popular, but so long as nation distrusts nation there will be work for those who can gather information that others wish to keep hidden. Many a ruler who publicly claims to abhor master spies secretly employs a stable of them, if only to protect his own secrets from the master spies of other nations. This set of circumstances, plus the secrecy inherent in the profession of master spy and its high mortality rate, makes it impossible to determine how many master spies are active in a setting at any given time.
Rogues make excellent master spies because of their generous skill allotments and their propensity for sneakiness. Likewise, rangers have an edge when operating as master spies in outdoor surroundings. However, a character of any class can become a master spy—the more unlikely the combination may seem, the better the cover it provides. Some wizards and sorcerers use their spell ability as a cover for subterfuge, and some barbarians are far more subtle than they seem.
It’s important for a master spy to keep their personal emotions distinct from their professional attachments. They must be ready to liquidate someone they have come to like without a moment’s thought if so ordered. Betrayal is their business, and their loyalty is always to their mission, not to the people they encounter while carrying it out.
''Adaptation: ''Nearly undetectable and constantly covering their tracks, master spies are easily included in a campaign as single NPCs or villains. Master spies work best on their own or with a small group of adventuring companions of other classes, so incorporating them into a campaign doesn’t usually involve creating master spy specific organizations. Rather, master spies serve as the eyes and ears of many organizations. Organizations and guilds might make use of one or more high-level master spies to train other members, keep tabs on rival organizations, and undertake special missions not suitable for the talents of their regular members. Every kingdom has or wants as many master spies in its employ as possible, and many who have the talent for such work find themselves carefully watched and encouraged by agents of the crown.
---
!!Мастер шпионажа
| !Ранг | !Звание |!Умения |
| !1 | Informant |Inspiring Cover, Lingering Revelation |
| !2 | Agent |Deadly Bluff, Superficial Knowledge |
| !3 | Operative |Quick Change, Slippery Mind |
| !4 | Spymaster |Double Agent, Fool Casting, Assumption, Spymaster’s Edge |
---
!!!Предварительные условия:
* ''Владение навыками.'' Обман.
* ''Владение инструментами.'' Набор для грима.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Inspiring Cover
When you spend an inspiration, until the end of your next turn, you become lightly obscured, and can hide as a bonus action without needing to be heavily obscured.
!!!Lingering Revelation
<<<
Your surprising attack slashes open your foe, causing the enemy to leave a trail you easily follow.
<<<
//Rank 1 Exploit (Recharges on a short or long rest) //
When you hit a creature with a finesse or ranged weapon attack, your attack deals an extra 1d10 damage, and the target cannot turn invisible or become hidden until the end of your next turn.
In addition, you gain advantage on Wisdom (Insight) and (Percepetion) checks against the target for 1 minute.
---
!!Ранг 2
!!!Deadly Deception
As a bonus action, choose one creature within 5 feet of you who can see you. Make a Charisma (Deception) check against the target's passive Wisdom (Insight), you and your allies gain advantage on attack rolls against the target until the end of your next turn. You can use this ability a number of times equal to your Charisma Modifier (minimum 1). You regain all uses of this ability after you finish a short or long rest.
!!!Superficial Knowledge
A master spy gives the appearance of knowing more than they actually do. Starting at rank 2, you can add half of your proficiency bonus, rounded down, to any knowledge-oriented ability check you are not proficient in pertaining to your cover or assumed identity.
For example, if you were masquerading as a noblewoman you could make Intelligence (History) checks about the kingdom and about its noble and royal families as if you were proficient, but you could not make Wisdom (Nature) checks to identify herbs.
---
!!Ранг 3
!!!Slippery Mind
At rank 3, a master spy can slip away from mental control. If you are affected by an enchantment spell or effect and fail your saving throw, you can attempt it again at the start of your next turn at the same DC. You only get this one extra chance to succeed on your saving throw.
!!!Quick Change
<<<
Your cunning actions plant a seed of doubt. Are you friend or foe?
<<<
//Rank 3 Exploit (Recharges on a short or long rest)//
As a bonus action, choose one creature within 25 feet of you who can see you. Make a Charisma (Deception) check against the target’s passive Wisdom (Insight). If you succeed, the target considers you an ally for the purposes of auras, opportunity attacks, spells, and abilities until the end of your next turn or until you attack the target or its allies.
---
!!Ранг 4
!!!Double Agent
When an enemy you can see targets one or more of its allies with a spell or ability, you can use your reaction to gain the benefits of that spell or ability as if you were one of its allies as well.
!!!Fool Casting
You can trick an opponent into believing that you have been charmed or dominated. When you succeed at a saving throw against a magical effect that provides ongoing control (such as charm person, dominate person, or a vampire’s dominate ability), you can allow the spell to take partial effect. To the caster, it appears that you failed your saving throw, but you are not under the caster’s control. If the spell provides a telepathic link, it functions normally, but you are under no obligation to follow the caster’s commands. You can dismiss a fooled spell as an action. Fooled casting can be used when the spy succeeds at a subsequent saving throw against an ongoing effect, such as that granted by slippery mind.
!!!Assumption
The ultimate ability of the master spy is to take over another persona entirely, making it their own. As an action, you can touch an unconscious creature and shift your aura to that of your target. This confuses divination effects and spells, even ones as powerful as discern location, such that they register you as being the creature you have touched. This ability is not proof against the actions of deities or similarly powerful beings. The assumption of an identity lasts until you end it as an action or you use the ability on another creature.
!!!Spymaster’s Edge
<<<
You slip your weapon past your enemy’s defenses, using your knowledge of its tactics to stay one step ahead.
<<<
//Rank 5 Exploit (Recharges on a long rest)//
As a reaction, when a creature within 5 feet of you misses you with a melee attack, the attacker repeats the attack that missed you against itself with advantage. On a hit, the target suffers all the damage and effects of the original attack, plus you can apply your Sneak Attack as extra damage. If the original attack was made with a weapon, you now have the weapon or, if you cannot hold it, it falls to the ground in your space or in a space of your choice within 5 feet.
Без материалов ничего нельзя изготовить. Ремесло не создает вещи из воздуха, оно производит более полезные вещи из менее полезных. Сбор материалов - важнейший первый шаг в любой работе. Материалы обычно можно найти тремя способами.
[[Актуальные таблицы материалов|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=2046152386]]
!!!Трофеи и находки
Ничто не бывает бесполезным, когда в команде есть ремесленники. Одним из основных источников материалов будут найденные вами вещи.
!!!Добыча и собирательство
Способ сбора материала зависит от вида ремесла; во многих случаях его можно собрать только тогда, когда появляется такая возможность. Чешую дракона, например, гораздо легче собрать, если поблизости есть мертвый дракон. Будь то сбор редких трав, частей монстров или минералов, собирательство - это возможность, которую вы не захотите упускать.
!!!Покупка
Редко когда все необходимое для создания желаемого попадает к вам в руки без помощи самого старого и мощного инструмента любого ремесленника - денег. Если у вас нет того, что вам нужно, часто вы можете это купить. Для некоторых ремёсел доступно гораздо больше материалов для покупки, в то время как другие больше полагаются на другие способы.
<<<
//''Продажа и покупка материалов''//
//Как правило, цена покупки материала - это его указанная стоимость, а цена продажи заинтересованному лицу обычно составляет половину этой стоимости. //
//В зависимости от переговоров, переменчивости рынка и настроения Мастера вы можете рассчитывать на лучшую или худшую цену. Обратите внимание, что многие материалы являются просто хламом для стороны, у которой нет для них применения, и продаются только заинтересованным лицам, которые могут их использовать или перепродать. //
//Угроза сжечь лавку торговца, потому что он не предлагает вам указанную цену, может привести к проверке Запугивания, но не изменит реалий рынка и, как правило, не принесет пользы вашей репутации; большинство торговцев, у которых есть деньги на покупку и продажу дорогих материалов, уже имели дело с приключенцами и их нелегко запугать. //
<<<
---
!!!Виды материалов
<<tabs "[tag[Виды материалов]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
[img width=320 class="centerme" [https://i.imgur.com/QFIlvVv.png]]
Мглистые драконорождённые - единственная разновидность драконорождённых, обладающая хвостами.
|!Особенность |!Описание |
|^Хвост |^Удары вашего хвоста нарушают равновесие противника. Бонусным действием вы можете с помощью вашего хвоста совершить особую атаку Толкание по существу в пределах 1 м от вас. Вы можете использовать эту особенность количество раз равное вашему модификатору Силы (минимум 1). Вы восстаналиваете использования этой особенности, когда завершаете продолжительный отдых. |
<<<
Дух медведя делает вас достаточно крепким, чтобы выдержать любое испытание.
<<<
Пребывая в ярости, вы получаете сопротивление всем видам урона кроме урона психической энергией.
[img width=500 class="centerme" [https://i.imgur.com/klcLfUQ.png]]
<<tabs "[tag[Медвежатник - описание]]" "Описание медвежатников" "$:/state/tab1">>
<<<
I make my friends. Let's call it a hobby.
— Pinker Bachin, Clockwork Maester
<<<
The Last War saw incredible advances in artifice. With the creation of the warforged and the perfection of war machines, artificers attained a deeper understanding of how to blend technology with magic. Although most artificers train in the creation of magical servants, clockwork maesters elevate the practice to an art form.
Clockwork maesters are the master crafters of the gnome world, combining technical and magical expertise to create incredible marvels. They specialize in the creation of magic items, bending all their skill and ability toward the construction of items that are their art and livelihood.
''Clockwork Maesters in the World:'' Clockwork maesters are usually artificers, although sorcerers and wizards occasionally walk the path. Some bards also have been known to become clockwork maesters, but typically not until they have spent a number of years adventuring.
NPC clockwork maesters rarely stray from their laboratories, which makes them excellent patrons for groups of adventurers. Clockwork maesters often need rare minerals, unusual material components for spells, or other substances for the magic items they create, and it’s usually too dangerous to fetch such materials alone. Clockwork maesters often hire bodyguards if they’re undertaking a journey, paying their guards with magic items they have built. Other times, they simply send allies on a journey of acquisition, providing them with as much lore about their mission as possible.
''Clockwork Maesters in the Game:'' As a clockwork maester, you are a master of creating imitations of life from inanimate objects. You can piece together automatons in a few moments. The devices you create are more durable, longer lasting, and more deadly than those created by your peers.
You fashion minions and creations to aid your companions, although you probably feel as much kinship to the automatons as you feel toward your fellow adventurers. You might dote on your creations, lamenting when they become damaged, and even avenging their destruction.
Outside of combat, harmless clockwork creations surround you. They twitter and buzz, fluttering near you, keeping you company. Many are also helpers, and through their adroit appendages, you can construct other minions more quickly.
''Adaptation:'' While gnomes are renowned for their magical craftsmanship, they don’t have a monopoly on the trade. This path would be appropriate for a secret organization of item- creating arcanists who are not necessarily gnomes. If you change the spell requirement to divine spells, it’s also a good fit for clerics of deities who are known for their peerless magical craftings, such as Moradin.
---
!!Мейстер-часовщик
| !Ранг |!Умения |
| !1 |Clockwork Soldiers, Durable Artifice |
| !2 |Clockwork Coordination, Aid Artifice |
| !3 |Superior Minions |
| !4 |Clockwork Companion |
---
!!!Предварительные условия:
* ''Владение навыками.'' Магия.
* ''Заклинания.'' Умение Использование заклинаний или Магия договора, и способность сотворять заклинания 3 уровня или выше.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Clockwork Soldiers
<<<
Scores of tiny metal soldiers drop off your body and swarm a foe.
<<<
//Clockwork Maester • Arcane, Conjuration, Focus, Offensive (Recharges after a short or long rest)//
As an action, you create a zone of clockwork soldiers that fills a 15-foot radius sphere centered on a point you can see within 60 feet of you. The zone lasts until the end of your next turn, it is difficult terrain, and any enemy that starts its turn within the zone must succeed on a Dexterity saving throw or take 4d6 magical piercing damage. Also on a failed save, the target's speed is halved until the end of its next turn.
The damage of this exploit increases when you reach 9th level (6d6), 13th level (7d6), and 17th level (8d6).
!!!Durable Artifice
You enhance creatures you build or summon, increasing their AC by 2, and granting them a bonus on saving throws equal to one-half your proficiency bonus (rounded down).
---
!!Ранг 2
!!!Clockwork Coordination
On your turn, you can spend an inspiration to take two additional bonus actions before the end of your turn, which you can use only to command your crafted or summoned creatures.
!!!Aid Artifice
<<<
Your creations last longer than expected.
<<<
//Clockwork Maester • Arcane, Healing, Transmutation, Utility (Recharges after a short or long rest) //
When a creature you built or summoned takes damage, you can use your reaction to immediately repair the triggering creature before damage or other effects are applied. Spend up to three of your hit dice. For each hit die spent, roll the die, and the triggering creature regains hit points equal to the die roll + your Constitution modifier + 2d6.
The maximum number of hit dice you can spend with this exploit increases when you reach 13th level (four), and 17th level (five).
---
!!Ранг 3
Superior Minions
You further enhance the creatures you craft or summon. Their speed increases by 10 feet, their attacks are treated as magical for the purposes of overcoming resistance to nonmagical damage, and they gain a bonus to their attack and damage rolls equal to one-half your proficiency bonus (rounded down).
---
!!Ранг 4
!!!Clockwork Companion
<<<
You carefully assemble a realistic and versatile clockwork creation.
<<<
//Clockwork Maester • Arcane, Conjuration, Focus, Offensive, Summon (Recharges after a long rest) //
As a bonus action, you create a Small clockwork companion in an unoccupied space within 60 feet that lasts for 1 hour. The companion is a construct with a walking speed of 35 feet and it ignores difficult terrain. It has hit points equal to 25 + (5 times your level). When you or an ally starts their turn adjacent to the companion, that character gains 2d10 + 10 temporary hit points. You can give the companion the following special command.
//''Bonus action or Reaction. ''//Melee Spell Attack: your spell attack modifier to hit, reach 5 ft., one creature. Hit: (3d10 + your spellcasting ability modifier) bludgeoning, piercing, or slashing damage (your choice), and the target is marked until the end of your next turn. If the target is already marked, the clockwork companion can deal 1d10 extra damage instead of marking it.
---
!!Новые правила
The following rules are a mix of optional rules from the Dungeon Master's Guide (DMG) and a way to replace adding a stat block for the summoned creatures. If you don't want to use the Marked condition from the DMG, then ignore it and simply give the clockwork companion the extra die of damage. The summoning rules provide a way for the player to understand the capabilities of their companion without needing an additional character sheet. Only a few notes on where the companion derives it's stats.
!!!Marking
This is the variant rule presented on page 271 of the Dungeons Master's Guide. When a creature marks a target, the mark lasts until the end of the attacker’s next turn unless specified otherwise, and any opportunity attack it makes against the marked target has advantage. The opportunity attack doesn’t expend the attacker’s reaction, but the attacker can’t make the attack if anything, such as the incapacitated condition or the shocking grasp spell, is preventing it from taking reactions. The attacker is limited to one opportunity attack per turn.
!!!Summoning
Exploits that have the //Summoning //keyword bring creatures magically from elsewhere—often from other planes—to serve the summoner. Normally, a //Summoning //exploit includes all the information needed to summon and control a creature, as well as the creature's game statistics.
The following rules are a reference for summoning in general. As usual, if a particular exploit contains exceptions to these rules, the exception takes precedence.
* ''Allied Creature: ''A summoned creature is an ally to its summoner and the summoner's allies.
* ''Size, Speed, and Position:'' The exploit specifies the summoned creature's size and speed, and it determines where the creature appears.
* ''Summoner's Defenses:'' The summoned creature's AC and saving throws equal the summoner's, not including any temporary bonuses or penalties.
* ''Hit Points:'' The exploit specifies the summoned creature's maximum hit points. When the summoned creature drops to 0 hit points, it is destroyed, and the summoner loses a hit die. If the summoner has no hit dice left, the summoner instead rolls their largest hit die and adds their Constitution modifier, then takes damage equal to that total. This damage cannot be reduced or resisted in any way. The summoned creature lacks hit dice, but if an effect allows it to spend a hit die, the summoner can spend a hit die for it. The summoned creature, rather than the summoner, then gains the benefit of the hit die.
* ''Commanding the Creature:'' The summoned creature has no actions of its own; the summoner spends actions to command it mentally. The summoner can do so only if they have line of effect to the creature. When commanding the creature, the summoner shares its knowledge but not its senses. The Summoning exploit determines the special commands that the summoned creature can receive and gives an action type for each command. If a command is a bonus action, it can be given only once per round. On each of the summoner's turns, the summoner can direct the summoned creature to move up to its speed or stand up (no action required), if it is physically capable of doing so.
* ''Attacks and Checks: ''If a Summoning exploit allows the summoned creature to attack, the summoner makes an attack through the creature, as specified in the exploit description. If the summoned creature can make an ability check, the summoner makes the check. The attack or check uses the summoner's game statistics, unless the descriptions of the exploit or creature specify otherwise. Attacks and checks made through the creature do not include any temporary bonuses or penalties to the summoner's statistics.
* ''Duration: ''The summoned creature lasts until the summoner takes a bonus action to dismiss it or until the duration specified in the exploit has elapsed.
Драконорождённые, происходящие от металлических драконов, несут в себе непоколебимую стойкость своих предков — латунных, медных, бронзовых, золотых и серебряных драконов, а их чешуя сверкает оттенком металлического дракона-предка. Они — это огонь очага и кузни, холод высоких гор, искры вдохновения и чистящее прикосновение кислоты.
|!Особенность |!Описание |<|
|^Увеличение характеристик |^Значение вашего Телосложения или Харизмы на ваш выбор увеличивается на 1. |<|
|^Наследие металлического дракона |^Ваш предок - металлический дракон даровал вам особую магическую предрасположенность. Выберите один вид дракона из таблицы ниже. Ваш выбор определяет вид урона для других ваших особенностей. |<|
|~|^!Дракон |^!Вид урона |
|~|^Бронзовый |^Электричество |
|~|^Золотой |^Огонь |
|~|^Латунный |^Огонь |
|~|^Медный |^Кислота |
|~|^Серебряный |^Холод |
|^Сопротивление дракона |^Вы получаете сопротивление к урону того вида, который указан в вашем Наследии металлического дракона. |<|
|^Металлическое оружие дыхания |^На 5 уровне вы получаете второе оружие дыхания. Когда вы совершаете действие [[Атака]], вы можете заменить одну из ваших атак выдохом магической энергии 3-метровым конусом или 6-метровой линией шириной 1 м (на ваш выбор). Сл спасброска = 8 + ваш мод. Телосложения + ваш бонус мастерства. При использовании этой особенности, выберите один из следующих вариантов: |<|
|~|^//Изнуряющее дыхание//. Все существа в области выдоха должны преуспеть в спасброске Телосложения, иначе они станут [[недееспособными|Недееспособный]] до начала вашего следующего хода.|<|
|~|^//Отталкивающее дыхание//. Все существа в области выдоха должны преуспеть в спасброске Силы, иначе они отталкиваются на 4 м от вас и [[сбиваются с ног|Сбитый с ног / Лежащий ничком]]. |<|
|~|^Вы не можете использовать эту особенность повторно, пока не завершите продолжительный отдых. |<|
Вы получаете бонус +2 к броскам урона метательных атак оружием. Вы можете извлечь другое оружие частью этих атак. Эффективная дальность, используемого вами метательного оружия, увеличивается в полтора раза.
Силы космического порядка наполнили вас магией. Эта сила проистекает из Механуса или подобного ему царства — плана существования, сформированного исключительно соображениями эффективности, как у часового механизма. Вы или кто-то из вашего рода могли быть вовлечены в махинации модронов — существ порядка, населяющих Механус. Возможно, кто-то из ваших предков даже принимал участие в Великом Марше модронов. Каким бы ни было её происхождение внутри вас, сила порядка может показаться странной другим, но для вас это часть огромной и славной системы.
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Ограждения или Преобразования.
| !УЧ |!Заклинания |
| !1 |//защита от добра и зла//, //починка//, //сигнал тревоги// |
| !3 |//малое восстановление//, //подмога// |
| !5 |//защита от энергии//, //рассеивание магии// |
| !7 |//призыв конструкта//, //свобода перемещения// |
| !9 |//высшее восстановление//, //силовая стена// |
//УЧ - Уровень чародея//
Кроме того, обратитесь к таблице ниже и выберите или случайным образом определите способ проявления вашей связи с порядком в момент накладывания любого из ваших заклинаний чародея.
| !к6 |!Проявление |
| 1 |Позади вас парят призрачные шестерёнки. |
| 2 |В ваших глазах вращаются стрелки часов. |
| 3 |Ваша кожа сияет медным блеском. |
| 4 |Ваше тело покрывают парящие уравнения и геометрические объекты. |
| 5 |Ваша заклинательная фокусировка временно принимает форму Крошечного часового механизма. |
| 6 |Вы и те, на кого воздействует ваша магия, слышат тиканье механизмов или звон часов. |
---
!!! [img[1.png]] Восстановление баланса
<<<
Ваша связь с планом абсолютного порядка позволяет сгладить моменты хаоса.
<<<
Когда существо, которое вы можете видеть в пределах 12 м от вас, собирается совершить бросок к20 с преимуществом или помехой, вы можете заставить его совершить этот бросок без преимущества и помехи.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Бастион закона
<<<
Вы можете подключиться к великому уравнению существования, чтобы наделить существо мерцающим щитом порядка.
<<<
Действием вы можете потратить от 1 до 5 единиц чародейства, чтобы создать магическую защиту вокруг себя или другого существа, которое вы можете видеть в пределах 6 м от вас. Защита длится до тех пор, пока вы не завершите продолжительный отдых или пока вы не используете это умение снова.
Щит представлен количеством к8, равным количеству единиц чародейства, потраченных на его создание. Когда охраняемое существо получает урон, оно может потратить некоторое количество этих костей, уменьшив получаемый урон на результат броска потраченных костей.
---
!!! [img[14.png]] Транс порядка
<<<
Вы получаете возможность настроить своё сознание на бесконечные вычисления Механуса.
<<<
Бонусным действием вы можете войти в это состояние на 1 минуту. В течение этого времени броски атаки против вас не могут совершаться с преимуществом, и всякий раз, когда вы совершаете бросок атаки, проверку характеристики или спасбросок, вы можете рассматривать бросок 9 или ниже на к20 как 10.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите 5 единиц чародейства на повторное использование этого умения.
---
!!! [img[18.png]] Часовая кавалькада
<<<
Вы призываете духов порядка для устранения беспорядка вокруг себя.
<<<
Действием вы вызываете духов в кубе с длиной ребра 6 м, исходящем от вас. Духи выглядят как модроны или другие конструкты по вашему выбору. Духи неосязаемы и неуязвимы, и они создают нижеперечисленные эффекты внутри куба, прежде чем исчезнуть:
* Духи восстанавливают до 100 хитов, распределённых по вашему выбору между любым количеством существ по вашему выбору в кубе.
* Любые повреждённые объекты, полностью находящиеся в кубе, мгновенно ремонтируются.
* На выбранных вами существах и объектах в кубе заканчиваются эффекты всех заклинаний 6-го уровня и ниже.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите 7 единиц чародейства на повторное использование этого умения.
Архетип Мистического рыцаря совмещает в себе воинское искусство и тщательное изучение волшебства. Мистические рыцари используют приёмы, схожие с практиками волшебников. Но они сосредоточились на изучении двух из восьми школ магии: Воплощения и Ограждения. Заклинания Ограждения обеспечивают Мистическим рыцарям дополнительную защиту в бою, а Воплощения причиняют урон нескольким противникам за раз, увеличивая возможности рыцаря в бою. Эти рыцари владеют относительно небольшим количеством заклинаний, что позволяет постоянно держать их в памяти и не использовать книгу заклинаний.
---
!!! [img[3.png]] Использование заклинаний
<<<
К своим воинским талантам вы добавляете возможность сотворять заклинания.
<<<
| !Ур. | !ИЗаг|!Изакл| !Ячейки заклинаний |<|<|<|
|~|~|~| !1 | !2 | !3 | !4 |
| !3 | 2 | 3 | 2 | - | - | - |
| !4 | 2 | 4 | 3 | - | - | - |
| !5 | 2 | 4 | 3 | - | - | - |
| !6 | 2 | 4 | 3 | - | - | - |
| !7 | 2 | 5 | 4 | 2 | - | - |
| !8 | 2 | 6 | 4 | 2 | - | - |
| !9 | 2 | 6 | 4 | 2 | - | - |
| !10 | 3 | 7 | 4 | 3 | - | - |
| !11 | 3 | 8 | 4 | 3 | - | - |
| !12 | 3 | 8 | 4 | 3 | - | - |
| !13 | 3 | 9 | 4 | 3 | 2 | - |
| !14 | 3 | 10 | 4 | 3 | 2 | - |
| !15 | 3 | 10 | 4 | 3 | 2 | - |
| !16 | 3 | 11 | 4 | 3 | 3 | - |
| !17 | 3 | 11 | 4 | 3 | 3 | - |
| !18 | 3 | 11 | 4 | 3 | 3 | - |
| !19 | 3 | 12 | 4 | 3 | 3 | 1 |
| !20 | 3 | 13 | 4 | 3 | 3 | 1 |
//Ур. - Уровень, ИЗаг - Известные заговоры, ИЗакл - Известные заклинания//
---
''Заговоры (заклинания 0 уровня)''
Вам известны два заговора на ваш выбор из списка заклинаний волшебника. Вы изучаете один дополнительный заговор волшебника на 10 уровне.
''Ячейки заклинаний''
Таблица выше показывает, сколько ячеек заклинаний у вас есть для сотворения заклинаний 1 и более высоких уровней. Для сотворения заклинания вы должны потратить ячейку соответствующего, либо более высокого уровня. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны три заклинания 1 уровня на ваш выбор из списка заклинаний волшебника, два из которых должны принадлежать к школам Воплощения или Ограждения.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Все эти заклинания должны принадлежать школам Воплощения или Ограждения. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний волшебника.
Заклинания, которые вы изучаете на 8, 14 и 20 уровнях, могут принадлежать любой школе магии.
''Заклинательная гибкость''
Каждый раз, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, с уровнем, не превышающим уровень ячеек заклинаний волшебника. Это заклинание должно принадлежать школам Воплощения или Ограждения, кроме тех случаев, когда вы заменяете заклинания, полученные из любой школы на 3, 8, 14 или 20 уровнях.
''Базовая характеристика заклинаний''
Интеллект является базовой характеристикой для сотворения ваших заклинаний волшебника, так как вы узнаёте свои заклинания путём целенаправленного исследования и запоминания.
Вы используете Интеллект в случаях, когда заклинание волшебника ссылается на базовую характеристику. Кроме того, вы используете модификатор Интеллект при определении Сл спасбросков от ваших заклинаний волшебника, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Интеллекта
Модификатор броска атаки = бонус мастерства + модификатор Интеллекта
```
''Фокусировка заклинания''
Вы можете использовать арканную фокусировку в качестве заклинательной фокусировки для заклинаний волшебника.
---
!!! [img[3.png]] Связь с оружием
<<<
Вы узнаёте ритуал, позволяющий создать магическую связь между вами и вашим оружием.
<<<
Ритуал совершается 1 час, и его можно провести во время отдыха. Оружие во время проведения ритуала должно находиться в пределах вашей досягаемости, а в завершении ритуала вы прикосаетесь к нему и создаёте связь.
Как только вы привязали к себе оружие, вы не можете быть обезоруженным, пока не станете [[недееспособным|Недееспособный]]. Если оружие находится на одном плане существования с вами, вы можете в свой ход бонусным действием призвать его, телепортируя себе в руку.
У вас может быть не более двух привязанных оружий одновременно, но призвать бонусным действием вы можете только одно за раз. Если вы попытаетесь создать связь с третьим оружием, вам придётся разорвать связь с одним из первых двух.
---
!!! [img[7.png]] Боевая магия
Если вы действием сотворяете заговор, вы можете бонусным действием совершить одну атаку оружием.
---
!!! [img[10.png]] Мистический удар
<<<
Вы научились своими ударами оружием понижать сопротивляемость цели вашим заклинаниям.
<<<
Когда вы попадаете по существу атакой оружием, оно совершает свой следующий спасбросок против заклинания, сотворённого вами до конца вашего следующего хода, с помехой.
---
!!! [img[15.png]] Арканный рывок
Вы получаете возможность телепортироваться на 6 м в свободное пространство, которое вы видите, когда используете Всплеск действий. Вы можете телепортироваться до или после дополнительного действия.
---
!!! [img[18.png]] Улучшенная боевая магия
Если вы действием сотворяете заклинание, вы можете бонусным действием совершить одну атаку оружием.
Ваша врождённая магия исходит от силы стихии воздуха. Многие, обладающие этой силой, могут проследить свою магию до около-смертельного опыта, вызванного Великим Дождём, но, возможно, вы родились во время бушующего шторма, настолько сильного, что народ всё ещё рассказывает истории о нём, или ваша родословная может включать влияние могущественных воздушных существ, таких как джинны. В любом случае штормовая магия пронизывает само ваше существование.
Штормовые чародеи – бесценные члены экипажа корабля. Их магия позволяет им контролировать ветер и погоду в непосредственной близости от себя. Их способности также полезны в отражении нападений сахуагинов, пиратов и других водных угроз.
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Воплощения или Преобразования.
| !УЧ |!Заклинания |
| !1 |//волна грома//, //падение пёрышком//, //шквал// |
| !3 |//небесные письмена//, //порыв ветра// |
| !5 |//газообразная форма//, //громовой шаг// |
| !7 |//власть над водами//, //сфера бури// |
| !9 |//власть над ветрами//, //призыв элементаля// |
//УЧ - Уровень чародея//
---
!!! [img[1.png]] Говорящий с ветром
<<<
Арканная магия, которой вы владеете, пропитана стихией воздуха.
<<<
Вы можете говорить, читать и писать на Первичном. Знание этого языка позволяет понимать и быть понятым теми, кто говорит на его диалектах: Акван, Ауран, Игнан и Терран.
---
!!! [img[1.png]] Бурная магия
Вы можете бонусным действием заставить завихряющиеся порывы элементального ветра на мгновение окружить вас прямо перед тем или прямо после того, как вы сотворите заклинание 1 уровня или выше. Это позволяет вам пролететь расстояние до 2 м, не провоцируя атаки.
---
!!! [img[6.png]] Сердце бури
Вы получаете сопротивление к урону звуком и электричеством.
Кроме того, каждый раз, когда вы начинаете сотворять заклинание 1 уровня или выше, которое наносит урон звуком или электричеством, из вас выплёскивается штормовая магия. Этот всплеск направлен на видимых вами существ по вашему выбору в пределах 2 м от вас, и наносит урон звуком или электричеством (на ваш выбор) в количестве равном половине вашего уровня чародея.
---
!!! [img[6.png]] Ведущий шторм
<<<
Вы способны слегка управлять погодой вокруг вас.
<<<
Если идёт дождь, вы можете действием прекратить его в сфере радиусом 4 м с центром на вас. Вы можете окончить этот эффект бонусным действием.
Если ветрено, вы можете каждый раунд бонусным действием выбирать направление ветра в сфере радиусом 30 м с центром на вас. Ветер дует в этом направлении до конца вашего следующего хода. Это умение не изменяет скорость ветра.
---
!!! [img[14.png]] Ярость шторма
Когда по вам попадают рукопашной атакой, вы можете реакцией нанести атакующему урон электричеством. Количество урона равно вашему уровню чародея. Атакующий должен также совершить спасбросок Силы против вашей Сл спасброска от заклинаний. При провале атакующего отталкивает по прямой линии от вас на расстояние до 4 м.
---
!!! [img[18.png]] Душа ветра
Вы получаете иммунитет к урону звуком и электричеством.
Вы также получаете магическую скорость полёта 12 м. Действием вы можете уменьшить свою скорость полёта до 6 м на 1 час и выбрать существ в пределах 6 м от себя в количестве равном 3 + ваш модификатор Харизмы. Выбранные существа получают магическую скорость полёта 6 м на 1 час.
Как только вы уменьшите свою скорость полёта таким образом, вы не можете сделать это повторно, пока не завершите короткий или продолжительный отдых.
<<tabs "[tag[Монастырская практика]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
[img width=325 class="centerme" [https://i.imgur.com/0iEs8eB.png]]
<<tabs "[[Описание монахов]] [[Классовые умения монахов]] [[Монастырские практики]]" "" "$:/state/tab1">>
Пока вы не носите средних или тяжелых доспехов и щитов, ваша скорость плавания и карабканья равна вашей скорости ходьбы, и вы получаете бонус +1 к КД.
[img width=280 class="centerme" [https://i.imgur.com/ZVUBKHm.png]]
С самого начала мультивселенной морские эльфы были очарованы первозданной красотой океанов. Пока другие эльфы путешествовали от одного царства к другому, морские эльфы странствовали по глубочайшем течениям и исследовали водные пространства через сотни миров. В нынешнее время, они проживают в небольших и скрытых поселениях близ морских мелководий и на Элементальном Плане Воды.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 1. |
|^Боевая подготовка морских эльфов |^Вы владеете одноручным древковым оружием, простыми арбалетами и сетью. |
|^Дитя морей |^Вы можете дышать и на суше, и под водой, а ваша скорость плавания равна вашей скорости ходьбы. |
|^Морские побратимы |^Водные животные обладают необычайным сродством с вашим народом. Вы можете донести простые идеи до любого Зверя, который обладает скоростью плавания. Он может понимать ваши слова, хотя у вас нет особой способности понимать его в ответ. |
|^Язык моря |^Вы можете говорить, читать и писать на Акване. |
Вы много лет плавали на морском судне. Вы видели могучие шторма, глубоководных чудовищ и тех, кто хотел отправить вас на дно. Первая любовь осталась далеко за горизонтом, и настало время попробовать что-то новое.
Решите вместе с Мастером, на каком корабле вы до этого плавали и кем вы были на борту.
* ''Владение навыками:'' Атлетика, Внимательность
* ''Владение инструментами:'' [[Инструменты навигатора|Инструменты навигатора]], [[водный транспорт|Наземный и водный транспорт]]
* ''Экипировка:'' Кофель-нагель (дубинка), 15 м шёлковой верёвки, талисман, такой как кроличья лапка или камень с дыркой, комплект дорожной одежды, кошель с 10 см
!!!Умение: Поездка на корабле
Если понадобится, вы можете получить бесплатную поездку на паруснике для себя и своих спутников. Это может быть ваш старый корабль, или другой корабль, с которым вы находитесь в хороших отношениях (возможно, им командует ваш бывший напарник). Вам оказывают услугу, поэтому вы не можете устанавливать распорядок и прокладывать маршрут. Мастер сообщит, сколько времени уйдёт на плавание. В обмен на бесплатную поездку от вас и ваших спутников ожидают посильную помощь экипажу во время плавания.
---
!!!Разновидность моряка: Пират
Вы провели молодость среди жутких пиратов, безжалостных головорезов, научивших вас выживать среди акул и дикарей. Вы занимались грабежом в морях, и не одну душу отправили в солёную пучину. Вы хорошо знакомы со страхом и кровью, и заслужили сомнительную репутацию во многих портовых городах.
Если вы решите, что во время плаваний по морю вы занимались пиратством, можете выбрать умение Дурная репутация вместо умения Поездка на корабле.
<<<
!!!Альтернативное умение: Дурная репутация
Где бы вы ни оказались, вас боятся из-за вашей репутации. Находясь в цивилизованном поселении, вы можете безнаказанно совершать небольшие преступления, такие как отказ платить за еду в таверне или выламывание двери в магазине, так как жители боятся сообщать о вас властям.
<<<
---
!!!Персонализация
Моряки бывают грубыми, но на их плечах лежит груз ответственности за сохранение жизни экипажа, поэтому на них можно положиться. Жизнь, проведённая на корабле, формирует их взгляды и самые важные привычки.
| !к8 |!Черта характера |
| 1 |Друзья знают, что всегда могут на меня положиться. |
| 2 |Я усердно тружусь, чтобы потом можно было хорошо отдохнуть. |
| 3 |Мне нравится заходить в новые порты и находить друзей за кружечкой эля. |
| 4 |Я готов приврать, чтобы получился хороший рассказ. |
| 5 |Для меня драка в таверне — отличный способ познакомиться с новым городом. |
| 6 |Я никогда не откажусь от пари. |
| 7 |Я ругаюсь как банда орков. |
| 8 |Мне нравится, когда работа выполнена, особенно если её можно поручить другому. |
| !к6 |!Идеал |
| 1 |''Уважение.'' Корабль держится целым благодаря взаимному уважению капитана и экипажа. |
| 2 |''Справедливость.'' Все мы делаем одно дело, и награду должны делить поровну. |
| 3 |''Свобода.'' Море это свобода — свобода идти куда угодно и делать что угодно. |
| 4 |''Власть.'' Я хищник, а другие корабли в море — моя добыча. |
| 5 |''Команда.'' Я предан экипажу, а не идеалам. |
| 6 |''Стремление.'' Когда-нибудь у меня будет свой корабль, и я проложу курс куда захочу. |
| !к6 |!Привязанность |
| 1 |В первую очередь я верен своему капитану, всё остальное вторично. |
| 2 |Самое важное — это корабль, а экипаж и капитаны постоянно меняются. |
| 3 |Я всегда буду помнить свой первый корабль. |
| 4 |В гавани у меня есть возлюбленная, глаза которой стоят того, чтобы оставить ради неё море. |
| 5 |Как-то раз мне выплатили не полную долю с дохода, и я хочу вернуть себе причитающееся. |
| 6 |Безжалостные пираты убили моего капитана и почти всю команду, разграбили корабль, и оставили меня умирать. Месть будет страшной. |
| !к6 |!Слабость |
| 1 |Я выполняю приказы, даже если считаю, что они не справедливые. |
| 2 |Я наплету с три короба, лишь бы не делать лишнюю работу. |
| 3 |Когда кто-то бросает мне вызов, я никогда не отступлюсь, какой бы опасной не была ситуация. |
| 4 |Начав пить, я не могу остановиться. |
| 5 |Не могу ничего поделать, но деньги у меня не задерживаются. |
| 6 |Моя гордость меня когда-нибудь погубит. |
Вы провели много лет, постигая тайны мультивселенной. Вы читали рукописи, изучали свитки, и общались с величайшими экспертами в интересующих вас темах. Всё это сделало вас знатоком в своей области.
* ''Владение навыками:'' История, Магия
* ''Языки:'' Два на ваш выбор
* ''Экипировка:'' Чёрные чернила, писчее перо, нож для бумаги, письмо от мёртвого коллеги с вопросом, на который вы пока не можете ответить, комплект одежды мудреца, кошель с 10 см
!!!Специализация
Чтобы определить область изучаемого вами знания совершите бросок по таблице или выберите один из вариантов самостоятельно.
| !к8 |!Направленность | !к8 |!Направленность |
| 1 |Академик с испорченной репутацией | 5 |Исследователь |
| 2 |Алхимик | 6 |Писец |
| 3 |Астроном | 7 |Подмастерье волшебника |
| 4 |Библиотекарь | 8 |Профессор |
!!!Умение: Исследователь
Если вы пытаетесь изучить или вспомнить информацию, которой вы не обладаете, вы часто знаете, где и от кого её можно получить. Обычно это библиотека, скрипторий, университет, мудрец или другое образованное существо. Мастер может решить, что искомое знание является тайной и хранится в практически недоступном месте, или что оно вообще недоступно. Поиски глубочайших тайн вселенной могут потребовать отдельного приключения или даже целой кампании.
!!!Персонализация
Мудрецами становятся после продолжительных занятий, и личность таких существ отражает жизнь в постоянном обучении. Будучи в постоянном поиске мудрости, они высоко ценят знания — как для себя, так и в стремлении к идеалам.
| !к8 |!Черта характера |
| 1 |Я использую многосложные слова, создающие впечатление образованности. |
| 2 |Я прочитал все книги в величайших библиотеках мира — или, по крайней мере, говорю так. |
| 3 |Я привык помогать тем, кто не так умён, как я, и терпеливо всем всё объясняю. |
| 4 |Больше всего на свете я люблю тайны. |
| 5 |Прежде чем принять решение, я выслушаю аргументы обеих спорящих сторон. |
| 6 |Я ... говорю ... медленно ... когда разговариваю ... с идиотами, ... то есть ... практически ... всегда. |
| 7 |В социальном взаимодействии я ужасно неуклюж. |
| 8 |Я убеждён, что остальные постоянно хотят украсть мои тайны. |
| !к6 |!Идеал |
| 1 |''Знание.'' Путь к силе и самосовершенствованию лежит в знаниях. |
| 2 |''Красота.'' Красота ведёт нас к тому, что истинно. |
| 3 |''Логика.'' Эмоции не должны подавлять логическое мышление. |
| 4 |''Свобода.'' Ничто не должно сдерживать бесконечные варианты всех возможных исходов. |
| 5 |''Власть.'' Знания — путь к власти и контролю. |
| 6 |''Самосовершенствование.'' Цель жизни в познании — самосовершенствование. |
| !к6 |!Привязанность |
| 1 |Я должен защищать своих учеников. |
| 2 |У меня есть древний текст, содержащий ужасную тайну, и который не должен попасть в чужие руки. |
| 3 |Я работаю над сохранением библиотеки, университета, скриптория или монастыря. |
| 4 |Труд всей моей жизни — это серия томов, посвящённая определённой области знаний. |
| 5 |Всю свою жизнь я ищу ответ на один вопрос. |
| 6 |Ради знаний я продал душу. Когда-нибудь я надеюсь совершить великое деяние и вернуть её себе. |
| !к6 |!Слабость |
| 1 |Меня легко отвлечь, пообещав информацию. |
| 2 |Увидев демона, большинство закричит и убежит. Я же остановлюсь и буду изучать его анатомию. |
| 3 |Для раскрытия древних тайн можно пожертвовать современной цивилизацией. |
| 4 |Я избегаю очевидных решений, пользуясь замысловатыми. |
| 5 |Я говорю, не обдумывая слова, чем часто оскорбляю других. |
| 6 |Ради спасения своей или чьей-либо ещё жизни я выболтаю любую тайну. |
Владение музыкальным инструментом означает, что вы знакомы с приёмами игры на нём. Вы также знаете несколько песен, как правило, исполняющихся наэтом инструменте. Для каждого музыкального инструмента нужно отдельное владение.
Бард может использовать музыкальный инструмент в качестве фокусировки для заклинаний.
''//История//''. Ваш опыт помогает вам вспомнить исторические факты, связанные с вашим инструментом.
//''Выступление''//. Ваши постановки заметно улучшаются, когда вы включаете в них игру на инструменте.
//''Сочинение мелодии''//. Как часть продолжительного отдыха вы можете сочинить новую мелодию и слова для песни, исполняемой на вашем инструменте. Вы можете использовать эту способность, чтобы произвести впечатление на дворянина или распространять скандальные слухи с легко запоминающейся мелодией.
|!Инструмент |!Цена | !Вес|
|Барабан |6 см | 1 кг|
|Виола |30 см | 0.5 кг|
|Волынка |30 см | 3 кг|
|Лира |30 см | 1 кг|
|Лютня |35 см | 1 кг|
|Рожок |3 см | 1 кг|
|Свирель |12 см | 1 кг|
|Флейта |2 см | 0.5 кг|
|Цимбалы |25 см | 5 кг|
|Шалмей |2 см | 0.5 кг|
Мультиклассирование позволяет получать уровни в разных классах. Это позволяет смешивать умения этих классов, создавая концепцию персонажа, которую не создать ни одним из стандартных классов.
Это правило позволяет при получении уровня увеличивать уровень не текущего класса, а другого. Сумма уровней всех ваших классов определяет уровень персонажа. Например, если вы волшебник 3 уровня и воин 2 уровня, то вы персонаж 5 уровня.
Вы можете получать уровни не более чем в трёх классах.
Вы получаете стартовое снаряжение только первого класса.
---
!!!Требования
Для того чтобы получить новый класс, нужно удовлетворять требованиям к характеристикам и для текущего и для нового класса, показанным в придённой таблице. Например, у варвара, решившего мультиклассироваться в друида, Сила и Мудость должны быть не меньше 13. Обучение происходит не плавно как обычно, а ускоренно, поэтому значения характеристик должны быть выше среднего.
|!Класс|!Минимальные значения характеристик |
|Бард|Харизма 13 |
|Варвар|Сила 13 |
|Воин|Сила 13 или Ловкость 13 |
|Волшебник|Интеллект 13 |
|Друид|Мудрость 13 |
|Жрец|Мудрость 13 |
|Изобретатель|Интеллект 13 |
|Колдун|Харизма 13 |
|Кровавый охотник|Сила 13 или Ловкость 13, и Интеллект 13 |
|Монах|Ловкость 13 и Мудрость 13 |
|Паладин|Сила 13 или Ловкость 13, и Харизма 13 |
|Плут|Ловкость 13 |
|Псион|Интеллект 13 |
|Следопыт|Сила или Ловкость 13, и Мудрость 13 |
|Чародей|Харизма 13 |
---
!!!Опыт
Количество опыта, необходимого для получения нового уровня, зависит от уровня персонажа, а не от уровня в каком-то одном классе. Таким образом, если вы жрец 6/воин 1, вам нужно набрать опыта, необходимого для получения 8 уровня, прежде чем сможете получить 2 уровень воина или 7 уровень жреца.
---
!!!Хиты и Кости Хитов
Вы получаете хиты от нового класса как для любого уровня после первого. Хиты класса 1 уровня получают только когда уровень персонажа тоже первый.
Вы складываете Кости Хитов, полученные от всех классов, формируя общий фонд Костей Хитов. Если все Кости Хитов одного вида, вы можете их просто просуммировать.
---
!!!Бонус мастерства и очки навыков
Бонус мастерства и количество очков навыков всегда зависят от уровня персонажа.
---
!!!Владение
Когда вы получаете первый уровень нового класса, вы получаете не все его владения, а только часть, как показано в приведённой таблице:
|!Класс|!Получаемые владения |
|Бард|Лёгкие доспехи, один навык на ваш выбор, один музыкальный инструмент |
|Варвар|Простое оружие, воинское оружие |
|Воин|Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие, один вид экзотического оружия |
|Волшебник|— |
|Друид|Лёгкие доспехи, средние доспехи |
|Жрец|Лёгкие доспехи, средние доспехи |
|Изобретатель|Лёгкие доспехи, средние доспехи, воровские инструменты, инструменты ремонтника |
|Колдун|Лёгкие доспехи, простое оружие |
|Кровавый охотник|Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие, один вид экзотического оружия, инструменты алхимика |
|Монах|Монашеское оружие |
|Паладин|Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие |
|Плут|Лёгкие доспехи, один навык из списка классовых навыков, воровские инструменты |
|Псион|— |
|Следопыт|Лёгкие доспехи, средние доспехи, простое оружие, воинское оружие, один навык из списка классовых навыков, один вид экзотического оружия |
|Чародей|— |
---
!!!Классовые умения
Когда вы получаете новый уровень одного из классов, вы получаете соответствующие этому уровню умения. Однако некоторые умения подчиняются особым правилам: Божественный канал, Дополнительная атака, Защита без доспехов и Использование заклинаний.
<<tabs "[tag[Классовые умения]]" "Божественный канал" "$:/state/tab1" "tc-vertical">>
//Требование: 11 уровень//
Вы получаете скорость полёта 4 м на 1 час.
//''Побочный эффект:''// Вы совершаете проверки Силы и Ловкости с помехой в течение 1 часа.
Вы получаете сопротивление к дробящему урону.
//''Побочный эффект:''// Вы получаете уязвимость к колющему урону.
Ваша скорость увеличивается на 2 м. На 15 уровне вместо этого ваша скорость увеличивается на 3 м.
//''Побочный эффект:''// Вы совершаете проверки Интеллекта с помехой.
Вы совершаете проверки Мудрости с преимуществом.
//''Побочный эффект:''// Вы совершаете проверки Харизмы с помехой.
//Требование: 7 уровень//
В течение следующего часа в начале каждого своего хода вы восстанавливаете хиты в количестве равном вашему бонусу мастерства, если у вас есть хотя бы 1 хит, но не больше половины вашего максимума хитов.
//''Побочный эффект:''// Ваша скорость уменьшается на 2 м на 1 час.
Вы получаете иммунитет к состояниям [[Схваченный]] и [[Опутанный]]. На 11 уровне вы также получаете иммунитет к состоянию [[Парализованный]].
//''Побочный эффект:''// Вы совершаете проверки Силы с помехой.
//Требование: 11 уровень//
Когда вы совершаете действие Атака, вы можете бонусным действием совершить одну дополнительную атаку оружием.
//''Побочный эффект:''// Вы совершаете спасброски Интеллекта, Мудрости и Харизмы с помехой.
Вы совершаете проверки Интеллекта с преимуществом.
//''Побочный эффект:''// Вы совершаете проверки Мудрости с помехой.
Вы получаете сопротивление к урону огнём.
//''Побочный эффект:''// Вы получаете уязвимость к урону холодом.
Вы получаете дополнительное использование умения Проклятие крови.
//''Побочный эффект:''// Вы совершаете спасброски от смерти с помехой.
Вы получаете сопротивление к колющему урону.
//''Побочный эффект:''// Вы получаете уязвимость к рубящему урону.
Вы получаете [[ночное зрение|Зрение и свет]] в пределах 20 м. Если у вас уже есть [[ночное зрение|Зрение и свет]], его радиус увеличивается на 20 м.
//''Побочный эффект:''// Вы совершаете броски атаки и проверки Мудрости (Внимательность), которые полагаются на зрение, с помехой, когда вы, цель вашей атаки или то, что вы пытаетесь увидеть, находится под прямым солнечным светом.
//Требование: 11 уровень//
Критический диапазон ваших атак оружием увеличивается на 1.
//''Побочный эффект:''// Вы совершаете спасброски Силы с помехой.
Ваша Сила и максимальное значение Сила увеличивается на 3. Этот бонус увеличивается на 1 на 11 уровне (+4) и 18 уровне (+5).
//''Побочный эффект:''// Вы совершаете спасброски Ловкости с помехой.
Вы получаете сопротивление к урону холодом.
//''Побочный эффект:''// Вы получаете уязвимость к урону огнём.
Вы получаете сопротивление к рубящему урону.
//''Побочный эффект:''// Вы получаете уязвимость к дробящему урону.
Вы совершаете проверки Ловкости с преимуществом.
//''Побочный эффект:''// Вы совершаете проверки Мудрости с помехой.
Ваша Ловкость и максимальное значение Ловкости увеличивается на 3. Этот бонус увеличивается на 1 на 11 уровне (+4) и 18 уровне (+5).
//''Побочный эффект:''// Вы совершаете спасброски Мудрости с помехой.
Ваш Интеллект и максимальное значение Интеллекта увеличивается на 3. Этот бонус увеличивается на 1 на 11 уровне (+4) и 18 уровне (+5).
//''Побочный эффект:''// Вы совершаете спасброски Харизмы с помехой.
<<<
Ваша кожа и голос становятся податливыми, позволяя вам немного улучшить свою внешность и стать.
<<<
Вы совершаете проверки Харизмы с преимуществом.
//''Побочный эффект:''// Вы совершаете проверки инициативы с помехой.
''Цена'': 20 см. ''Вес'': 1 кг.
Отличный выбор для любого, кто хочет заниматься обманом, набор для грима позволяет своему владельцу принимать фальшивую личину.
//''Компоненты.''// Набор для грима включает в себя различную косметику, краску для волос, немного реквизита и несколько нарядов.
//''Обман.''// В некоторых случаях грим может помочь вам плести более убедительную ложь.
//''Запугивание.''// Правильный образ может сделать вас более устрашающим, когда вы хотите кого-то отпугнуть, притворившись заражённым чумой, либо, когда запугиваете шайку бандитов под видом громилы-головореза.
//''Выступление.''// Искусство перевоплощения может увеличить удовлетворённость публики выступлением, при условии, что обличье должным образом разработано, чтобы вызывать нужную реакцию.
//''Убеждение.''// Народ склонен доверять людям в униформе. Если вы замаскировались под авторитетную фигуру, ваши попытки убедить других обычно более эффективны.
//''Создание обличья.''// Как часть ночлега или продолжительного отдыха вы можете создать обличье для маскировки. На надевание обличья после его создания требуется 1 минута. Вы можете одновременно иметь при себе только одно такое обличье, не привлекая ненужного внимания, если только у вас нет //сумки хранения //или другого подобного способа оставить их незамеченными. Каждое такое обличье весит 0.5 кг.
В других случаях требуется 10 минут на создание обличья, которое немного изменяет вашу внешность и 30 минут, если требуются более обширные изменения.
|!Действие| !Сл |
|Скрыть травмы или особые приметы | 10 |
|Распознать использование маскировки кем-либо другим | 15 |
|Скопировать внешность гуманоида | 20 |
''Цена'': 15 см. ''Вес'': 2 кг.
Набор для фальсификации предназначен для копирования документов и упрощения копирования личной печати или подписи.
//''Компоненты.''// Набор для фальсификации включает в себя чернила различных видов, пергамент и бумагу различных видов, несколько писчих перьев, печати и сургуч, золотая и серебряная фольга и небольшие инструменты для лепки из расплавленного воска имитации печати.
//''Магия.''// Набор для фальсификации может быть использован вместе с навыком Магия, чтобы определить, является магический предмет настоящим или поддельным.
//''Обман.''// Качественно выполненная подделка, такая как документ, подтверждающий вашу знатность или предписание, гарантирующее вам безопасный проезд, может придать достоверности вашей лжи.
//''История.''// Набор для фальсификации вместе с вашими познаниями в истории улучшает вашу способность подделывать исторические документы или определять их подлинность.
//''Анализ.''// Когда вы осматриваете предмет, владение набором для фальсификации помогает определить, как предмет был сделан и подлинный ли он.
//''Другие инструменты.''// Умение использовать другие инструменты делает ваши подделки более правдоподобными. Например, вы можете объединить владение набором для фальсификации и владение инструментами картографа, чтобы сделать поддельную карту.
//''Быстрая подделка.''// Как часть короткого отдыха вы можете создать поддельный документ длиной не более одной страницы. Как часть продолжительного отдыха вы можете создать документ длинной до четырёх страниц. Ваша проверка Интеллекта в использовании набора для фальсификации определяет Сл проверки Интеллекта (Расследование) на определение того, что это подделка.
|!Действие| !Сл |
|Подделать подчерк | 15 |
|Скопировать восковую печать | 20 |
''Цена'': 5 см. ''Вес'': 1 кг.
Владение набором травника позволяет вам распознавать растения и надёжно сохранять их полезные части. С помощью этого набора вы можете совершать действия [[излечение болезни, облегчение боли и облегчение действия яда|Немагическое лечение]]. Набора хватает на десять использований для совершения этих действий. Вы можете восстановить одно использование, совершив проверку Мудрости (Природа) для сбора трав.
//''Компоненты.''// Набор травника включает в себя мешочки для хранения трав, секатор и кожаные перчатки для сбора растений, несколько стеклянных банок, ступку и пестик.
//''Магия.''// Ваши осведомлённость в природе и использовании растений может дать дополнительные знания к магическим исследованиям, когда дело касается растений и попыток опознать зелье.
//''Анализ.''// Когда вы обследуете заросшую растениями зону, владение этим набором помогает вам находить детали и зацепки, которые другие бы проглядели.
//''Медицина.''// Ваше мастерство травника улучшает ваши способности лечить болезни и раны, расширяя доступные методы благодаря использованию лекарственных растений.
//''Природа, Выживание.''// Когда вы путешествуете в дикой местности, ваши навыки травничества облегчают опознание растений и поиск источников еды, которые другие могут не заметить.
//''Опознание растений.''// Вы можете быстро распознать большинство растений по запаху и внешнему виду.
|!Действие| !Сл |
|Найти растения | 15 |
|Опознать яд | 20 |
Если щит не у вас в руках, то его экипировка может потребовать действия.
|!Вид|!Надевание|!Снятие|
|Лёгкий щит| свободное действие |<|
|Средний щит| бонусное действие |<|
|Тяжёлый щит| действие |<|
Экипировка брони занимает несколько минут и невозможна во время сражения.
''Цена'': 5 см. ''Вес'': 1 кг.
Владение наземным транспортом покрывает широкий спектр вариантов, от колесниц и хаудахов до повозок и телег. Владение водным транспортом охватывает всё, что перемещается по водным путям. Владение транспортом предоставляет знания, необходимые для управления транспортом данного типа, вместе со знаниями о том, как его чинить и обслуживать.
Кроме того, персонаж, владеющий водным транспортом, осведомлён обо всём, что должен знать профессиональный моряк, как то знание информации о море и островах, умение завязывать узлы и оценивать погоду и волнение моря.
//''Магия.''// Когда вы изучаете магический транспорт, это владение помогает вам в раскрытии знаний о нём или в определении, как им управлять.
//''Анализ, Внимательность.''// Когда вы осматриваете транспорт на наличие улик или скрытой информации, ваши знания помогают вам замечать вещи, которые другие пропустили бы.
//''Управление транспортом.''// Управляя транспортом, вы можете добавить свой бонус мастерства к КД транспорта и его спасброскам.
|!Действие| !Сл |
|Двигаться по пересечённой местности или по воде | 10 |
|Оценить состояние транспорта | 15 |
|Вписаться в поворот на высокой скорости | 20 |
| !_к12_ |!Наказание |
| 1-3 |Вы не совершали преступление и были освобождены после обвинения. |
| 4-6 |Вы совершили преступление или помогли совершить, но, тем не менее, власти признали вас невиновным. |
| 7-8 |Вас едва не поймали с поличным. Вы должны были спасаться бегством и на данный момент вас разыскивают в поселении, где произошло преступление. |
| 9-12 |Вы были схвачены, преданы суду и провели много времени в тюрьме, гребцом на судне или на каторге. Вы отбыли наказание в течение 1к4 лет или успешно бежали после истечения этого срока. |
У вас было низкое социальное положение, но судьбой было уготовано большее. Жители вашей родной деревни уже считают вас своим героем, но вам предначертано сражаться с тиранами и чудовищами, угрожающими другим.
* ''Владение навыками:'' Выносливость, Уход за животными
* ''Владение инструментами:'' Один вид [[инструментов ремесленников|Инструменты ремесленников]], [[наземный транспорт|Наземный и водный транспорт]]
* ''Экипировка:'' Инструменты ремесленника, которыми вы владеете, лопата, железный котёл, комплект одежды селянина, кошель с 10 см
!!!Определяющее событие
Вы занимались обычным делом для деревенщины. Возможно, вы возделывали землю, трудились в шахте, прислуживали дворянину, пасли скот, рубили деревья или копали могилы. Но потом произошло нечто, втянувшее вас в великие события. Выберите или определите случайно определяющее событие, сделавшее вас героем среди своего народа.
| !к10 |!Определяющее событие |
| 1 |Я дал отпор прислужникам тирана. |
| 2 |Я спас народ от природного катаклизма. |
| 3 |Я сразился один на один с ужасным чудищем. |
| 4 |Я обокрал продажного торговца, чтобы помочь бедным. |
| 5 |Я возглавил ополчение, отбросившее врага. |
| 6 |Я вломился в замок тирана и украл оружие для своего народа. |
| 7 |Я учил крестьян, как использовать обычные инструменты в качестве оружия против солдат тирана. |
| 8 |Лорд отменил непопулярный закон после того как я выступил с акцией протеста. |
| 9 |Небожитель, фея или другое подобное существо благословило меня или открыло тайну моего рождения. |
| 10 |Вступив в армию лорда, я получил хорошее звание и заслужил благодарности. |
!!!Умение: Деревенское гостеприимство
Вы сами из простого народа, и потому легко находите с ними общий язык. Вы можете найти место, чтобы спрятаться, отдохнуть или подлечиться среди обывателей, если только вы не угрожаете им. Они укроют вас от представителей закона и тех, кто ищет вас, но своими жизнями за вас они рисковать не будут.
!!!Персонализация
Народный герой — один из обывателей, как в хорошем смысле, так и в плохом. Многие из них считают своё происхождение положительной стороной, а не изъяном, и их родное поселение остаётся навсегда очень важным для них.
| !к8 |!Черта характера |
| 1 |Я сужу других по поступкам, а не словам. |
| 2 |Если кто-то в беде, я всегда готов прийти на помощь. |
| 3 |Задумав что-то, я прямолинейно иду к цели, невзирая на помехи. |
| 4 |У меня обострённое чувство справедливости, и в споре я всегда ищу самого честного решения. |
| 5 |Я уверен в своих способностях, и стараюсь внушить такую же уверенность в других. |
| 6 |Пусть думают другие. Я предпочитаю действовать. |
| 7 |Я неправильно произношу длинные слова, когда пытаюсь выглядеть умнее. |
| 8 |Я быстро устаю. Когда уже я найду свою судьбу? |
| !к6 |!Идеал |
| 1 |''Уважение.'' Нужно относиться друг к другу с достоинством и уважением. |
| 2 |''Справедливость.'' Закон не должен делать ни для кого исключений, и никто не может стать выше закона. |
| 3 |''Свобода.'' Тираны не должны угнетать народ. |
| 4 |''Мощь.'' Если я стану сильным, я смогу брать то, что захочу — и я это заслуживаю. |
| 5 |''Искренность.'' Нет ничего хорошего в том, что ты притворяешься тем, кем не являешься. |
| 6 |''Судьба.'' Никто и ничто не собьёт меня с пути к высшему призванию. |
| !к6 |!Привязанность |
| 1 |У меня есть семья, но я не знаю, где она. Надеюсь, когда-нибудь я увижу их вновь. |
| 2 |Я работал на земле, я люблю землю, и я буду защищать землю. |
| 3 |Один благородный меня дико поколотил, и я вымещаю свой гнев на всех встреченных задирах. |
| 4 |Мои инструменты — символ моей былой жизни, и я ношу их, чтобы не забывать корни. |
| 5 |Я защищаю тех, кто не может защитить себя сам. |
| 6 |Хотел бы я, чтобы та, кого я любил в детстве, разделила со мной судьбу. |
| !к6 |!Слабость |
| 1 |Тиран, правящий моими землями, ни перед чем не остановится, лишь бы убить меня. |
| 2 |Я слепо верю в своё предназначение, и не замечаю ни своих недостатков, ни смертельных опасностей. |
| 3 |Те, кто знают меня молодым, знают и мою самую постыдную тайну, так что я никогда не вернусь домой. |
| 4 |Я беззащитен перед пороками большого города, особенно перед пьянством. |
| 5 |Я тайно считаю, что было бы хорошо стать тираном, правящим землями. |
| 6 |Я не доверяю союзникам. |
Некоторые магические предметы требуют того, чтобы существо образовало с ними связь, прежде чем оно сможет использовать их магические свойства. Эта связь называется настройкой, и у некоторых предметов могут быть определённые условия для её проведения. Если условием является класс, существо должно быть представителем этого класса, чтобы настроиться на предмет (если указанный класс это класс заклинателя, чудовище выполняет это требование, если у него есть ячейки заклинаний и оно использует список заклинаний этого класса). Если для настройки нужно быть заклинателем, существо выполняет это требование, если может накладывать хотя бы одно заклинание при помощи умений или особых свойств, без использования магических предметов и подобных вещей.
Не настроившись на предмет, который того требует, существо получает от него только немагические преимущества, если в его описании не указано иное. Например, магический щит, который требует настройки, даёт преимущества обычного щита существу, не настроившемуся на него, но при этом не проявляет свои магические свойства.
Настройка на предмет требует, чтобы существо провело короткий отдых, в течение которого оно будет фокусироваться только на этом предмете, находясь при этом в постоянном физическом контакте с ним (это не может быть тот же самый короткий отдых, что используется для изучения свойств предмета). Эта фокусировка может принимать формы тренировки с оружием (для оружия), медитации (для чудесного предмета), либо какой-то другой соответствующей деятельности. Если короткий отдых прерывается, попытка настройки терпит неудачу. Если же всё складывается удачно, то в конце короткого отдыха существо получает интуитивное понимание того, как активировать магические свойства предмета, в том числе понимает необходимые для этого командные слова.
В конкретный промежуток времени предмет может быть настроен только на одно существо, и существо не может быть настроено на более чем три магических предмета одновременно. Любая попытка настроиться на четвёртый предмет автоматически проваливается; существо сначала должно прервать настройку на один из тех трёх предметов, на которые оно настроено. Кроме того, существо не может настроиться на копии одного и того же предмета. Например, существо не может настроиться более чем на одно //кольцо защиты// одновременно.
Настройка на магический предмет заканчивается, если существо перестаёт удовлетворять требованиям для осуществления настройки, или если предмет находился на расстоянии более 30 м в течение, по крайней мере, 24 часов, или если существо умирает, а также, если другое существо настраивается на предмет. Существо может также добровольно отменить настройку, потратив другой короткий отдых, фокусируясь на предмете, за исключением тех случаев, когда предмет проклят.
Вы можете потратить 2 очка ци, чтобы сотворить заклинание //порыв ветра//.
Начертание свитков - это процесс создания магических свитков. Магические свитки полезны как в качестве способа сотворения заклинаний, так и в качестве основы магической формулы, используемой в [[Зачаровывании|Зачаровывание]], поэтому умение создавать свитки пригодится каждому магу в группе приключенцев.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги начертания свитка в самой простой форме:
* Выберите известное вам заклинание, которое вы способны сотворять, либо используйте для выбора альтернативные методы (см. "Магическая формула").
* Приобретите предметы, перечисленные в колонке Материалы для свитка этого уровня и вида.
* Используйте свои [[инструменты каллиграфа|Инструменты каллиграфа]] для начертания свитка в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Интеллекта + ваш бонус мастерства [[инструментов каллиграфа|Инструменты каллиграфа]] (если вы владеете навыком Магия)).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в начертании свитка сравняется с указанным временем изготовления, свиток считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Начертание свитков основано на использовании [[инструментов каллиграфа|Инструменты каллиграфа]]. Попытка изготовить магический свиток без них невозможна. Начертание свитков использует ваш модификатор Интеллекта.
Несмотря на то, что заклинатели любого уровня могут создавать свитки с известными им заклинаниями, этот процесс представляет собой систематическое применение магической теории, чтобы записать заклинание в виде функции, которую впоследствии можно использовать.
Кроме того, как и для родственных этому ремеслу [[Вырезанию палочек|Вырезание палочек]] и [[Зачаровыванию|Зачаровывание]], вам необходимо владение навыком Магия; без владения навыком Магия вы не сможете добавить к проверкам на начертание свитков бонус владения инструментами.
<<<
//''Литании''//
Мастер может разрешить [[жрецу|Жрец]] использовать для этого ремесла Мудрость вместо Интеллекта и владение Религией вместо Магии. Свитки, созданные таким образом, называются Литаниями и могут быть использованы только представителями той же веры.
<<<
---
!!!Материалы: пергамент и чернила
Материалами для начертания свитков являются чернила и пергамент. Чернила и пергамент, используемые в свитках, обычно покупаются, а их цены приведены в таблице [[Материалы|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=2046152386]], либо в таблице ниже. Некоторые виды редкого пергамента могут быть получены из редких алхимических ингредиентов алхимиком или из шкур магических существ кожевенником. Чернила, используемые для создания свитков, должны быть особого состава, который позволяет им содержать магическую сущность глифов, символов, рун и слов, составляющих магический свиток. Эти чернила обычно создаются алхимиками. Если материалы найдены среди сокровищ, они рассчитываются так же, как и любые другие ценные невалютные сокровища.
|!Материал | !Цена|
|Обычные магические чернила | 15 см|
|Пергамент | 1 мм|
|Необычные магические чернила | 40 см|
|Необычный пергамент | 40 см|
|Редкие магические чернила | 200 см|
|Редкий пергамент | 200 см|
|Очень редкие магические чернила | 2000 см|
|Очень редкий пергамент | 2000 см|
|Легендарные магические чернила | 5000 см|
|Легендарный пергамент | 5000 см|
---
!!!Проверка ремесла
Когда вы хотите поработать над начертанием свитков, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор начертания свитков = бонус мастерства инструментов каллиграфа (если вы владеете навыком Магия) + модификатор Интеллекта
```
!!!Успех и провал
Для начертания свитков, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Магическая формула
Чтобы изготовить свиток заклинания, вы должны знать магическую формулу заклинания, на основе которого вы хотите создать свиток заклинания. Самый простой способ получить это знание - знать, как сотворить заклинание. Вам всегда доступны магические формулы известных вам заклинаний. В противном случае, чтобы создать свиток заклинания, необходимо обладать глубокими знаниями о нем. Ниже перечислены способы получения этих знаний:
* Заклинание записано в вашу книгу заклинаний волшебника.
* Заклинание записано в вашу ритуальную книгу ритуального залинателя.
* У вас есть свиток этого заклинания (Сл ремесла +2)
* Вы изучили магическую формулу и записали её. Для изучения заклинания таким способом требуется владение навыком Магия и 8 часов (1 день) изучения на каждый уровень заклинания, а также доступ к учителю или книге, в которой записано заклинание. Выучив формулу заклинания, вы можете записать её в книгу магических формул и впоследствии создавать из неё свитки.
!!!Вид эссенции свитка
Вид эссенции определяется списком заклинаний, из которого взято заклинание; если оно находится в нескольких списках заклинаний, то определяется тем, каким образом вы получили доступ к заклинанию. Если у вас есть доступ к заклинанию через несколько списков или письменную форму заклинания, вы можете выбрать, какую эссенцию использовать для заклинаний, у которых есть несколько вариантов.
|!Вид эссенции | !Список заклинаний |
|Арканная | Бард, Волшебник, Изобретатель, Колдун, Чародей |
|Божественная | Жрец, Паладин |
|Первородная | Друид, Следопыт |
|Псионическая | Монах, Псион |
Ваш покровитель – могущественное существо с Верхних Планов. Вы связаны с древним эмпиреем, соларом, ки-рином, единорогом или другим существом, обитающим в планах вечного блаженства. Ваш договор с этим существом позволяет вам испытать легкое прикосновение к святому свету, озаряющему вселенную.
Связь с такой силой может привести к изменениям в вашем поведении и убеждениях. Вы можете обнаружить в себе желание уничтожать нежить, побеждать исчадий и защищать невинных. Временами ваше сердце может наполниться тоской по небесному царству вашего покровителя и желанием бродить по этому раю до конца своих дней. Но вы знаете, что пока ваша миссия - среди смертных, и что ваш договор обязывает вас нести свет в темные уголки мира.
---
!!! [img[1.png]] Расширенный список заклинаний
Небожитель позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//лечение ран//, //направленный снаряд// |
| !2 |//малое восстановление//, //пылающий шар// |
| !3 |//возрождение//, //дневной свет// |
| !4 |//огненная стена//, //страж веры// |
| !5 |//высшее восстановление//, //небесный огонь// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Дополнительные заговоры
Вы известны заговоры //свет// и //священное пламя//. Эти заговоры считаются для вас заговорами колдуна, и они не учитываются в общее количество известных вам заговоров.
---
!!! [img[1.png]] Исцеляющий свет
<<<
Вы получаете способность направлять небесную энергию на исцеление ран.
<<<
У вас есть запас костей к6, которые вы тратите на это исцеление. Количество костей в
этом запасе равно 1 + уровень вашего колдуна.
Бонусным действием вы можете вылечить одно видимое вами существо в пределах 12 м от вас, потратив несколько костей из запаса. Максимальное количество костей, которые вы можете потратить за один раз, равно вашему модификатору Харизмы (минимум 1). Совершите бросок потраченных костей, сложите их значения и восстановите цели количество хитов, равное полученной сумме.
Все потраченные кости восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Сияющая душа
<<<
Ваша связь с Небожителем позволяет вам служить проводником сияющей энергии.
<<<
Вы получаете сопротивление к урону излучением, и когда вы сотворяете заклинание, наносящее урон излучением или огнём, вы можете добавить модификатор Харизмы к урону излучением или огнём, полученному одной из целей этого заклинания.
---
!!! [img[10.png]] Небесная стойкость
Вы получаете временные хиты, когда завершаете короткий или продолжительный отдых. Количество временных хитов равно вашему модификатору Харизмы + уровень колдуна. Кроме того, в конце отдыха, выберите до пяти видимых вами существ. Эти существа получают временные хиты в количестве равном вашему модификатору Харизмы + половина уровней колдуна.
---
!!! [img[14.png]] Жгучее возмездие
<<<
Сияющая энергия, которую вы применяете, позволяет вам противостоять смерти.
<<<
Когда вам нужно совершить спасбросок от смерти в начале вашего хода, вы можете вместо этого подняться на ноги со вспышкой сияющей энергии. Вы восстанавливаете хиты, равные половине вашего максимального значения хитов, после чего – можете встать, если захотите. Каждое существо по вашему выбору, находящееся в пределах 6 м от вас, получает 2к8 + ваш модификатор Харизмы урона излучением и ослеплено до конца текущего хода.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Когда видимое вами существо попадает по вам атакой, вы можете реакцией уменьшить урон, причиняемый вам этой атакой, вдвое.
* Вас невозможно увидеть без помощи магии или особого чувства.
* Если вы не [[скрыты|Скрытый]], существам, которые не видят вас, все еще известно, какое пространство вы занимаете, по шуму, который вы издаёте, по оставленным вами следам и/или прочим вторичным признакам.
* Существа, которые не видят вас, совершают броски атаки по вам с помехой.
* Вы совершаете броски атаки по существам, которые не видят вас, с преимуществом.
* Вы не можете совершать действия и реакции.
* Вы теряете концентрацию на заклинании.
В заклинании указано, что заклинатель можерт сделать его целью: существо любого типа, существо определённого типа (например, гуманоид или зверь), объект, область, самого себя или что-то ещё.
Если вы направляете заклинание на кого-то или что-то, что не может быть целью заклинания, с целью ничего не происходит, но, если вы использовали ячейку заклинания, ячейка тратится. Если заклинание обычно не влияет на цель, которая преуспевает в спасброске, то недопустимая цель автоматически преуспевает в спасброске, даже если она не пыталась. Иными словами, вы понимаете, что заклинание не оказало влияния на цель.
Вы заключили договор с бессмертной сущностью - существом, которое не подчиняется циклу жизни и смерти, отказавшись от своей бренной оболочки, чтобы вечно преследовать свои непостижимые амбиции. Для таких существ время и мораль - мимолетные вещи, заботы тех, для кого песчинки все еще спешат по песочным часам жизни. Будучи когда-то смертными, эта древняя нежить не понаслышке знает о путях амбиций и дорогах, ведущих за двери смерти. Они охотно делятся этим порочным знанием, а также другими секретами с теми, кто исполняет их волю среди живых.
К существам этого типа относятся демилич Асерерак, вампир-тиран Кас Кроваворукий, гитъянская королева-лич Влаакит, драколич Драгота, фараон нежити Анкхтепот и неуловимый Тёмный Лорд Азалин Рекс.
---
!!! [img[1.png]] Расширенный список заклинаний
Нежить позволяет вам при изучении заклинаний колдуна выбирать из более широкого списка. В ваш список заклинаний колдуна добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !1 |//порча//, //псевдожизнь// |
| !2 |//воображаемая сила//, //глухота/слепота// |
| !3 |//призрачный скакун//, //разговор с мёртвыми// |
| !4 |//высшая невидимость//, //защита от смерти// |
| !5 |//облако смерти//, //преграда жизни// |
//УЗ - Уровень заклинания//
---
!!! [img[1.png]] Форма ужаса
<<<
Вы проявляете аспект жуткой силы своего покровителя.
<<<
Бонусным действием вы трансформируетесь на 1 минуту. Во время трансформации вы получаете следующие преимущества:
* Вы получаете временные хиты в количестве, равном 1к10 + ваш уровень колдуна.
* Раз в свой ход, когда вы попадаете атакой по существу, вы можете заставить его совершить спасбросок Мудрости. При провале цель [[испугана|Испуганный]] вами до конца вашего следующего хода.
* Вы иммунны к состоянию [[испуга|Испуганный]].
Вы можете трансформироваться количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
<<<
Внешний вид вашей Формы ужаса отражает некоторые аспекты вашего покровителя. Например, ваша форма может быть саваном из теней, образующим корону и мантию вашего покровителя-лича, или ваше тело может светиться глифами древних погребальных обрядов и быть окружено ветрами пустыни, что говорит о вашем покровителе-мумии.
<<<
---
!!! [img[6.png]] Затронутый могилой
<<<
Силы вашего покровителя оказывают глубокое воздействие на ваше тело и магию.
<<<
Вам не нужно есть, пить или дышать.
Кроме того, раз в свой ход, когда вы попадаете атакой по существу и наносите ему урон, вы можете заменить вид урона на некротическую энергию. Пока вы используете свою Форму ужаса, вы можете добавить одну дополнительную кость урона при определении этого урона некротической энергией, получаемого целью.
---
!!! [img[10.png]] Некротическая оболочка
<<<
Ваша связь с нежитью и некротической энергией теперь пронизывает ваше тело.
<<<
Вы получаете сопротивление к урону некротической энергией. Во время трансформации в Форму ужаса вы получаете иммунитет к урону некротической энергией.
Кроме того, когда ваши хиты опускаются до 0, вы можете реакцией вызвать выброс смертоносной энергии. Ваши хиты при этом опускаются до 1, а не до 0. Каждое существо по вашему выбору, находящееся в радиусе 6 м от вас, получает урон некротической энергией в количестве, равном 2к10 + ваш уровень колдуна. После чего вы получаете 1 степень [[истощения|Истощённый]]. Вы не можете совершить эту реакцию повторно, пока не завершите 1к4 продолжительных отдыха.
---
!!! [img[14.png]] Духовная проекция
<<<
Ваш дух может стать свободным от вашей физической формы.
<<<
Действием вы можете спроецировать свой дух из своего тела. Тело, которое вы оставляете, находится в бессознательном состоянии.
Ваш дух похож на вашу смертную форму почти во всех отношениях, повторяя вашу игровую статистику, но не ваше имущество. Любой урон или другие эффекты, наносимые вашему духу влияют на физическое тело и наоборот. Ваш дух может находиться вне тела до 1 часа, либо пока вы не потеряете концентрацию (как если бы концентрировались на заклинании).. Когда ваша проекция оканчивается, ваш дух возвращается в ваше тело или ваше тело магически телепортируется в пространство вашего духа (на ваш выбор).
Проецируя свой дух, вы получаете следующие преимущества:
* Ваш дух и тело получают сопротивление к дробящему, колющему и рубящему урону.
* Когда вы сотворяете заклинание школы вызова или некромантии, заклинание не требует вербальных или соматических компонентов, а также материальных компонентов, не имеющих стоимости.
* Вы обладаете скоростью полета, равной вашей скорости ходьбы, и можете парить. Вы можете перемещаться сквозь существ и предметы, как если бы это была труднопроходимая местность, но вы получаете 1к10 урона силовым полем, если заканчиваете свой ход внутри существа или предмета.
* Пока вы используете свою Форму ужаса, раз в свой ход, когда вы наносите урон некротической энергией существу, вы восстанавливаете хиты в количестве, равном половине нанесенного урона некротической энергией.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
При сотворении заклинания вы можете потратить 1 очко чародейства, чтоб сотворить его без вербальных и соматических компонентов.
!!!Излечение болезни
Во время отдыха вы можете оказать помощь существу в борьбе с болезнью и предотвращению её распространения, потратив одно использование //набора травника//. Цель может тут же повторить спасбросок против эффекта болезни, который на неё уже действует. Вы можете потратить ещё одно использование //набора травника// и совершить проверку Мудрости (Медицина) против Сл болезни. При успехе цель совершает свой спасбросок с преимуществом. Кроме того, все спасброски против заражения болезнью от больного существа совершаются с преимуществом.
Существо не может повторно получить преимущества от излечения болезни, пока не окончит ночлег.
---
!!!Облегчение боли
Во время короткого отдыха или ночлега вы можете облегчить боль одного существа, потратив одно использование //комплекта целителя// или //набора травника//. Если цель тратит Кости Хитов в течение этого отдыха, она может использовать максимальное значение __одной__ из костей, вместо результата броска. Кроме того, цель совершает свой следующий спасбросок Телосложения с преимуществом.
Существо может получить преимущества от облегчения боли только один раз за отдых.
---
!!!Облегчение действия яда
Во время отдыха вы можете оказать помощь существу против воздействия яда, потратив одно использование //набора травника//. Цель получает сопротивление против следующего урона ядом, который она получит, и может тут же повторить спасбросок против эффекта яда, который на неё уже действует. Вы можете потратить ещё одно использование //набора травника// и совершить проверку Мудрости (Медицина) против Сл яда. При успехе цель совершает свой спасбросок с преимуществом.
Существо не может повторно получить преимущества от облегчения действия яда, пока не окончит ночлег.
---
!!!Первая помощь
Вы можете действием оказать первую помощь ''умирающему'' существу, потратив одно использование //комплекта целителя// или //саквояжа хирурга//. Совершите проверку Мудрости (Медицина) со Сл 10, при успехе цель ''стабилизирована''. Если вы используете подручные средства вместо надлежащих инструментов, совершите проверку с помехой.
''Стабилизированное'' существо перестает быть ''умирающим'', но становится ''бессознательным'', пока не восстановит хотя бы 1 хит. Получив урон, существо снова становится ''умирающим''. ''Стабилизированное'' существо, не получившее лечения, восстанавливает 1 хит после 1к4 часов.
---
!!!Реанимация
Вы можете действием попытаться оживить существо в состоянии клинической смерти, потратив одно использование //комплекта целителя//. Существо может быть оживлено, если оно мертво не более чем 1 + мод. Телосложения существа (минимум 1) раунд.
Совершите проверку Мудрости (Медицина) со Сл 20. При провале Сл следующей проверки реанимации возрастает на 5. При успехе цель становится ''умирающей'' и может продолжать совершать //спасброски от смерти// в начале каждого своего раунда, пока не провалит один из них, после чего погибает и больше не может быть реанимирована.
Существо не может быть реанимировано повторно, пока не окончит ночлег.
---
!!!Хирургическая операция
Вы можете провести операцию на раненом существе и попытаться упростить излечение одного из его ранений, потратив по одному использованию //саквояжа хирурга// за каждый час работы. Совершите проверку Мудрости (Медицина) в соответствии с таблицей сложности исцеления ранения, приведенной ниже. Персонаж, владеющий навыком Медицина, может оказать вам помощь, потратив ещё одно использование //саквояжа хирурга//.
При успехе условия излечения ранения изменяются на указанные в таблице, а если ранение требует от цели совершения спасбросков Телосложения, она совершает их с преимуществом до конца своего следующего продолжительного отдыха.
Вы повторно не можете проводить операцию на том же самом ранении, пока цель не окончит продолжительный отдых.
| !Ур | !Сл | !Время |!Результат |
| I | 10 | 1 ч |Любое магическое лечение, //малое// или //высшее восстановление//, или 1 неделя без лечения. |
| II | 15 | 2 ч |Магическое лечение 2 уровня или выше, //малое// или //высшее восстановление//, или 2 недели без лечения. |
| III | 20 | 3 ч |Магическое лечение 3 уровня или выше, //малое// или //высшее восстановление//, или 3 недели без лечения. |
| IV | 25 | 4 ч |Магическое лечение 4 уровня или выше, //высшее восстановление// или 4 недели без лечения. |
| V | 30 | 5 ч |Магическое лечение 5 уровня или выше, или //высшее восстановление//. |
Сила Необузданного Разума - это чаще всего врожденная сила, которую они пытаются понять или контролировать, отражение их душевного состояния и настроения, проецируемое на окружающий мир, часто с разрушительными результатами. Жизнь Необузданного псиона - это зачастую его путь к контролю над своими непокорными силами... или к полному принятию разрушительных сил.
Источники их врожденной силы могут быть самыми разными: они могут быть представителями псионической расы, рожденными под влиянием далеких превратных сил, искаженными кровью фей, или предвестниками чего-то более зловещего, надвигающегося на материальный мир. Иногда их сила проявляется в простых действиях, но чаще всего их сила становится известной и устрашающей, когда они выходят из себя.
Их мировоззрение часто зависит от того, какой подход к своим силам они выбрали. Псион, который делает упор на контроль и сдержанность, не давая своим эмоциям выходить из-под контроля, а силе - разбушеваться, чаще всего будет законопослушным, следуя строгому личному кодексу. С другой стороны, псион, который позволяет своей силе разгуляться, почти всегда будет хаотичным по своей природе, действуя по наитию... с большим размахом.
---
!!! [img[1.png]] Необузданная сила
<<<
Вы научились высвобождать свой разум для физического взаимодействия с окружающим миром.
<<<
Вам известна псионическая дисциплина [[Телекинеза|Телекинез]].
{{Телекинез}}
---
!!! [img[1.png]] Непреодолимая сила
Вы получаете способность сотворять заговор //чудотворство// с помощью ваших псионических сил. Когда вы сотворяете его таким образом, вам доступны дополнительные опции:
* Вы заставляете незакрепленные предметы общим весом до 5 кг в пределах 2 м от вас начать парить в течение 1 минуты.
* Вы можете заставить все цели Большого или меньшего размера в пределах 1 м от вас совершить спасбросок Силы. При провале они отталкиваются от вас на 1 м.
---
!!! [img[3.png]] Бушующая сила
Вы получаете Кость Буйства - к4. Один раз в свой ход при совершении броска урона вы можете добавить эту Кость Буйства к броску урона. Если вы наносили урон в свой предыдущий ход, ваша Кость Буйства становится к6, увеличиваясь с каждым последующим ходом на один шаг, вплоть до к12; если вы не наносили урон в свой последний ход или стали [[недееспособным|Недееспособный]], она снова становится к4. Если вы непрерывно поддерживаете Кость Буйства - к12 более одной минуты, вы получаете один уровень истощения.
---
!!! [img[6.png]] Усиленная псионика
Когда вы наносите урон псионической способностью, вы можете добавить свой модификатор Интеллекта к наносимому урону.
---
!!! [img[10.png]] Неуправляемый разум
<<<
Сила вашего буйного разума такова, что попытки других контролировать его оказываются тщетными.
<<<
Вы получаете иммунитет к состояниям [[Испуганный]] и [[Очарованный]], а также к эффектам, которые контролируют ваш разум, пока ваша Кость Буйства - к8 или больше.
---
!!! [img[14.png]] Неостановимое буйство
Когда урон опускает ваши хиты до нуля, вы можете совершить бросок Кости Буйства и добавить к броску модификатор Телосложения. Если результат больше, чем полученные вами излишки урона, то ваши хиты вместо этого опускаются до 1. Вы можете потратить 2 пси-очка, чтобы совершить бросок дополнительной Кости Буйства, добавив его к результату. Вы должны принять это решение до совершения броска первой Кости Буйства.
<<<
Вы можете создать взрыв сжатого воздуха, бьющий подобно могучему кулаку.
<<<
Вы можете действием потратить 2 очка ци и выбрать существо в пределах 6 м от вас. Цель должна совершить спасбросок Силы. При провале существо получает 3к10 дробящего урона плюс дополнительно 1к10 дробящего урона за каждое дополнительно потраченное очко ци, и вы можете оттолкнуть существо от себя на расстояние до 4 м и [[сбить его с ног|Сбитый с ног / Лежащий ничком]]. При успехе существо получает половину урона, не отталкивается и не сбивается с ног.
Существо, которое пытается, но не может сотворить заклинание со свитка, должно совершить спасбросок Интеллекта со Сл 10. При провале Мастер совершает бросок к6 для определения последствий в соответствии с приведённой ниже таблицей.
!!!Неудачи при прочтении свитков
|!к6|!Результат|
| 1 |Волна магической энергии причиняет заклинателю 1к6 урона силовым полем за каждый уровень заклинания. |
| 2 |Вместо намеченной цели заклинание перенаправляется на заклинателя или на его союзника (определяется случайным образом). Если изначальной целью заклинания был сам заклинатель, то оно перенаправляется на случайное существо, находящееся поблизости. |
| 3 |Заклинание воздействует на случайную область в пределах действия заклинания. |
| 4 |Эффект заклинания оказывается прямо противоположен тому, каким он должен был быть. При этом заклинание не приносит ни вреда, ни пользы. Например, огненный шар оборачивается безобидной волной холода. |
| 5 |Заклинатель страдает от незначительного, но причудливого эффекта, связанного с природой заклинания. Продолжительность этого эффекта такая же, как и длительность неудавшегося заклинания или же 1к10 минут для заклинаний с длительностью «мгновенная». Например, огненный шар может обернуться тем, что из ушей заклинателя в течение 1к10 минут будет идти дым. |
| 6 |Заклинание активируется через 1к12 часов. Если целью заклинания был сам заклинатель, то оно срабатывает как обычно. Если целью было другое существо, которого уже нет рядом, то эффект от заклинания распространяется в направлении этого существа, на расстояние максимальной дистанции самого заклинания. |
Вы живёте в нечеловеческих условиях. У вас нет дома, вы спите где придётся, шныряя по сараям, прячась под ящиками и надеясь на подачки от тех, у кого дела обстоят лучше вашего. Никудышный стиль жизни опасен. Вас всегда преследуют насилие, болезни и голод. Те, кто вместе с вами ведёт никудышное существование, хотят заполучить ваши доспехи, оружие и снаряжение, так как для них это целое состояние. За вами все пристально следят.
Вы живёте в протекающем стойле, землянке за городом или кишащей клопами ночлежке в трущобах. Вы укрыты от стихий, но окружение всё равно опасно, так как грозит болезнями, голодом и неудачами. Многие за вами следят, и закон вас почти не защищает. Многие из тех, что ведут такое существование, испытывают трудности. Им не дают покоя, их клеймят изгоями и они страдают от болезней.
Стандартные сутки разбиваются на шесть частей:
* 05:00-06:00 - рассвет;
* 06:00-11:00 - утро;
* 11:00-13:00 - полдень;
* 13:00-18:00 - день;
* 18:00-19:00 - закат;
* 19:00-05:00 - ночь.
Если вы решили отдохнуть в течение более длительного периода времени, или вам необходимо выполнить несколько сложных задач, пришло время разбить лагерь и устроиться на ночлег.
Для сна персонажу требуется нормально 8 часов в сутки; для перехода ко сну и от сна к бодрствованию (раздевание, приведение в порядок снаряжения, одевание после сна, умывание и т.п.) нужно около 2 часов; на приготовление и принятие пищи утром и вечером — 2 часа. Итого на полноценный ночлег уходит 12 часов, обычно, от начала заката в 18:00 до окончания рассвета в 6:00.
Найдите безопасное место, разожгите костёр, поставьте палатки, обезопасьте животных, транспорт и груз. Для того, чтобы устроиться на ночлег, необходимо выполнить несколько основных шагов:
# ''Разбейте лагерь:'' При необходимости пройдите проверку на поиск убежища.
# ''Выставьте караул:'' Караульные отвечают за оборону лагеря и пристально наблюдают за окрестностями в поисках возможных угроз.
# ''Поспите.''
# ''Сверните лагерь.''
''Успешное завершение ночлега предоставляет вам те же преимущества, что и'' [[короткий отдых|Короткий отдых]].
<<tabs "[[Разбивка лагеря]] [[Караул]] [[Сон]]" "" "$:/state/tab1">>
Нуллификация - это способность противодействовать сверхъестественным эффектам мира, возвращая реальность к ее первоначальному состоянию.
---
!!!Деструктивное воздействие
<<<
Вы можете создать ауру вмешательства, окутав себя деструктивной силой, устанавливающей реальность.
<<<
Вы можете окончить действие незначительных магических или псионических эффекты (например, эффекты заговоров или псионических способностей с нулевой стоимостью), прикоснувшись к ним, и обладаете сопротивлением к иллюзиям или магическому урону от того, к чему прикасаетесь (получая преимущество на спасброски против них, если это применимо).
Если вы схватили или иным образом касаетесь заклинателя или псионического существа, в начале своего хода вы можете потратить 1 или более пси-очко, чтобы вмешаться в его способности до начала вашего следующего хода. Чтобы сотворить заклинание или использовать псионическую способность, существо должно преуспеть в спасброске своей базовой характеристики против вашей Сл спасброска псионики, если только оно не сотворяет заклинание более высокого уровня или не использует силу с большим количеством пси-очков, чем количество пси-очков, потраченных на эту способность.
---
!!!Отрицание
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 6 м
''Компоненты:'' С
''Длительность:'' мгновенная
Вы выпускаете поток сырой псионической нуллификации в видимое вам существо в пределах дистанции. Существо должно преуспеть в спасброске Харизмы, иначе получит 1к4 урона силовым полем.
Если цель - аберрация, исчадье, конструкт, небожитель, нежить, фея, элементаль, или существо, способное сотворять заклинания или использовать псионические способности, оно получает дополнительно 1к4 урона силовым полем и становится дезориентированным; до конца своего следующего хода, каждый раз когда цель совершает бросок атаки, проверку характеристики или спасбросок для поддержания концентрации на заклинании, она должна бросить 1к4 и вычесть выпавшее число из результата.
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Отрицанию (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Аура (3 пси-очка):'' Вместо того чтобы быть нацеленной на существо, эта способность становится эффектом действующим в пределах 4 м вокруг вас до начала вашего следующего хода; любое существо по вашему выбору, которое входит или начинает свой ход в области действия, должно совершить спасбросок против этой способности.
* ''Затяжное (1+ пси-очко):'' Если цель провалит спасбросок, вы можете применить к ней Деструктивное воздействие.
* ''Сверхъестественное (1+ пси-очко):'' Сверхъестественный эффект этого существа или воздействующий на него прекращается; если эффект является магическим или псионическим, он прекращается только в том случае, если количество пси-очков, потраченных на этот модификатор, равно или превышает уровень заклинания или количество пси-очков, потраченных на эффект. Если эффект является врожденным свойством существа (либо целевого существа, либо воздействующего на цель этой способности), он прекращается, только если количество пси-очков превышает ПО (или уровень) целевого существа, и он возобновляется в конце следующего хода этого существа. Сверхъестественный эффект не может быть причиной существования этого существа, если только у него не меньше 10 хитов, тогда оно попадает под этот эффект.
* ''Твёрдое (2 пси-очка):'' Цель совершает спасбросок против этой способности с помехой.
* ''Экзистенциальное (1+ пси-очко):'' Если цель провалит спасбросок, она получит 1к4 урона силовым полем (первоначального и дополнительного, если применимо) за каждое дополнительно потраченное очко.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину , вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//защита от добра и зла// |
| !3 |//аннулирование эффекта// |
| !5 |//контрзаклинание//, //рассеивание магии//, //снятие проклятья// |
| !7 |//изгнание// |
| !9 |//рассеивание зла и добра// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
Вы можете использовать атаку оружием, чтобы выбить оружие или другой предмет из хватки цели.
Вы совершаете бросок атаки, которому противостоит проверка Силы (Атлетика) или Ловкости (Акробатика) цели (цель сама выбирает, какую характеристику использовать).
Вы совершаете бросок атаки с помехой, если цель держит предмет как минимум двумя руками. Цель совершает проверку характеристики с преимуществом, если она больше вас, или с помехой, если она меньше вас. Вы автоматически преуспеваете, если цель [[недееспособна|Недееспособный]].
Если вы выигрываете состязание, атака не причиняет ни урон, ни другие негативные эффекты, а цель просто роняет предмет. Вы можете свободным действием подобрать или откинуть предмет в выбранном вами направлении на расстояние, не превышающее 4 м.
Пока вы носите доспехи, вы получаете бонус +1 к КД.
Персонаж может выучить новый язык или обучиться работе с инструментом, если у него есть достаточно свободного времени и есть учитель, согласный его обучать.
//''Ресурсы и определение результата''//. Изучение нового инструмента или языка - это процесс, который может занять недели или месяцы целенаправленного обучения. Прогресс в обучении разбит на 4-часовые отрезки; прогресс можно накапливать и за меньшие периоды - например, по часу в день в свободное время, - но проверка обучения совершается только по прошествии 4 часов.
Проверка обучения - это проверка Интеллекта. Сл этих проверок обучения, а также количество необходимых успешных проверок зависит от изучаемого инструмента или языка, как указано в таблице ниже.
Для того чтобы научиться пользоваться инструментом или говорить на языке, обычно требуются формальные средства обучения, такие как сборник учебных пособий. Стоимость такого тома составляет 1 см за каждую проверку, необходимую для изучения инструмента или языка.
Лучше чтения книги - это наличие учителя, который может уловить и исправить ошибки на ранней стадии. Если вас обучает кто-то, кто хорошо владеет инструментом или языком, проверка на обучение совершается с преимуществом. Вы можете нанять учителя по цене 2 см за 4 часа.
Если у вас нет учебного пособия и вас не обучает инструктор, а вы пытаетесь учиться методом проб и ошибок, совершите проверку на обучение с помехой.
Некоторые инструменты и языки легче изучать, если у вас уже есть определенные навыки. Эти сочетания навыков перечислены в таблице ниже. Если вы владеете указанным навыком, вы добавляете к проверке обучения свой бонус мастерства.
|!Владение | !Сл | !Кол-во проверок | !Навык|
|Инструменты ремесленника | 10-15 | 25-50 | На усмотрение Мастера|
|Воровские инструменты | 10 | 50 | Ловкость рук|
|Игровой набор | 10 | 25 | Обман|
|Инструменты навигатора | 10 | 25 | Выживание|
|Инструменты отравителя | 15 | 50 | Природа|
|Музыкальный инструмент | 10 | 50 | Выступление|
|Набор для грима | 10 | 50 | Проницательность|
|Набор для фальсификации | 10 | 50 | Анализ|
|Набор травника | 10 | 50 | Медицина|
|Наземный транспорт | 10 | 25 | Уход за животными|
|Водный транспорт | 10 | 50 | Внимательность|
|Обычный язык | 10 | 25 | История|
|Экзотический язык | 15 | 50 | История|
|Экстрапланарный язык* | 15 | 75 | Магия/Религия|
//* Если у вас есть классовая или расовая особенность, происходящая из другого плана, например, экстрапланарное происхождение или экстрапланарный покровитель, вы совершаете проверки для изучения экстрапланарных языков, связанных с этим планом, с преимуществом.//
//''Осложнения''//. Осложнения, возникающие во время обучения, обычно связаны с учителем. На каждые 10 недель, потраченных на обучение, с вероятностью 10% может возникнуть осложнение, примеры которых приведены в таблице ниже.
| !к6 |!Осложнение |
| 1 |Ваш учитель исчез, и вам пришлось потратить одну рабочую неделю на поиски нового.|
| 2 |Ваш учитель использует редкие, устаревшие методики обучения, что вызывает комментарии со стороны окружающих. |
| 3 |Ваш учитель – шпион, посланный, чтобы узнать ваши планы.|
| 4 |Ваш учитель – разыскиваемый преступник. |
| 5 |Ваш учитель держит вас в ежовых рукавицах. |
| 6 |Учитель просит помочь ему справиться с угрозой. |
//Требование: 6 уровень//
Вы можете потратить 3 очка ци, чтобы сотворить заклинание //удержание личности//.
* Вы ничего не слышите и автоматически проваливаете все проверки характеристик, связанные со слухом.
<<<
He doesn't like you. I don't like you either. Watch yourself— we both bite.
— Beastmaster Karis
<<<
To most mortals, an animal is a pet or a tool, a companion or a means to an end. Such creatures provide food, labor, protection, and even company. Only in rare cases does the relationship between master and beast transcend these mundane trappings. Every feral beastmaster is an exception to this generality, learning to become one formidable unit with an animal that is at once a friend, a guardian, and a weapon.
Feral beastmasters know that, after the bond is formed, the capabilities and fate of master and beast are linked. Feral beastmasters among many races have nurtured the mystical connection between master and pet. They cultivated communication that transcends speech and approaches telepathy. As such a feral beastmaster grew in power, the magic of the world infused the relationship. It bound the animal and mortal closer together, driven to do so by the devotion, ritual connection, and common cause the two shared. Contact among peoples spread this technique, which some claim originated with elves.
Elf or not, you've managed to foster such a transcendent relationship with your beast companion. Although each of you is fiercely independent and deadly, you share emotions and thoughts. Each knows when the other is in need. You work in unison to fell your foes, and even your allies swear you act to support each other more quickly than any communication could possibly allow. In time, you might grow so close as to seem like one incredible being sharing two bodies.
''Feral Beastmasters in the World: ''A feral beastmaster feels more at home among the animals of nature than fellow sentient beings. Over time, these wanderers befriend a wide variety of animals, from mighty dire lions to tiny weasels. Eventually, a feral beastmaster takes on aspects of her animal companions, becoming almost as much animal as humanoid.
Druids and rangers are the most common feral beastmasters, thanks to those characters’ natural link with the animal world. Some barbarians, fighters, or scouts also become feral beastmasters, particularly those with a strong affinity for nature (such as elves or halflings). Characters of other classes rarely pursue this path.
NPC feral beastmasters are typically loners, relying on their animal companions for friendship on their travels. Goodaligned feral beastmasters might use their powers to right injustices, even allying themselves with rural villages for a time. Evil-aligned feral beastmasters are often openly hostile to civilization, becoming reclusive xenophobes.
''Adaptation:'' Feral beastmasters could belong to a widespread organization of like-minded individuals, each one dedicated to the bond between humanoid and animal. Rival factions might arise along alignment lines, or be divided by the choice of animal companions.
---
!!Одичалый повелитель зверей
| !Ранг |!Умения |
| !1 |Companion Pet, Feral Diversion |
| !2 |Fearsome Partnership, Hunter's Vision |
| !3 |Extra Companion Pet, Swiftness of Spirit |
| !4 |Feral Inspiration, Hunting Scent, Spirit Link, Twin-Soul Strike |
---
!!!Предварительные условия:
* ''Владение навыками.'' Выживание, Уход за животными.
* ''Особое.'' Вы подружились с существом, которое хотите сдеать своим спутником Ранга 1.
<<<
''Animal/Beast Companion Pets ''
This most often refers to a ranger's beast companion, but it could really apply to any companion pet a PC has acquired. Trained dogs, tamed griffons, beastmaster wolves, chain pact warlock familiars, etc.
<<<
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Телосложения или Мудрости (на ваш выбор)
```
---
!!Ранг 1
!!!Companion Pet
<<<
The companion pet you befriended before walking this path becomes your loyal ally.
<<<
With 8 hours of work and the expenditure of 50 GP worth of rare herbs and fine wood, you bond with your allied companion. At the end of the 8 hours, your companion pet gains the benefits listed below:
* The companion pet loses its Multiattack action, if it has one.
* The companion obeys your commands as best as it can. It takes its turn immediately after yours. On your turn, you can verbally command it (no action required). It will continue to follow your commands until it completes its task or you are incapacitated. If you are incapacitated or absent, your companion acts on its own.
* Your companion pet's proficiency bonus equals your own, and it adds your proficiency bonus to its AC, attack rolls, and damage rolls.
* Your companion pet gains proficiency in two skills of your choice. It also becomes proficient with all saving throws.
* Your companion has hit dice equal to your own, adjusting its hit points accordingly.
* For every 4 character levels you have, your companion pet can increase one ability score of your choice by 2, or it can increase two ability scores of your choice by 1. As normal, your companion can’t increase an ability score above 20 using this feature unless its description specifies otherwise.
* Your companion shares your alignment, and has a personality trait and a flaw that you can roll for or select from the tables below. Your companion shares your ideal, and its bond is always, “The beastmaster who travels with me is a beloved companion for whom I would gladly give my life.”
* If your companion pet is ever slain, the magical bond you share allows you to return it to life. With 8 hours of work and the expenditure of 25 GP worth of rare herbs and fine food, you call forth your companion’s spirit and use your magic to create a new body for it. You can return a companion pet to life in this manner even if you do not possess any part of its body. If you use this ability to return a former companion pet to life while you have a current companion pet, your current companion leaves you and is replaced by the restored companion.
<<<
''More than one Companion ''
Some DMs really don't like the extra companions, believing them to unbalance a party. This is perfectly fine. For those DMs (or even players that like this path but don't want more than one companion pet), a small adjustment could be granting Extra Attack to an existing companion instead of gaining an additional one. So a beast master ranger who walks this path would grant their ranger companion Extra Attack 1 at Rank 1 and Extra Attack 2 at rank 2, for a total of three attacks when taking the attack action.
<<<
!!!Feral Diversion
<<<
Your companion draws a foe's attention, allowing you to slip away safely.
<<<
//Rank 1 Rite (Recharges on a short or long rest)//
When you take the attack action on your turn, you can forgo one of your attacks to command your companion pet to use its reaction to make a melee weapon attack against one creature within 5 feet of you and within your companion's reach. On a hit, the target suffers the attack's normal effects plus an extra 1d10 damage, and you can move up to 15 feet away from the target without provoking opportunity attacks.
---
!!Ранг 2
!!!Fearsome Partnership
<<<
Your spiritual connection shares your understanding of the battlefield with your companion.
<<<
While you companion pet is within 50 feet of you, it gains a bonus on +1 bonus attack rolls and damage rolls. This bonus increases at Rank 3 (+2), and Rank 4 (+3).
!!!Hunter's Vision
<<<
Your connection with the natural world allows you to operate in it more efficiently.
<<<
You gain 60 feet of darkvision. If you already had darkvision, it instead increases by 30 feet.
---
!!Ранг 3
!!!Extra Companion Pet
<<<
Your bond with your companion pet has drawn the attention of another companion.
<<<
You gain a 2nd companion pet, following all the rules for the 1st one, with the following exception:
"If you return a former companion pet to life while you have two current companion pets, one companion pet of your choice leaves you and is replaced by the restored companion."
!!!Swiftness of Spirit
<<<
At your signal, your companions are poised for action.
<<<
//Rank 3 Rite (Recharges on a short or long rest) //
As a bonus action, choose one or two companion pets within 25 feet of you. Each companion who can see or hear you can either move up to their speed +10 feet (no action required) or gain advantage on its next attack roll within 1 minute.
---
!!Ранг 4
!!!Feral Inspiration
<<<
Your ferocity inspires your companions to lash out with increased vigor.
<<<
When you spend an inspiration to gain advantage on an attack roll, your companion pets gain advantage on attack rolls until the start of your next turn.
!!!Hunting Scent
<<<
This special quality allows you to detect approaching enemies, sniff out hidden foes, and track by sense of smell. You can identify familiar odors just as humans do familiar sights.
<<<
You can detect creatures within 30 feet by sense of smell. If creature is upwind, the range increases to 60 feet; if downwind, it drops to 15 feet. Strong scents, such as smoke or rotting garbage, can be detected at twice the ranges noted above. Overpowering scents, such as skunk musk or troglodyte stench, can be detected at triple normal range.
When you detect a scent, the exact location of the source is not revealed—only its presence somewhere within range. You can use a bonus action to note the direction of the scent. Whenever you come within 5 feet of the source, you pinpoint the source’s location.
You can follow tracks by smell, making a Wisdom (Survival) check to find or follow a track. The typical DC for a fresh trail is 5 (no matter what kind of surface holds the scent). This DC increases or decreases depending on how strong the quarry’s odor is, the number of creatures, and the age of the trail. For each hour that the trail is cold, the DC increases by 1. While you are tracking by scent, you ignore the effects of surface conditions and poor visibility.
!!!Spirit Link
<<<
Your spirit is linked with your companion pets.
<<<
As an action, you can spend up to three hit dice. Roll each die and add your Wisdom modifier to each roll. One or two of your companion pets you can see within 60 feet of you regain hit points equal to your total roll.
For example, if you have a 14 Wisdom and spend 3 hit dice and roll a 2, a 4, and a 5; your companion regains (2 + 2) + (4 + 2) + (5 + 2) = 17 hit points.
!!!Twin-Soul Strike
<<<
Whether attacking together or apart, you coordinate your strike with the attack of your companion pets to maximize devastation.
<<<
//Rank 5 Rite (Recharges on a long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 2d10 damage, and your companion pets gain advantage on attack rolls against the target until the end of your next turn.
Additionally, you can command one or two of your companion pets to use their reaction to make a melee weapon attack against a creature within their reach. On a hit, the target suffers the attack's normal effects plus an extra 2d10 damage.
If your companion pet targeted a different creature than you did, you gain advantage against that target until the end of your next turn.
Большинство эффектов в игре случается последовательно, согласно порядку, установленному правилами или Мастером. В редких случаях эффекты могут случится в одно время, особенно в начале или в конце хода существа. Если два или более события происходит одновременно в ход персонажа или монстра, тот, кто контролирует это существо – либо Мастер, либо игрок – определяет порядок, в котором происходят эти события. Например, если два эффекта происходят в конце хода персонажа игрока, игрок решает который из двух эффектов происходит первым.
* Вы, а также все немагические предметы, которые вы несёте или носите, трансформируютесь в твёрдое инертное вещество (как правило, в камень).
* Ваш вес увеличивается в 10 раз.
* Вы перестаёте стареть.
* Вы [[недееспособны|Недееспособный]].
* Вы не способны двигаться и говорить, а также не осознаёте своё окружение.
* Броски атаки по вам совершаются с преимуществом.
* Вы автоматически проваливаете проверки и спасброски Силы и Ловкости.
* Вы получаете сопротивление ко всем видам урона.
* Вы получаете иммунитет к ядам и болезням. Если яд или болезнь уже действовали на вас, их действие приостанавливается, пока это состояние не окончится.
* Когда вы теряете половину от своего максимума хитов, вы считаетесь окровавленным.
* Вы получили открытые раны или крупные гематомы, и вы подвергаетесь сильной боли во время физической активности. Даже если ваши раны скрыты, видящее вас существо может определить признаки боли, совершив проверку Мудрости (Проницательность) против вашей пассивной Выносливости или проверки Телосложения (Обман), если вы пытаетесь скрыть боль.
* Вы не можете восстанавливать хиты костями хитов.
* Вы можете снять это состояние, либо подняв своё текущее значение хитов выше 50% от максимума, либо потратив действием одно использование комплекта целителя на обработку ран.
Если существо и как минимум один его союзник находятся на противоположных сторонах или углах пространства врага в пределах досягаемости своих рукопашных атак, они окружают этого врага, и каждый из них получает бонус +2 к броскам рукопашных атак по этому врагу. Существо не получает преимуществ от окружения, если само окружено.
Существо также не участвует в окружении, если оно не видит врага или недееспособно. Существо Большого или ещё большего размера окружает, если как минимум одна клетка его пространства участвуют в окружении.
Если сомневаетесь в том, окружают ли два существа врага на поле, проведите воображаемую линию между центрами пространств существ. Если эта линия пересекает противоположные стороны или углы пространства врага, этот враг окружён.
[img class="centerme" [https://i.imgur.com/eymb2Ji.png]]
<<<
На третий день недели таверну посетил представитель птичьего народа. Его оперение было настолько красным, что пламя очага выглядело блеклым на его фоне, в то время как его стоический вид пробирал не меньше, чем метель, бушующая снаружи. Всё что он хотел знать, так это кратчайший путь в «Тиар-Бесил». Он ушёл. Не знаю, кто там живёт в этом Тиар-Бесиле, но подозреваю, что никогда и не узнаю.
— Дуглас Редвуд, //Хищные Птицы//
<<<
Живущие в изоляции высоко в горах на вершинах самых высоких деревьев, ааракокры, называемые иногда «птичьим народом», вызывают страх и удивление. Многие ааракокры даже не являются уроженцами Материального Плана. Они родом из мира, находящегося очень далеко — с бескрайних просторов Стихийного Плана Воздуха. Это иммигранты, беженцы, разведчики и исследователи, а их форпосты служат им плацдармом в неизвестном и чужом мире.
---
!!!Клюв и перо
С земли ааракокры выглядят как большие птицы. Только когда они спускаются на свои насесты на ветвях или ходят по земле, раскрывается их гуманоидный облик. Стоя прямо, ааракокра может достигать 1.5 м ростом. У них длинные, тонкие ноги, заканчивающиеся острыми когтями.
Их тела покрыты перьями. Цвет их оперения обычно означает положение в племени. У мужчин перья ярко выкрашены в красный, оранжевый или жёлтый цвета. У женщин же цвета более приглушённые, как правило, это коричневый или серый. Их птичьи головы внешне напоминают гибрид попугая и орла с вариациями, характерными для разных племён.
---
!!!Хранители неба
Наиболее комфортно ааракокры чувствуют себя в небе. Они могут проводить часы в воздухе, а некоторые даже и дни, расправляя крылья и позволяя восходящим потокам тёплого воздуха держать их в небесах. В сражении они показывают все свои способности динамики и акробатики, двигаясь с невероятной скоростью и изяществом, набрасываясь с оружием или выставленными вперёд когтями на противника, а затем отлетая обратно.
Однажды летавший ааракокра оставляет небо с неохотой. На своём родном плане они могут летать в течение нескольких дней или даже месяцев, приземляясь только чтобы отложить яйца и накормить своих птенцов, после чего отправляются обратно в небеса. Попавшие на Материальный План считают это место странным.
Они иногда забывают или просто игнорируют вертикальные расстояния, а к народам, вынужденным жить и трудиться на земле, они не испытывают ничего кроме жалости.
---
!!!Птичьи особенности
Сходство ааракокр и птиц не ограничивается лишь физическим. Многие ааракокры имеют манеру поведения как у самых обычных птиц. Они скрупулёзно ухаживают за своими перьями, чистят их и вычёсывают «пассажиров», которых могли подхватить. Когда они всё-таки спускаются с небес, то предпочитают делать это рядом с водоёмами, где они могут ловить рыбу и купаться сами.
Многие ааракокры добавляют в свою речь щебет, чтобы акцентировать внимание на том, что у сказанного может быть и другой смысл, так же как человек сделал бы это при помощи мимики и жестов. Ааракокра может расстроиться, если собеседник не в состоянии понять эти нюансы; например, угроза может быть воспринята как насмешка, и наоборот.
Идея владения чем-либо озадачивает большинство ааракокр. Разве может кто-то владеть небом? Даже когда им объясняют, они первоначально полагают, что собственность — это нечто мистическое. В результате у ааракокр, которые мало взаимодействуют с другими народами, могут быть неприятности, когда они спускаются с неба, чтобы забрать домашний скот, фрукты или зерно. Блестящие сверкающие объекты привлекают их взгляд. Им очень трудно не воровать подобные сокровища, так как считают, что они отлично подходят для украшения жилища. Ааракокры, которые проводят годы среди других рас, могут научиться подавлять эти порывы.
Заключение пугает ааракокр. Не иметь возможности летать, быть в ловушке под землёй или в ледяной тюрьме — это пытка, которую не каждый ааракокра может выдержать. Даже сидя на высоких ветвях или отдыхая в своих домах на вершине горы, они всегда настороже с бегающими глазами и телами, готовыми взлететь.
---
!!!Места обитания
Большинство ааракокр живёт на Стихийном Плане Воздуха. Ааракокры могут оказаться на Материальном Плане, преследуя врагов или пытаясь помешать их планам на той стороне. Несчастный случай может перенести гнездо ааракокр на другой план. Некоторые проникают в этот мир через порталы на своём собственном плане, после чего гнездятся в высоких горах или под пологом старых лесов.
После того, как племя ааракокр поселится в районе, они разделяют охотничьи угодья, площадь которых может достигать до 100 километров в поперечнике, и начинают охотиться в землях возле своей колонии, продвигаясь дальше, когда ресурсов становится недостаточно.
Типичная колония состоит из одного большого гнезда без крыши, сплетённого из ветвей. Старейшина, при поддержке шамана, выступает в качестве лидера.
---
!!!Великая цель
Ааракокры наслаждаются тишиной и уединением. Большинство из них мало заинтересовано в общении с другими народами, и ещё меньше заинтересовано про- водить время на земле. Поэтому для ааракокр нужны веские причины, чтобы оставить своё племя и стать искателем приключений. Ни сокровищ, ни славы недостаточно, чтобы соблазнить их оставить своё племя. Обычно в основе выбора пути искателя приключений лежит ужасная угроза их народу, месть или катастрофа.
Есть ещё два обстоятельства, которые могут стать причиной для становления искателем приключений. Во-первых, у ааракокр есть историческая связь с Герцогами Ветра Аакуа. Некоторые особи чтят эту связь и могут отправиться на поиски потерянных кусков //Жезла Семи Частей//, остатков артефакта, давно сотворённого Герцогами Ветра для победы над чудовищным героем Королевы Хаоса, Мишкой Волчьим Пауком. Когда жезл оказался внутри Мишки, хаос в его крови расколол жезл и разбросал его части по мультивселенной. Восстановление кусочков жезла — это великая честь и дань уважения ваати, сотворившим его, а также возможность восстановить могущественное оружие для борьбы с агентами стихийного зла.
Во-вторых, ааракокры — заклятые враги элементалей земли, в частности, горгулий, которые служат Огремоху, Князю Земли. Слово, которым ааракокры называют горгулий, дословно переводится как «летающий камень», а бои между ааракокрами и горгульями проходят и на плане земли и на плане воздуха, иногда вырываясь даже на Материальный План. Ааракокры на этом плане могут оставлять свои колонии, чтобы помочь другим гуманоидам в борьбе с культами земли.
---
!!!Имена ааракокр
Как и большая часть их речи имена ааракокр содержат щелчки, трели и посвистывания до такой степени, что другим народам сложно их выговорить. Как правило в имени присутствует от двух до четырёх слогов, со звуками, действующими как соединители. При взаимодействии с другими расами ааракокры могут использовать прозвища, полученные от людей, которых они встречали, а также могут представляться сокращёнными формами своего полного имени. Ааракокры любого пола могут иметь одно из этих коротких имён: Айял, Аур, Аэра, Дикек, Зид, Икки, Ирк, Кваф, Квирк, Клик, Оор, Оус, Салик, Уррик или Хик.
---
!!!Личность ааракокр
Ааракокр редко можно встретить за пределами их деревень, и это проявляется в их особенностях общения с окружающими. Вы можете выбрать или случайно сгенерировать присущую ааракокра причуду из таблицы ниже.
| !к6 |!Причуда |
| 1 |Вы предполагаете, что все, что вам предлагают, бесплатно. Если они хотели, чтобы вы заплатили за это, зачем они вам это дали? |
| 2 |Вы ненавидите спать в помещении, и предпочитаете кровати импровизированный насест в виде ветки покрепче. |
| 3 |Вы не можете не пытаться содержать своих друзей в чистоте, и всегда стряхиваете с них пыль. |
| 4 |Вы часто берете мелкие предметы и безделушки, которые, как вы думаете, другим не особо нужны. |
| 5 |Вы иногда думаете, что дварфы слепы, потому что они живут под землей. |
| 6 |Вы считаете, что никакая другая раса не ценит открытый воздух так сильно, как вы. |
<<<
Я видел её, окутанную крыльями из чистого света, её глаза сияли яростью богов. Костяные дьяволы замерли, прикрывая лица. Ее клинок, а теперь уже меч света, взметнулся раз, другой, третий. Головы дьяволов летели на землю, одна за другой. Так мы и узнали, что в составе нашего разношерстного отряда есть аасимар.
– Гелдон Пэрл, //о Тирании Драконов //
<<<
Аасимары несут в себе дух небесного света. Они происходят от людей, осененных силой с Горы Селестии, божественных чертогов многих законно–добрых божеств. Аасимары рождаются, чтобы служить поборниками богов, их рождение провозглашается как благодать. Внешне они люди другого мира, ярко выраженные особенности которых выдают их небесное происхождение.
---
!!!Поборники небес
Аасимары пришли в мир, чтобы служить защитниками добра и закона. Их покровители ожидают, что они будут бороться со злом, служить примером окружающим, и вершить правосудие.
С раннего возраста, аасимар получает видения и указания от небожителей через сны. Эти сны помогают аасимару сформироваться, давая ему ощущение предназначения и жажду праведности.
Каждый аасимар может считать определенного небожителя – посланника богов своим наставником. Эти небожители как правило – дэвы, ангелы, которые выступают в роли божественных посланников в смертный мир.
---
!!!Скрытные странники
Несмотря на то, что аасимары – резкие противники зла, они как правило предпочитают вести себя сдержанно. Иначе аасимары неизбежно привлекают внимание злых культистов, злодеев, и других противников добра, каждый из которых жаждет убить поборника небес, если выпадет шанс.
Путешествуя, аасимары предпочитают капюшоны, закрытые шлемы, и другие приспособления, которые позволяют им скрывать свою сущность. Они тем не менее не сожалеют, если им приходится нанести открытый удар злу. Аасимары никогда не подвергнут опасности невинных ради сохранения своей тайны.
---
!!!Наставники аасимаров
У аасимаров, за исключением тех, кто перешел на сторону зла, есть связь с ангельской сущностью. Эта сущность, обычно дэв, наставляет аасимара, хотя эта связь функционирует только во снах. Это не прямой приказ или простая беседа – аасимар получает видения, пророчества, и предчувствия.
Ангельская сущность не всеведуща. Её наставления основаны на собственном понимании принципов закона и добра, и она может понимать, как противостоять особенно сильному злу, о котором она знает.
Для дополнения описания характера аасимара, рассмотрите характер ангельского наставника этого персонажа. Таблицы ниже предлагают имя и характер, которые Вы можете использовать, чтобы описать ангельского наставника вашего персонажа.
| !к6 |!Имя |
| 1 |Тадриэль (Tadriel) |
| 2 |Миландра (Myllandra) |
| 3 |Серафина (Seraphina) |
| 4 |Галадия (Galladia) |
| 5 |Микель (Mykiel) |
| 6 |Валандрас (Valandras) |
| !к6 |!Характер |
| 1 |Поучающий идеалист |
| 2 |Сострадательный и полный надежд |
| 3 |Практичный и беззаботный |
| 4 |Жестокий и мстительный |
| 5 |Строгий и критичный |
| 6 |По–отечески добрый |
''Примечание для мастера : Отыгрыш ангельского наставника''
```
Как Мастер, вы берете на себя роль ангельского наставника аасимара и решаете какой совет или предзнаменования послать во сне.
Дэв, или другой небожитель – это возможность для вас добавить в игру особый элемент отыгрыша. Помните, что Дэвы живут в мире добра и порядка, возведенных в абсолют. Дэвы не понимают компромиссов и трудностей выбора, с которыми сталкиваются смертные. Для дэва аасимар это ученик, который должен соответствовать высоким, а порой даже жестким стандартам.
```
---
!!!Противоречивые души
Несмотря на свое небесное происхождение, аасимар смертен и обладает свободой воли. Большинство аасимаров принимают свое предназначение, но некоторые воспринимают свои способности как проклятье. Эти недовольные аасимары обычно просто отстраняются от всего мирского, но некоторые из них становятся служителями зла. По их мнению, приверженность небесным силам является не более, чем промыванием мозгов.
Злые аасимары – смертельные противники. Сила света, которой они когда–то обладали, преобразуется в отвратительную, иссушающую магию, а их ангельские наставники покидают их.
Даже аасимары, полностью преданные добру, иногда чувствуют разрыв между двумя мирами. Ангелы, которые направляют их, видят мир издали. Аасимар, который хочет остаться и помочь городу оправиться от засухи, вынужден по указанию ангельского наставника двигаться дальше на более важное задание. Отдаленному ангелу спасение нескольких простых человек кажется незначительным по сравнению с нанесением поражения культу Оркуса. Наставник аасимара мудрый, но он тоже склонен заблуждаться.
---
!!!Имена аасимаров
Большинство аасимаров рождается среди людей и использует имена, традиционные для своей родной культуры.
<<<
Музыка – это плод божественного древа, которое вибрирует Словами Созидания. Но вопрос, который я хочу вам задать, может ли бард спуститься к корням этого древа? Может ли кто-то прикоснуться к источнику этой силы? Ах, какую бы музыку это принесло в мир!
— Флетчер Данайриа, мастер бард
<<<
Напевая, и перебирая пальцами по старинному монументу, найденному в заброшенных руинах, полуэльфийка в обветшалом кожаном доспехе перебирает знания, мелькающие в её голове, вызывая силой магии, заключённой в песне, людей, которые построили этот монумент и загадочное предание, которое он изображает.
Суровый человеческий воин ритмично ударяет своим мечом плашмя о доспех, задавая темп своего военного распева, вдохновляя спутников на отвагу и героизм. Магия его песни укрепляет и подбадривает их.
Смеясь, и настраивая свою цитру, девушка-гном накладывает тонкую магию на собравшихся дворян, гарантируя, что слова её спутников будут хорошо восприняты.
Неважно, кем является бард: учёным, скальдом или проходимцем; он плетёт магию из слов и музыки, вдохновляя союзников, деморализуя противников, манипулируя сознанием, создавая иллюзии, и даже исцеляя раны.
Барды приносят облегчение во время смертельной опасности; они делятся мудростью, чтобы устранить невежество; и заставляют забавное казаться великим. Барды являются хранителями древней истории, их песни и истории увековечивают память о великих событиях во времени – знание столь важное, что его запоминают и передают из уст в уста, чтобы оно сохранилось даже когда не останется письменных источников.
Также бард ведет хроники меньших и более современных событий – истории о сегодняшних героях, включая их доблестные подвиги и совсем не впечатляющие провалы.
---
!!Музыка и магия
В мирах D&D слова и музыка это не просто колебания воздуха, тут они содержат в себе силу. И бард является мастером речей, песен, и волшебства, заложенного в них. Барды говорят, что вся мультивселенная была вызвана к существованию и сформирована словами, которые произнесли боги. И отражения этих первородных Слов Творения до сих пор звучат в космосе. Музыка бардов это попытка уловить эти отзвуки и тонко вплести их в свои заклинания.
Наиболее сильной чертой бардов является их исключительная разносторонность. Многие барды предпочитают держаться не на передовой в бою, используя свою магию для вдохновения союзников и препятствования противникам на расстоянии. Но барды способны защищать себя и в ближнем бою, при необходимости используя магию для укрепления своих клинков и доспехов. Их заклинания чаще предназначены для очарования и создания иллюзий, а не для создания явных разрушений. Они обладают обширными знаниями во множестве тематик и естественные способности, которые позволяют им делать хорошо практически всё. Барды становятся мастерами в тех талантах, к которым стремятся их умы, оттачивая их до совершенства, от музыкальных выступлений до эзотерических знаний.
---
!!Обучение на опыте
Истинные барды не являются обыденной вещью в мире. Не каждый менестрель, поющий в таверне, или шут, скачущий при королевском дворе, является бардом. Чтобы обнаружить скрытую в музыке магию, требуется тяжёлое обучение и некоторая степень природного таланта, чего большинству трубадуров и жонглёров недостаёт. Однако, определить разницу между этими исполнителями может быть трудно. Жизнь барда проходит в странствиях по землям и посвящена сбору знаний, повествованию историй, и существованию за счёт благодарности публики, как и у любого другого артиста. Но глубина знаний, уровень музыкального мастерства и связь с магией ставит бардов на другую ступень от их собратьев.
Барды редко селятся надолго в одном месте, и их естественная тяга к странствиям связана с поиском новых сказаний, обучением новым навыкам и открытию новых горизонтов, что делает карьеру искателя приключений для них естественным призванием. Каждое приключение — это возможность чему-то научиться, попрактиковать разные навыки, проникнуть в давно заброшенные гробницы, обнаружить утраченные произведения магии, расшифровать старые фолианты, пройтись по незнакомым местам, или столкнуться с экзотическими существами. Барды любят сопровождать героев, чтобы засвидетельствовать их свершения из первых рук. Бард, который может рассказать впечатляющую историю из личного опыта, зарабатывает известность среди других бардов. Более того, после повествования такого большого количества историй о великих свершениях героев, многие барды принимают их близко к сердцу и хотят принять роль героя сами.
---
!!Создание барда
Барды процветают за счет историй, не важно, правдивы они или нет. Ваша предыстория и мотивы не так важны, как истории, что ваш персонаж рассказывает о себе. Возможно, у вас было безопасное и ничем не примечательное детство. В нём нет хороших историй, чтобы поведать о них, но вы можете изобразить себя сиротой, воспитанным ведьмой на зловещем болоте. Или ваше детство действительно может быть достойным истории. Некоторые барды приобретают свою волшебную музыку необычайными способами, в том числе под влиянием фей или других сверхъестественных существ.
Были ли вы учеником у мастера, следуя за более опытным бардом, пока не начали следовать своему собственному пути? Или посещали коллегию, где вы обучались знаниям бардов и практиковали свою музыкальную магию? Может быть, вы в молодости сбежали из дома, или став сиротой подружились с бродячим бардом, который стал вашим наставником. Или вы могли быть избалованным знатным ребенком, обученным мастером. Может быть, вы попали в лапы ведьмы, совершив сделку, посулившую вам музыкальный дар вдобавок к вашей жизни и свободе, но какой ценой?
Конечно в мире многие могут исполнить песенку или рассказать хорошую историю, но любой ищущий приключений бард имеет нечто большее чем болтливый язык и мелодичный голос. И все же по-настоящему отличает бардов от всех остальных и друг от друга – их стиль и суть их выступлений.
Чтобы захватить и удержать внимание аудитории, барды обычно колоритны и превосходны во время выступлений. Самые знаменитые из них по сути являются эквивалентом мировых поп звезд в D&D. Если вы играете бардом, подумайте над тем, чтобы использовать одного из ваших любимых музыкантов как модель для вашего персонажа. Вы можете добавить несколько уникальных аспектов своему персонажу барду, рассмотрев приведенные ниже предложения.
---
!!!Главное произведение
Каждый успешный бард известен по крайней мере одним произведением искусства, обычно песней или стихом, популярным среди всех кто его слышал. О таких представлениях очевидцы говорят годы спустя, а некоторые зрители навсегда изменили свою жизнь из-за этих переживаний.
Если ваш персонаж только начинающий, то ваше лучшее произведение скорее всего еще впереди. Но чтобы зарабатывать своей профессией у вас скорее всего уже должно быть одно или два произведения в репертуаре, которые показали себя приятными публике.
| !к6 |!Главное произведение |
| 1 |«Три Фламбини», непристойная песня о раскованных желаниях и ошибочных опознаниях. |
| 2 |«Вальс Миконидов», жизнерадостная мелодия, которая особенно нравится детям. |
| 3 |«Золотая Задница Асмодея», драматическая поэма, которая по вашим заверениям вдохновлена вашим личным визитом в Авернус. |
| 4 |«Пираты Лускана», ваш рассказ из первых рук о похищении морскими разбойниками в детстве. |
| 5 |«Обод, Два Голубя и Адская Гончая», тонкая пародия над неграмотным дворянином. |
| 6 |«Шут в Бездне», комедийный стих о похождениях шута среди демонов. |
---
!!!Инструмент
На пути барда к идеальному выступлению и высшему признанию, его инструмент важен не меньше, чем вокальные данные. Качество изготовления инструмента – это критический фактор, конечно; лучшие инструменты создают лучшую музыку, а некоторые барды постоянно ищут улучшения. Возможно также важна развлекательная ценность инструмента; те, что сделаны эксцентрично или из экзотических материалов, скорее всего произведут неизгладимое впечатление на аудиторию.
Вы можете иметь «непредусмотренный» инструмент, возможно потому что это все, что вы сейчас можете себе позволить. Или, если ваш первый инструмент был подарен вам, он может быть более тщательно проработанным. Вы удовлетворены вашим инструментом или вы стремитесь заменить его чем-то действительно выдающимся?
| !к6 |!Инструмент |
| 1 |Мастерски изготовленная полуросликом скрипка |
| 2 |Горн из мифрила, сделанный эльфами |
| 3 |Цитра, сделанная из паучьего шелка дроу |
| 4 |Оркский барабан |
| 5 |Деревянная квакающая коробочка жаболюдов |
| 6 |Арфа мастера в гномьем дизайне |
---
!!!Неловкое положение
Почти каждый бард хотя бы раз испытывал неприятные ощущения перед аудиторией, и скорее всего вы не исключение. Никто ведь не становится известным сразу, в конце концов; возможно у вас было несколько небольших затруднений на заре карьеры, или может вы некоторое время восстанавливали свою репутацию после одной ужасной ночи, когда судьба задумала для вас театральный провал.
Способы как представление может стать плохим различаются, как рыба в море. Неважно какая беда, может случиться, ведь у барда есть смелость и уверенность в себе, чтобы восстановиться – или продолжая шоу (если возможно) или обещая вернуться завтра с новым выступлением, которое точно всем понравится.
| !к6 |!Неловкое положение |
| 1 |Тот момент, когда ваша комедийная песня – «Выходки Большого Тома», которая, кстати, была превосходна – не очень понравилась Большому Тому. |
| 2 |Дневное представление, когда цирковой медвесыч в епанче сбежал и начал бесчинствовать в толпе алкоголиков-смертников. |
| 3 |Когда ваша открывающая песня была замечательным, но повсеместно ненавистным переложением «Песни о Лягемоте». |
| 4 |Первое и последнее публичное представление «Прожигатель жизни, Мирт». |
| 5 |Тот раз когда ваш парик загорелся и вы его сбросили, что подожгло всю сцену. |
| 6 |Когда вы по ошибке сели на свою лютню во время последнего куплета «Серенады Лунного Света». |
---
!!!Муза барда
Естественно, что у каждого барда есть репертуар песен и историй. Некоторые барды – специалисты широкого профиля, могут выбирать из широкого спектра тем для каждого выступления и гордятся своей многогранностью. Другие же подходят более лично к своему искусству, ведомые приверженностью музе – особенной идее, которая вдохновляет большинство этих бардов на то, что они делают перед аудиторией.
Бард, следующий за музой, обычно делает это чтобы получить более глубокое понимание того, что представляет из себя муза и как лучше подать это понимание другим через выступление.
Если у вашего барда есть муза, она может быть одной из трех, описанных здесь, или вашего собственного изобретения.
//''Природа.''// Вы чувствуете родство с миром природы, и его красота и загадочность вдохновляют вас. Для вас, дерево глубоко символично, его корни уходят во тьму неизвестности, чтобы получать силу земли, а его ветви дотягиваются до солнца, чтобы питать цветы и плоды. Природа – древний созерцатель, который видел взлет и падение каждого королевства, даже тех, чьи имена были забыты и только ждут своего открытия. Боги природы делятся своими секретами с друидами и мудрецами, открывая их сердца и разумы новым видам зрения, и подобно им вы понимаете, что ваши творческие способности расцветают на открытом поле колышущейся травы или во время прогулки в тихом благоговении по роще древних дубов.
//''Любовь.''// Вы хотите определить истинную сущность любви. Хоть вы и не пренебрегаете поверхностной любовью к плоти и формам, более глубокая форма любви, которая может вдохновить тысячи людей или принести каждому счастье – вот в чем вы действительно заинтересованы. Такая любовь принимает множество форм, и вы видите ее присутствие везде – от мерцания красивого драгоценного камня до песни о простом рыбаке, благодарящем море за добычу. Вы следуете по пути любви, самой драгоценной и загадочной эмоции, и ваш поиск наполняет ваши истории и песни жизненной силой и страстью.
//''Конфликт.''// Драма олицетворяет собой конфликт, и лучшие истории содержат в себе конфликт в качестве ключевого элемента. От утренней истории о вчерашней потасовке в таверне до саги об эпической битве, от ссоры любовников до раздора между могущественными династиями, конфликт вдохновляет таких рассказчиков, как вы, на создание своих лучших работ. Конфликт может вызвать лучшее в некоторых людях, показать их героическую натуру и преобразить мир, но других же он может завлечь во тьму и привести в лапы к силам зла. Вы стремитесь испытать или увидеть все формы конфликтов, большие и малые, изучить этот вечный аспект жизни и увековечить его в ваших словах и музыке.
[img class="centerme" [https://i.imgur.com/Avt4dWs.jpg]]
<<<
Я видел неукротимость варваров на поле боя, и это заставляет меня задуматься о том, какая же сила является источником их ярости.
— Серет, архимаг
<<<
Высокий, закутанный в шкуры дикарь пробирается сквозь метель, сжимая в руке свой топор. Он со смехом бросается на морозного великана, который посмел убить лося в стаде его народа.
Полуорк рычит на храбреца, осмелившегося посягнуть на его первенство в племени, готовый свернуть ему шею голыми руками, как он поступил с предыдущими шестью соперниками.
С пеной у рта дварф швыряет свой шлем в лицо напавшему дроу, и резко разворачивается, впечатав бронированный локоть в живот второму.
Несмотря на разнообразие, всех варваров объединяет одно — их ярость. Необузданный, неугасимый и бездумный гнев. Их ярость как свирепость загнанного в угол хищника, как безжалостный удар урагана, как штормовые валы океана.
Ярость некоторых из них проистекает из общения со свирепыми духами животных. Другие черпают её из злости на полную боли и страдания действительность. Но для каждого варвара ярость — это источник не только боевого безумия, но и невероятных рефлексов, стойкости, а также непревзойдённой силы.
Злость, которую чувствует обычный человек, напоминает гнев варвара также, как легкий бриз напоминает яростную грозу. Сила, которая ведёт варвара, выходит из места, превосходящего обычные эмоции, что делает их проявление еще ужасней. Исходит ли импульс ярости изнутри или из формирования связи с духовным животным, варвар в ярости может демонстрировать сверхъестественные проявления силы и выносливости. Вспышка временная, но пока она длится, она захватывает тело и разум, ведёт варвара вперёд несмотря на опасность и раны до тех пор, пока последний враг не падёт.
---
!!Первобытные инстинкты
Жители посёлков и городов настолько гордятся своей цивилизованностью, отличающей их от животных, словно отрицание собственной природы подчёркивает их превосходство. Варвары же, напротив, считают цивилизованность проявлением слабости. Связь между их животными инстинктами, первобытной энергетикой и свирепой яростью очень сильна. Варвары чувствуют себя неуютно в окружении стен или в толпе, но раскрываются в родных диких просторах, в тундре, джунглях или степях, где их племена живут и охотятся.
Лучше всего варвары проявляют себя посреди хаоса битвы. Они могут впасть в состояние берсерка, утратив контроль над собственной яростью, и получая взамен нечеловеческую силу и стойкость. Варвар может лишь несколько раз воспользоваться резервами собственного гнева, прежде чем ему потребуется отдых, но обычно этих нескольких раз хватает, чтобы справиться с любой угрозой, встреченной на пути.
---
!!Жизнь полная опасностей
Не все члены племён, которых в цивилизованном обществе называют варварами, имеют класс «варвар». Настоящий варвар среди этих людей так же редок, как опытный воин в городе, и он исполняет схожую роль защитника людей и военного лидера. Жизнь в диких местах таит в себе опасность: соперничающие племена, смертельно опасная погода и ужасные чудовища. И варвар бросается в борьбу с этими опасностями, защищая своих людей.
Смелость перед лицом опасности делает варвара превосходным кандидатом в искатели приключений. Кочевой образ жизни часто привычен для примитивных племён, и непоседливая жизнь авантюристов не составляет трудности для варвара. Некоторые варвары скучают по сплочённому семейному укладу своих племён, но в конце концов находят замену в узах, связывающих членов отряда.
---
!!Создание варвара
Когда вы создаёте персонажа варвара, подумайте о том, откуда ваш персонаж прибыл, и о том, какое место в мире он занимает. Поговорите с вашим Мастером о подходящем происхождении вашего варвара. Пришли ли вы из далёких земель, став чужаком на новой территории? Или кампания происходит в жестоких землях, где варвары являются обычным делом?
Что заставило вас вести жизнь искателя приключений? Вы соблазнились переселением на новые земли обещаниями богатства? Вы присоединились к солдатам этих земель перед лицом общей угрозы? Может, чудовища или вторжение орды изгнали вас из вашей родины, сделав безродным беженцем? Может быть, вы были пленником на войне, приведённым в цепях в «цивилизованные» земли и только там завоевавшим свою свободу? Или, возможно, вы были изгнаны своим народом из-за совершённого вами преступления, нарушения табу, или в результате переворота, после которого вы были свергнуты со своего места у власти.
Играть за персонажа варвара может быть соблазнительно – ведь это простое переложение классического архетипа – дикаря, и обычно глуповатого, который стремглав мчится туда, куда остальные боятся ступать. Но не все варвары в мире скроены именно так, так что вы точно можете придать персонажу своих оттенков. В любом случае, подумайте как добавить несколько особенностей, чтобы ваш варвар отличался от остальных; посмотрите следующие разделы, чтобы почерпнуть идей.
---
!!!Личные тотемы
Варвары предпочитают путешествовать налегке, редко нося с собой личные безделушки или другое лишнее снаряжение. Их немногочисленные переносимые пожитки часто включают в себя небольшие вещи особого значения. Личный тотем важен, потому что он имеет мистическое происхождение или связан с определенным моментом в жизни персонажа, возможно, с воспоминанием о прошлом варвара или предзнаменованием о том, что лежит впереди.
Личный тотем такого типа может быть связан с духовным животным варвара или может быть тотемом для животного, но такая связь не обязательна. Например, у того, у кого тотемный дух – медведь, может быть перо орла в качестве личного тотема.
Подумайте о том, чтобы создать один или несколько личных тотемов для своего персонажа – объектов, которые имеют особую связь с прошлым или будущим вашего персонажа. Подумайте о том как тотем может влиять на действия вашего персонажа.
| !к6 |!Тотем |
| 1 |Клок шерсти одинокого волка, с которым ты подружился во время охоты. |
| 2 |Три пера орла были даны тебе мудрым шаманом, который сказал, что они сыграют роль в определении твоей судьбы. |
| 3 |Ожерелье, сделанное из когтей молодого пещерного медведя, которого ты убил своими руками будучи ребенком. |
| 4 |Небольшой кожаный кошель с тремя камнями, олицетворяющими твоих предков. |
| 5 |Несколько маленьких костей первого зверя, которого ты убил, связанных вместе цветной шерстью. |
| 6 |Камень размером с яйцо в форме твоего духовного животного, который однажды появился в твоем поясном кошеле. |
---
!!!Татуировки
Члены многих кланов варваров украшают свои тела татуировками, каждая из которых представляет важный момент в жизни носителя или предков носителя, или символизирует чувство или мироощущение. Как и личные тотемы, татуировки варваров могут быть, а могут и не быть связаны с духовным животным.
Каждая татуировка, которую выставляет напоказ варвар, идентифицирует его личность. Если ваш персонаж носит татуировки, как они выглядят и что они олицетворяют?
| !к6 |!Татуировка |
| 1 |Крылья орла, широко раскинутые по верхней части спины. |
| 2 |Вытатуированные на тыльных сторонах ладоней лапы пещерного медведя. |
| 3 |Символы твоего клана вытатуированы в узорах из лоз вдоль рук. |
| 4 |Рога лося, вытатуированные на спине. |
| 5 |Образы вашего тотемного животного вытатуированы вдоль вашей ведущей руки. |
| 6 |Глаза волка на спине, чтобы помогать видеть и отгонять злых духов. |
---
!!!Суеверия
Варвары очень по разному воспринимают жизнь. Некоторые верят в богов и ищут напутствия от этих богов в циклах природы и животных, которых встречают. Они верят, что духи обитают в растениях и животных во всем мире, и варвары ищут у них знамений и силы.
Другие же варвары верят только в кровь в своих венах и в сталь в своих руках. Им не нужен невидимый мир, вместо этого они опираются на свои чувства во время охоты и выживают как дикие животные, повадки которых они повторяют.
Оба этих подхода служат основой для суеверий. Эти верования часто передаются в семье из поколения в поколение или их разделяют члены клана или группы охотников.
Если у персонажа варвара есть какие-то суеверия, были ли они воспитаны в тебе семьей, или это результат личного опыта?
| !к6 |!Суеверие |
| 1 |Если потревожить кости умершего, то унаследуешь все проблемы, которые преследовали его при жизни. |
| 2 |Никогда не доверяй волшебникам. Все они – волки в овечьей шкуре, особенно дружелюбные. |
| 3 |Дварфы утратили своих духов, и они почти как нежить. Поэтому они и живут под землей. |
| 4 |Магические вещи приносят неприятности. Никогда не спи с магическим предметом ближе чем в десяти футах от тебя. |
| 5 |Когда гуляешь по кладбищу всегда будь одет в серебро, а не то в твое тело запрыгнет призрак. |
| 6 |Если эльфийка взглянет тебе в глаза, значит она пытается прочесть твои мысли. |
[img class="centerme" [https://i.imgur.com/VfDnUSP.jpg]]
<<<
Дайте мне знать, когда вы все закончите говорить.
— Тордек
<<<
Женщина, прикрываясь щитом и лязгая доспехами, устремляется в толпу гоблинов. Из-за её спины одетый в клёпанную кожу эльф осыпает врагов стрелами, выпуская их из своего изящного лука. Невдалеке от них полуорк выкрикивает приказы, указывая лучшее направление для атаки.
Дварф в кольчуге выставил свой щит перед компаньоном, отражая смертельный удар дубины огра. Его напарник, полуэльф в чешуйчатом доспехе, закрутил два своих скимитара в сверкающем вихре и двинулся в обход огра, отыскивая брешь в его защите.
Опытный гладиатор сражается на арене и хорошо знает, как использовать свои трезубец и сеть, чтобы опрокинуть противника и обойти его, вызывая ликование публики и получая тактическое преимущество. Меч его противника вспыхивает голубым светом и испускает сверкающую молнию.
Все эти герои — воины. Из всех искателей приключений в мирах D&D, воин возможно является величайшим парадоксом. С одной стороны многообразие этого класса состоит в том, что каждый воин развивает свое искусство по-своему; их оружие, доспехи и тактика различаются в очень большом спектре. С другой стороны, вне зависимости от инструментов и методов, которые использует воин, в сердце мотивации каждого воина лежит одна базовая истина: лучше убить, чем быть убитым.
---
!!Разносторонние специалисты
Воины владеют основами всех боевых стилей. Каждый воин может рубить топором, фехтовать шпагой, владеет полуторным и двуручным мечом, может стрелять из лука и даже при некоторой сноровке способен поймать противника сетью. Помимо этого, воины хорошо знакомы с использованием щита и любых доспехов. Помимо общих знаний, каждый воин специализируется на определённом стиле боя. Некоторые концентрируются на стрельбе из лука, другие на сражении с оружием в каждой руке, а есть те, кто свои воинские способности усиливает заклинаниями. Сочетание широких общих навыков и углублённой специализации делает воинов непревзойдёнными на поле боя.
---
!!Готовые к опасности
Не все члены городской стражи, деревенского ополчения или королевской армии являются воинами. Большинство из них это просто обученные солдаты, обладающие лишь основными воинскими навыками. Солдаты-ветераны, офицеры, обученные телохранители, посвящённые рыцари и похожие персоны, как правило, являются воинами.
Некоторые воины чувствуют потребность использовать свою подготовку в качестве искателей приключений. Исследование подземелий, убийство чудовищ, и другая опасная работа, обыденная для искателей приключений, является второй натурой воина, и не так сильно отличается от жизни, оставленной в прошлом. Риск здесь, возможно, и выше, но и награда значительно больше — например, воины в городском дозоре вряд ли могут найти магический меч.
---
!!Создание воина
Когда вы создаёте своего воина, продумайте два связанных элемента предыстории своего персонажа: где вы получили боевую подготовку, и что отличало вас от обычных воителей, окружавших вас? Были ли вы особенно безжалостным? Получали ли вы особую помощь от наставника, возможно, из-за вашей исключительной преданности? Что в первую очередь побудило вас к этой подготовке, угроза, нависшая над вашей родиной, жажда мести, необходимость доказать себе, или все эти факторы вместе?
Вы могли пройти официальную подготовку в армии дворянина или в местном ополчении. Возможно, вы тренировались в военной академии, изучая стратегию, тактику и военную историю. Или же вы можете быть самоучкой, несовершенным, но проверенным бойцом. Взялись ли вы за меч, чтобы сбежать от жизни на ферме, или следуете гордой фамильной традиции? Где вы приобрели своё оружие и доспехи? Они могут быть военным наследием или семейными реликвиями, или, возможно, вы экономили годами, чтобы купить их. Ваше вооружение теперь самое важное ваше имущество, это единственное, что стоит между вами и смертью.
---
!!!Геральдический символ
Воины обычно сражаются ради чего-то. Некоторые сражаются ради королевств, осаждаемых монстрами, а другие же ищут лишь личной славы. В любом случае воин часто имеет геральдический знак, который отражает эту цель, либо приняв символ страны или королевской династии, либо создав герб, отражающий собственные цели. Ваш персонаж может быть связан с организацией или целью, и поэтому может уже путешествовать под каким-то знаменем. В другом случае, подумайте о разработке геральдического знака, который символизирует аспект вашей натуры или говорит всем о вашей цели в мире.
| !к6 |!Символ |
| 1 |Грозный золотой дракон на зеленом поле, представляющий доблесть и стремление к богатству. |
| 2 |Кулак штормового гиганта, сжимает молнию перед грозовым облаком, символизируя гнев и силу. |
| 3 |Скрещенные двуручные мечи перед вратами замка, означающие защиту города или королевства. |
| 4 |Череп с вонзенным в него кинжалом, представляющий обреченность, которую вы приносите своим врагам. |
| 5 |Феникс в огненном кольце, символ непреклонной воли. |
| 6 |Три капли крови под горизонтальным лезвием меча на черном фоне, символизирующие трех противников, которых вы поклялись убить. |
---
!!!Инструктор
Некоторые воины – прирожденные бойцы, у которых есть талант к выживанию к бою. Другие изучают основы боевого мастерства в годы своего становления, проводя время с военными или в какой-то боевой организации, где их обучают лидеры группы.
Третий тип воина получается из тех, кто один обучался у инструктора, заслуженного ветерана. Этот инструктор был или возможно еще является очень опытным в определенном аспекте боя, который относится к предыстории ученика.
Если вы решите, что у вашего персонажа был индивидуальный инструктор, то в чем его специальность? Повторяете ли вы стиль боя вашего инструктора или вы переняли его учение и адаптировали его под свои нужды?
| !к6 |!Инструктор |
| 1 |''Гладиатор.'' Ваш инструктор был рабом, который боролся за свободу на арене, или тот, кто охотно выбрал жизнь гладиатора, чтобы заработать деньги и славу. |
| 2 |''Военный.'' Ваш тренер служил с группой солдат и много знает о работе в команде. |
| 3 |''Городской стражник.'' Управление толпой и сохранение мира - это специальности вашего инструктора. |
| 4 |''Воитель племени.'' Ваш инструктор вырос в племени, где борьба за свою жизнь была практически повседневной. |
| 5 |''Уличный боец.'' Ваш инструктор превосходно владеет навыками городского боя, сочетая работу в ближнем бою с бесшумностью и эффективностью. |
| 6 |''Мастер оружия.'' Ваш наставник помог вам стать одним целым с выбранным вами оружием, предоставив высокоспециализированные знания о том, как наиболее эффективно использовать его. |
---
!!!Фирменный стиль
Многие воины отличают себя от себе подобных, принимая и улучшая особый стиль или метод ведения боя. Хоть этот стиль и может быть естественным продолжением личности воина, это не всегда так – чьи-то общие взгляды на мир не обязательно диктуют то, как воин действует, когда его жизнь на кону.
Ваш боевой стиль отражает ваши взгляды на жизнь или что-то еще пробуждается в вас когда вы достаете свое оружие?
| !к6 |!Стиль |
| 1 |''Элегантный.'' Вы двигаетесь с точной грацией и полным контролем, никогда не используя больше энергии чем нужно. |
| 2 |''Брутальный.'' Ваши атаки подобны ливню ударов молота, которые дробят кости или разливают повсюду кровь. |
| 3 |''Хитрый.'' Вы атакуете в нужный момент и используете тактику, чтобы увеличить шансы на успех. |
| 4 |''Непринужденный.'' Вы редко потеете или выказываете нечто кроме стоического выражения лица в битве. |
| 5 |''Энергичный.'' Вы поете и смеетесь во время боя, когда ваш дух порхает. Самое большое счастье для вас – когда враг перед вами и верное оружие в руке. |
| 6 |''Злобный.'' Вы воете и усмехаетесь перед боем, и наслаждаетесь насмешками над врагами после победы. |
[img class="centerme" [https://i.imgur.com/MJe3giK.jpg]]
<<<
Искусство волшебника требует понимания. Знание того, как и почему магия работает, и наши усилия по расширению этого понимания привели к ключевым прорывам в развитии цивилизации на протяжении столетий.
— Гимбл, иллюзионист
<<<
Одетая в серебряные одежды, обозначающие её статус, эльфийка закрывает глаза, приглушает в своём сознании суматоху боя и начинает свой тихий напев. Движениями рук она сплетает перед собой заклинание и запускает крошечный шарик огня во вражеские ряды, где он взрывается потоками пламени, которые охватывают солдат.
Проверив и перепроверив свои наброски, человек рисует затейливый магический круг мелом на голом каменном полу, затем посыпает железным порошком все линии и изящные кривые. Когда круг готов, он начинает монотонно читать длинное заклинание. Внутри круга появляется проход, из которого тянет запахом серы из потустороннего мира.
Припав к полу на перекрёстке в подземелье, гном бросает небольшие костяшки с мистическими символами, бормоча над ними слова силы. Закрыв глаза, чтобы прочитать видения более чётко, он медленно кивает, затем открывает глаза и указывает на проход слева от себя.
Лишь немногие избранные во всём мире могут использовать магию. Из них, выше всех выделяются волшебники. Даже наиболее слабые из них могут манипулировать силами, нарушающими законы природы, а наиболее выдающиеся из них могут творить заклинания, которые могут потрясти целый мир.
Волшебники — адепты высшей маги, объединяющиеся по типу своих заклинаний. Опираясь на тонкие плетения магии, пронизывающей вселенную, волшебники способны создавать заклинания взрывного огня, искрящихся молний, тонкого обмана и грубого контроля над сознанием. Их магия вызывает чудовищ с других планов бытия, предсказывает будущее и обращает поверженных врагов в зомби. Их самые могущественные заклинания могут превращать одно вещество в другое, вызывать метеориты с небес и открывать порталы в другие миры.
Ценой, которую вынуждены платить волшебники за своё мастерство, является самое дорогое, что у нас есть – время. Требуются годы изучения, обучения и экспериментов, чтобы понять, как покорить магическую энергию и держать заклинания в собственном рассудке. Для волшебников, ищущих приключений, и других заклинателей, которые стремятся стать лучшими в своём деле, это изучение не заканчивается никогда, как и поиски знаний и могущества.
---
!!Адепты магии
Дикая и загадочная, разнообразная по форме и функциям, магия привлекает учеников, которые стремятся достичь мастерства в её тайнах. Некоторые хотят уподобиться богам, изменять саму реальность. И хотя для сотворения обычного заклинания требуется лишь произношение нескольких странных слов, совершение пары мимолётных жестов, а иногда щепотка или комок экзотических материалов, эти поверхностные проявления не могут показать опыт, достигнутый долгими часами ученичества и бессчётными часами исследований. Волшебники живут и умирают со своими заклинаниями. Всё остальное вторично. Они учат новые заклинания, экспериментируя и становясь опытнее. Они также могут узнать их от других волшебников, из древних томов или свитков, и от древних существ (таких как феи), которые погружены в магию.
---
!!Соблазн знаний
Жизнь волшебников редко бывает обыденной. Наиболее близки к простой жизни, вероятно, те из волшебников, которые работают знатоками или лекторами в библиотеке университета, обучая других секретам мультивселенной. Другие волшебники предлагают свои услуги в качестве прорицателей, служат в вооружённых силах, или проводят жизнь в преступлениях и стремлении к власти.
Но соблазн знаний и силы зовёт даже самых обделённых смелостью волшебников из безопасности их библиотек и лабораторий в разрушенные руины и потерянные города. Большинство волшебников считает, что их коллеги из древних цивилизаций знали секреты магии, которые были потеряны навек, и открывшие эти секреты смогут владеть силами, недоступными в нынешнем веке.
---
!!Создание волшебника
При создании персонажа волшебника в его истории обязательно должно быть некое выдающееся событие. Как ваш персонаж впервые встретился с магией? Как он открыл свою предрасположенность к ней? Владелец ли он природного таланта или же достиг всего усердной учёбой и постоянной практикой? Или же произошла неожиданная встреча с магическим существом или древней книгой, что могли обучить его основам магического искусства?
Что привлекло вас к жизни в обучении? Сподвиг ли вас на большее вкус первого обретённого магического знания? Постигли ли вы слова тайного хранилища знаний, ещё не разграбленного другими волшебниками? Возможно, вы просто желаете противопоставить обретённые магические навыки опасностям для проверки своих сил.
Если вы играете волшебником, воспользуйтесь возможностью сделать своего персонажа не только банальным магом, бросающим заклинания. Используйте эти материалы, чтобы добавить интересные детали к тому, как ваш волшебник взаимодействует с окружающим миром.
---
!!!Книга заклинаний
Наиболее ценная вещь вашего волшебника – его книга заклинаний, которая может выглядеть абсолютно безобидно и ничем не намекать на то, что находится у неё внутри. А может быть она будет как-то отличаться, как у многих волшебников, книги которых являются не совсем обычными. Если вы ещё не обладаете таким предметом, одной из ваших целей может стать поиск такой книги заклинаний, которая выделит вас своим внешним видом или тем, как она сделана. К
| !к6 |!Книга заклинаний |
| 1 |Том с тонкими металлическими страницами, заклинания впечатываются в них кислотой. |
| 2 |Длинные полоски кожи с написанными на них заклинаниями, обёрнутые вокруг посоха для удобной транспортировки. |
| 3 |Истёртый том, наполненный пиктограммами, которые только вы понимаете. |
| 4 |Маленькие камушки расписанные заклинаниями и содержащиеся в мешковатой сумке. |
| 5 |Обгорелая книга, повреждённая огнём дракона, с еле заметными буквами ваших заклинаний. |
| 6 |Книга с чёрными страницами, чьё содержимое видно только в слабом свете или темноте. |
---
!!!Амбиции
Мало развивающихся волшебников занимаются магией без какой-либо личной цели. Многие волшебники используют заклинания как средства получения ощутимой выгоды, в виде материальных благ или в статуса, для себя или своих спутников. Для других же теория магии является очень привлекательной, заставляя волшебников искать знания, поддерживающие новые магические теории или подтверждающие старые.
Кроме очевидного, почему ваш волшебник изучает магию и чего Вам хочется достичь? Если вы не подумали над этими вопросами, вы можете сделать это сейчас, и ответы, которые вы получите, могут повлиять на то, как будут развиваться события для вашего персонажа.
| !к6 |!Амбиция |
| 1 |Вы докажете, что боги не так могущественны, как думает народ. |
| 2 |Бессмертие – конечная цель ваших занятий. |
| 3 |Если вы сможете полностью понять магию, вы сможете сделать её доступной для всех и открыть новую эру равенства. |
| 4 |Магия – опасный инструмент. Вы используете её для защиты того, чем вы дорожите. |
| 5 |Те, кто злоупотребляет магией, должны быть лишены её. |
| 6 |Вы станете величайшим волшебником, какого только видел мир за многие поколения.
|
---
!!!Эксцентричности
Бесконечные часы усердного обучения и исследований могут иметь негативный эффекты на навыках общения каждого. Волшебники, и без того изначально отличающиеся от прочих, не являются исключением. Однако, несколько странных манер поведения не обязательно являются недостатком; обычно эксцентричность такого рода безвредна и может служить источником веселья или быть визитной карточкой.
Если ваш персонаж обладает эксцентричностью, то как она будет проявляться – физически или ментально? Возможно вы хорошо известны из-за этого в определённых кругах? Боретесь вы с ним или принимаете, как небольшой изъян вашей репутации?
| !к6 |!Эксцентричность |
| 1 |У вас есть привычка постукивать ногой, что раздражает окружающих. |
| 2 |У вас прекрасная память, но вы прикидываетесь рассеянным, когда это вам выгодно. |
| 3 |Вы никогда не входите в комнату не посмотрев на потолок, чтобы увидеть, что там висит. |
| 4 |Самая большая ваша ценность – мёртвый червь внутри флакона для зелья. |
| 5 |Когда вы хотите, чтобы люди оставили вас в покое, вы начинаете говорить с самим собой. Обычно это срабатывает. |
| 6 |Ваше чувство стиля, точнее его отсутствие – иногда заставляет считать вас попрошайкой. |
[img class="centerme" [https://i.imgur.com/zKtWkVT.jpg]]
История гитов уходит корнями в жесточайший поворот судьбы космоса. Вдохновлённые великим вождём, который и дал имя расе, гиты восстали, чтобы свергнуть поработивших их свежевателей разума. Однако, завоевав свободу, две фракции гитов не смогли прийти к согласию о том, какую цивилизацию они будут строить. Это разногласие быстро перешло в открытую враждебность, и две группы отдалились друг от друга, чтобы преследовать собственные цели. Сейчас они остаются жесточайшими врагами, и каждая сторона готова сражаться до смерти, если их пути пересекутся.
Гитъянки были движимы местью и убеждением, что имеют право забирать всё, что хотят, с миров, по которым пройдутся. Из титанического города Ту’нарат, который находится на Астральном Плане, их рейдеры отправляются на разграбление Материального Плана и иных миров, принося сокровища и рабов в своё неподвластное времени государство. В то же время они охотятся на свежевателей разума, по возможности убивая их в качестве мести за то, что иллитиды сделали с ними в прошлом.
Гитцераи верят, что путь просвещённой цивилизации лежит в уединении, а не в конфликте. Их преданность принципам порядка настолько сильна, что они могут манипулировать хаосом используя его в своих интересах; так они вырезали себе полностью изолированные крепости на плане Лимбо. Несмотря на то, что гитцераи по своей натуре пацифисты, они разделяют расовую ненависть гитъянки к свежевателям разума и иногда отправляют отряды для уничтожения форпостов иллитидов.
Если эти две расы объединятся против иллитидов, объединённая сила гитов могла бы склонить чашу весов в их пользу. Но до тех пор, пока гитъянки и гитцераи не отпустят глотки друг друга, достижение окончательной победы над изначальным общим врагом не представляется возможным.
---
---
!!Гитцераи
<<<
Не могу с уверенностью утверждать, что лидер гитцераев жив, мёртв или стал нежитью. Но псионическое давление, которое я ощущал во время аудиенции с ним, было столь велико, что я едва мог думать. Интересно, это давление создаёт сам Меняр-Аг-Гит или дюжины последователей, окружающих его тело? Увы, я остался с этой мыслью и неотвеченным вопросом.
— Морденкайнен, //Том Морденкайнена о врагах//
<<<
Гитцераи появились как раса в конце кровавого восстания гитов против свежевателей разума. Гит по имени Зертимон, нашедший множество последователей во время конфликта, бросил вызов планам Гит и её лидерству. «Гит зла, – провозгласил он, – и она приведёт наш народ во тьму и тиранию, не отличаю- щиеся от навязанных нам иллитидами».
И теперь, едва разгромив своих заклятых врагов, гиты были ввергнуты в пучину гражданской войны. Как итог конфликта, Зертимон был убит, а его последователи, назвавшие себя гитцераями, ушли на план Лимбо.
Сегодня, ведомые Великим Гитцераем, Заэритом Меняр-Агом-Гитом, они продолжают вести борьбу с гитъянки и нести возмездие свежевателям разума. Посещая Материальный План и другие миры, они оказывают жёсткое противодействие планам своих врагов по мировому господству.
---
!!!Порядок в море хаоса
<<<
Мы, гитцераи, жаждем вызова, чтобы быть готовыми к тому дню, когда Зертимон вернётся к нам. Посему мы отправились в воющий Лимбо, чтобы сделать его нашим новым домом.
— Учение Меняр-Ага
<<<
Сильные разумом философы и суровые аскеты, гитцераи проводят свою жизнь в строгой дисциплине. Их общество основано на усилении потенциала разума через медитации, образование и физические испытания. Наиболее совершенные из них являются образцами монашеских принципов гитцераев, но даже те, кто исполняет мирские обязанности в общине, обладают значительной долей той же психической стойкости.
Жизнь в вечно меняющемся вихре Лимбо требует от гитцераев постоянного использования силы мысли, необходимого для противодействия и сдерживанию хаосу плана. Если бы они не были непреклонны в этом деле, потоки Лимбо сокрушили бы и уничтожили их.
Цели жизни гитцераев во многом едины и исходят из почитания своих великих героев и желания подражать добродетели этих личностей в своей повседневной жизни.
---
!!!Города-крепости
Монастыри гитцераев – это огромные острова стабильности, дрейфующие в хаосе Лимбо. Анархи гитцераев поддерживают стабильность крепостей и управляют их внутренним строением, лишь по мере нужды открывая порталы во внешний мир. Большинство крепостей дрейфуют по Лимбо наугад, но нельзя сказать ни об одной из них, что она изолирована. Когда Меняр-Аг взывает к ним, анархи мгновенно отвечают зову.
Не считая самих её обитателей, самые защищённые элементы крепости гитцераев – склады с едой. Поскольку постоянная жизнь в Лимбо невозможна, гитцераи сильно зависят от животных и растений, выращенных где-то ещё. Растения выращиваются на гидропонных фермах, а скот – в загонах, в которых хватает света, тепла и всего прочего для их роста.
Жизнь общины контролируется монахами, которые распределяют обязанности между жителями. Каждый из них принимает участие в тренировках монахов и непрерывном теоретическом обучении, и каждая крепость выделяет для этого необходимое ресурсы и учителей по мере необходимости. И хотя крепости не выходят из радиуса досягаемости психического контакта, каждая из них спроектирована так, чтобы быть самодостаточной.
---
!!!Гитцераи в мире
<<<
Зертимон не ждёт, что мы будем терпеливо ждать его возвращения. Вместо этого мы должны дать путь его усилиям, тем самым приблизив наш золотой век.
— Учение Меняр-Ага
<<<
Нет ничего необычного в том, что гитцераи предпочитают оставаться в Лимбо. Они создали высокоорганизованную цивилизацию в мире, который они могут изменять по своему желанию. Когда они посещают другие миры, в том числе Материальный План, то чувствуют себя некомфортно в условиях неизменности окружения. Но несмотря на своё нежелание путешествовать, гитцераи регулярно посылают группы из Лимбо в другие миры, где те противодействуют силам гитъянок и свежевателей разума.
---
!!!Распространяя Слово
Гитцераи видят в своём деле не что-то обыкновенное, а то, что они хотят нести другим. Руководствуясь этим, они взяли на себя инициативу проповедовать философию Зертимона и делиться с окружающими знания о том, как бороться с иллитидами и гитъянки. С этой целью зерты иногда отправляются на другие планы с намерением основать новый монастырь или присоединиться к существующему. Эти «миссионеры» всегда ищут тех, у кого есть псионический потенциал, и кто может использовать эти силы против врагов гитцераев. Чаще всего они действуют тайно, преследуя свои цели и пытаясь пополнить ряды своих союзников. Кто может точно сказать, сколько монастырей на самом деле являются секретными вербовочными базами гитцераев?
---
---
!!Гитъянки
<<<
Представьте, что у вас нет никаких понятий о семье. Вам всё время твердят, что другие расы хуже вашей и что только вера в Почитаемую Королеву хранит вас от вероломных гитцераев и поедающих мозг иллитидов. Вы проходите годы тяжёлого труда и обучения, затем отправляетесь на опасную охоту за иллитидами. Провал – это смерть, но, если у вас получится, вы попадаете в Астрал, где будете приняты в общество, состоящее из подобных вам.
Нечего сказать, Влаакит умеет воспитывать фанатиков. Но, увы, они бесполезны в начинаниях с долгосрочными последствиями.
— Морденкайнен, //Том Морденкайнена о врагах//
<<<
Отвоевав свою свободу у свежевателей разума, гитъянки стали развращёнными налётчиками и опустошителями, ведомыми ужасающей королевой-личом Влаакит. Она живёт на Астральном Плане в городе Ту’нарат, построенном на и в трупе божества.
---
!!!Почитаемая королева
<<<
Убивать во имя её – наше высшее служение. Умереть во имя её – наш последний акт почтения.
— Мелда, рыцарь гитъянки
<<<
Влаакит находится в центре всего, что связано с гитъянками. Она управляет ими во всех сферах деятельности, требуя и получая абсолютное повиновение.
После того как гиты свергли свежевателей разума, Влаакит сыграла решающую роль в защите гитъянки, находящихся под её властью, от прямых атак своих собратьев. Воспользовавшись своими познаниями в тайной магии, она помогла гитъянки заложить нерушимую крепость на Астральном Плане, откуда она начала планировать удары по ненавистным свежевателям разума и вероломным гитцераям.
Влаакит укрепила своё положение верховного правителя гитъянки с помощи Великой Декларации, которая определила всеобъемлющую миссию гитъянки. Рождённые и обученные для противостояний, они не знали иной жизни, кроме как на войне. Им нужны были чёткая цель и сильный лидер, который поведёт к ней, Влаакит дала и то, и другое.
Она постановила, что, победив свежевателей разума, гитъянки займут их место правителей Материального Плана. Множество миров Материального Плана будут садами гитъянки, где они будут собирать урожай, когда сочтут нужным. Астральный План будет их домом, потому что в этой вневременной области они смогут игнорировать потребности в еде и воде, а также другие повседневные проблемы, которые беспокоят низшие расы.
---
!!!Рождённые служить
<<<
Под властью иллитидов мы и гитъянки сражались и умирали в тысяче миров за безжалостных господ. Под властью Влаакит наши собратья сражаются и умирают в тысяче миров за безжалостную госпожу. И они называют это освобождением?
— Адака Беспощадная Ладонь, гитцерай монах
<<<
Гитъянки растят свой молодняк в скрытых яслях, которые они строят в отдалённых местах на Материальном Плане. Такие меры необходимы, поскольку рождение и взросление невозможно на Астральном плане, обитатели которого не стареют. Взрослые надзиратели тут тренируют молодых гитъянок пользоваться своими психическими и физическими способностями.
Гитъянки вылупляются из яиц. Каждый новорождённый приходит в мир вместе с другими яйцами, преднамеренно отложенными так, чтобы вылупиться в одно и то же время. Поскольку взрослые гитъянки должны вернуться на Астральный План, чтоб сильно не постареть, состав инструкторов постоянно меняется, причём ни один взрослый не остаётся тут дольше, чем на несколько месяцев, и ни один не возвращается на второй срок.
Обучение, которое проходят молодые гитъянки жестоко и сурово. По мере взросления требования с каждого ученика становятся всё больше, а наказания за отставание – всё строже. Для гитъянок лучше, чтобы слабаки умирали на тренировках, чем проваливали задания и подвергали опасности отряд.
К тому времени, как группа гитъянок достигает совершеннолетия, они годами слушали рассказы про Влаакит и её бессмертных воинов, обитающих в серебристой пустоте. В последнем испытании группа гитъянок, вступающих во взрослую жизнь, должна убить свежевателя разума в качестве священного ритуала прохода, прежде чем им разрешат присоединиться к народу, живущему на Астральном Плане. Когда победители впервые входят в Ту’нарат, они несут охотничьи трофеи непосредственно Влаакит. Она принимает подарок и начинает ритуальное песнопение, которое знаменует приём молодняка в общество гитъянок.
---
!!!Безжалостные мародёры
Когда Влаакит отдаёт приказ о подготовке очередного рейда, Ту’нарат оживает в предвкушении. Рыцари и другие солдаты, выбранные для участия в миссии, считают это высочайшей привилегией. Во славу Влаакит все рейдеры стараются максимально жестоко обойтись с целью – они убивают без разбора, берут понравившиеся сокровища и оставляют за собой только разрушение.
Когда судно гитъянок возвращается с рейда, оно под завязку загружено трофеями. Влаакит не ставит специфических требований, оставляя каждому отдельному рейдеру свободу в выборе того, с чем они вернутся. Одни ищут экзотические специи и травы, другие мародёрствуют в поисках свитков и книг. В результате Ту’нарат заполнен (скорее завален) почти бесконечным количеством вещей размером от громадных зданий до мельчайших образцов изысканных ювелирных украшений, которые гитъянки награбили на других планах.
---
!!!Праздные дилетанты
Как раса, выведенная свежевателями разума для боя, гитъянки, пока были порабощены, не знали ничего другого. Теперь они не воюют постоянно, и держать народ чем-то занятым, возможно, самая большая проблема, с которой сталкивается Влаакит.
Когда гитъянки не участвуют в рейдах или других миссиях во имя Влаакит, они наслаждаются апатичной жизнью в Ту’нарате. В астрале время не идёт, поэтому гитъянкам не нужно трудиться, чтобы получить воду и пищу. Чтоб они не отупели, Влаакит приказывает им заниматься различными искусствами и науками. Она регулярно организует соревнования, игры, связанные с поиском предметов, и другие испытания, чтоб занять слуг целенаправленной деятельностью, однако привлекательность таких развлечений быстро спадает через некоторое время. Большинство жителей Ту’нарата, когда они не призваны в рейде или на другую миссию, потакают себе во всём, в чём хотят.
Гитъянки, располагающие бесконечным количеством времени, жаждут новизны. Они ожидают, что каждый вернувшийся рейд даст им новые виды развлечений. Эта озабоченность новизной – краеугольный камень культуры гитъянок. Они поверхностно занимаются искусствами, но никогда не достигают в них мастерства. Они стоят среди сокровищ бесчисленных миров, но никогда истинно не восхищаются ими. Гитъянки переходят от темы к теме, от ремесла к ремеслу, никогда подолгу не останавливаясь на чём-то одном. Ту’нарат усеян полувысеченными скульптурами, недописанными фресками и прочими видами незаконченных произведений. Гитъянки просто бросают свои задумки, когда те им наскучат, и все их начинания заканчивались именно так.
---
---
!!!Алфавит гитов
Гиты используют письменность, состоящую из буквенных символов, объединённых в круглые кластеры, называемые тир’су. Каждая «спица» такого колеса соответствует букве алфавита. Каждый кластер символов – это слово. Множество тир’су формируют фразы и предложения. И гитъянки, и гитцераи говорят на Гитском, но у каждой расы свои чётко отличимые диалект и акцент. Также у них различаются способы написания тир’су. Гитъянки пишут тир’су по часовой стрелке, начиная с вершины. Гитцераи используют те же символы, но пишут свои тир’су против часовой стрелки, начиная снизу.
---
!!!Имена гитцераев
''Мужские имена:'' Грес, Дак, Дуурт, Калла, Ксорм, Муург, Нурм, Ферзт, Хурм, Шракк
''Женские имена:'' Адака, Адея, Витхка, Изера, Иммилзин, Лорая, Увея, Эзхелия, Элла, Янара
!!!Имена гитъянок
''Мужские имена:'' Виран, Гаат, Кар’и’нас, Кюит, Ликус, Рис’а’ан, Тропос, Элирдайн, Яа’адок
''Женские имена:'' Аарил, Б’нур, Вайра, Джен’лиг, Зар’рит, Йиссуне, Куорстил, Пах’зел, Сиррут, Фенелзи’ир
<<<
Худощавый, с пшеничного цвета волосами, орехово-коричневой кожей и удивительно бирюзовыми глазами, Бюргел был вдвое ниже Аэрона, и должен был взобраться на табурет, чтобы посмотреть в глазок. Как большинство домов в Оубле, этот был построен для людей, и более мелкие жители справлялись с неудобствами, как могли.
Зато размеры апартаментов как раз позволяли Бюргелу разместить все его принадлежности гномьего размера. Передняя комната была его мастерской и вмещала невообразимое разнообразие инструментов: молотки, зубила, пилы, отмычки, разноцветные линзы, ювелирные лупы, банки с порошками и измельчёнными ингредиентами для сотворения заклинаний. Жирный серый кот, фамильяр мага, лежал, свернувшись на гримуаре. Он открыл жёлтые глаза, смерил Аэрона презрительным взглядом, затем снова заснул.
— Ричард Ли Байерс, //Чёрный букет //
<<<
Нескончаемый гул трудолюбия слышен там, где селятся сплочённые общества гномов. Гул пронзают и звуки погромче: то тут, то там раздаётся скрежет шестерней, отголоски взрыва, возгласы удивления или триумфа, и, особенно часто — звонкий смех. Гномы восторгаются жизнью, каждый миг наслаждаясь новым изобретением, открытием, исследованием, созиданием или шалостью.
---
!!!Задорный вид
Гномы очень энергичны, и кажется, что каждый сантиметр их крошечного тела излучает энтузиазм и жизнелюбие. В среднем гномы чуть выше 90 см, и весят около 20 кг. Их смуглые или коричневые лица обычно украшены широкими улыбками (над которыми нависают их выдающиеся носы), и их светлые глаза светятся возбуждением. Их русые волосы обычно торчат в разные стороны, словно выражая неослабевающий интерес ко всему на свете.
Индивидуальность гномов ярко выражается в их внешности. Гномы мужчины содержат свои бороды, в отличие от растрёпанных волос, аккуратно подстриженными, но часто расчёсывают их на несколько прядей, или придают забавную заострённую форму. Их одежда, обычно спокойных коричневых тонов, изящно украшена вышивкой, тиснением, или расшита драгоценными камнями.
---
!!!Приверженность восторженности
По мнению гномов, жизнь — замечательная штука, и они готовы до капли осушать такой источник наслаждения в течение трёх-пяти отмеренных им веков. Люди могут задаваться вопросом — как не умереть со скуки за столь длинную жизнь, эльфы долгие годы могут смаковать красоту окружающего их мира, и, похоже, лишь гномов беспокоит, что даже за столь щедро отпущенный срок им не удаётся переделать и пересмотреть всё, что хочется.
Разговаривают гномы так, будто их мысли не успевают выбираться из их голов. При этом даже когда они делятся идеями и мнениями на всевозможные темы, им удаётся внимательно выслушивать других, вставляя уместные возгласы удивления, и проявляя уважительные знаки внимания.
---
!!!Светлые норы
Гномы делают свои дома в холмистых, лесистых землях. Они живут под землёй, но больше любят свежий воздух, чем дварфы, наслаждаясь живой природой поверхности всякий раз, когда могут. Их дома хорошо скрыты с помощью хитроумных устройств и простых иллюзий. Желанные гости быстро оказываются в светлых тёплых норах. Те, кого не ждут, вряд ли смогут эти норы даже отыскать.
Гномы, поселившиеся в землях людей, как правило являются огранщиками драгоценных камней, инженерами, мудрецами или жестянщиками. Некоторые человеческие семьи держат гномов преподавателей, чтобы их воспитанники наслаждались сочетанием серьёзного обучения и радостного удовольствия. Гном может обучать несколько поколений одной и той же семьи в течение своей долгой жизни.
Хотя гномы любят шутки любого рода, особенно каламбуры и шалости, они также посвящают себя решению более серьёзных задач, которые они ставят перед собой. Многие гномы являются умелыми инженерами, алхимиками, жестянщиками и изобретателями. Они готовы к совершению ошибок и смеются над собой в процессе совершенствования своего дела, принимая смелые (иногда отчаянные) решения, и мечтая о большем.
---
!!!Всегда благодарные
Гномы не выглядят опасными, и могут хорошей шуткой быстро разрушить подозрения. Обычные люди относятся к ним с любопытством, если никогда их прежде не видели, и вряд ли будут враждебны к ним. Редко можно встретить гнома, который был бы враждебным или злым, если он не перенёс тяжёлую травму. Гномы знают, что большинство рас не разделяют их чувство юмора, но они наслаждаются любой компанией, как и всем, что они делают.
---
!!!Исследование мира
Любопытные и импульсивные гномы могут пуститься в приключения, чтобы увидеть мир или из любви к исследованиям. Будучи любителями драгоценных камней и других мелких предметов, некоторые гномы рассматривают приключения как быстрый, хоть и опасный, путь к богатству. Вне зависимости от того, что побудило их к приключениям, гномы, которые приняли этот образ жизни, получают от него столько удовольствия, сколько и от любой другой деятельности, которой они занимаются, иногда к великому неудовольствию своих товарищей по приключению.
---
!!!Имена гномов
Гномы любят имена, и большинство из них имеют по полдюжины имён или около того. Мать гнома, отец, старейшина клана, тёти и дяди: каждый даёт гному имя, а также различные прозвища, которые могут на долгое время прилипнуть, а могут и не прилипнуть. Имена гномов, как правило, являются вариациями имен предков или дальних родственников, хотя некоторые из них придумывают абсолютно новые. Когда гномы имеют дело с людьми и другими, кто «зажат» в именах, они используют не более трёх имен: личное имя, название клана и прозвище, выбирая среди них те, которые наиболее забавно звучат.
''Мужские имена:'' Алвин, Алстон, Боддинок, Брок, Бюргел, Варрин, Вренн, Гербо, Гимбл, Глим, Джебеддо, Димбл, Зук, Келлен, Намфудл, Оррин, Рундар, Сибо, Синдри, Фонкин, Фрюг, Элдон, Эрки
''Женские имена:'' Бимпноттин, Брина, Вейуокет, До- нелла, Дувамил, Занна, Карамип, Карлин, Лилли, Лорилла, Лупмоттин, Маднаб, Никс, Нисса, Ода, Орла, Ройвин, Тана, Шамил, Эливик, Элиджобелл, Элла
''Названия кланов:'' Берен, Гаррик, Даергел, Мёрниг, Накл, Нингел, Раулнор, Тимберс, Турен, Фолькор, Шеппен
''Прозвища:'' Барсук, Босоног, Двазамок, Колотушка, Ку, Ним, Пеплосерд, Пивохлёб, Плащ, Пок, Самоцвет, Стамблдак, Фниппер
---
!!!Больше о гномах
Том Морденкайнена о врагах, Глава 5: Полурослики и Гномы, с. 106
<<<
Гоблины глупы, но совсем не идиоты.
— Оркболг, //Убийца гоблинов//
<<<
Гоблины занимают непростую нишу в полном опасностей мире, поэтому они набрасываются на любых существ, которых, по их мнению, они смогут запугать. Хитрые в сражении и жестокие в победе, гоблины жалкие и услужливые в поражении, как и в их собственном сообществе, где низшие касты должны преклоняться перед высшими, и где племена гоблинов пресмыкаются пред другими гоблиноидами.
---
!!!Хозяева зверей и рабовладельцы
Гоблины знают, что они – слабая, не очень умная раса, которую легко подчинят себе более крупные, более умные, более организованные, более свирепые или лучше владеющие магией существа. Их бог в конце концов был побежден маглубиетом, и теперь, когда могущественный призовет их, даже их души принадлежат ему. Именно осознание этого вынуждает их подчинять себе других существ, как только это возможно – жизнь гоблинов коротка.
Гоблины стремятся заманить в ловушку и поработить любое существо, с которым они сталкиваются, но они бегут от противника, который кажется им слишком опасным. В километрах вокруг своего логова они понаставили ямы, ловушки и сети, чтобы ловить неосторожных, и когда их охотничьи патрули сталкиваются с другими существами, они всегда ищут способ захватить противников вместо того, чтобы убить их. Гоблины, которые натыкаются на границу общества, сначала проверяют его обороноспособность, крадя предметы, и, если эти преступления остаются безнаказанными, они начинают красть людей.
Порабощенные существа получают наихудшее обращение, которое гоблины могут дать, не лишая рабов работоспособности. Но гуманоиды и монстры, которые особенно умелы или которые могут оказать необычные услуги, рассматриваются как любимые питомцы (с которыми иногда тоже плохо обращаются).
Фактически любое существо, которое можно силой заставить служить, можно найти в племени гоблинов, но крысы и волки присутствуют там почти всегда. И те, и другие живут бок о бок с гоблинами так же давно, как собаки и лошади с людьми, и в обществе гоблинов их содержат для тех же целей.
---
!!!Дела семейные
Племя гоблинов имеет четырехуровневую кастовую систему, состоящую из надсмотрщиков, охотников, собирателей, и париев. Статус каждой семьи в племени основан на её важности для выживания племени. Семьи, которые принадлежат к более высоким кастам, удерживают свой статус, не делясь своими знаниями и навыками с другими семьями, а у низших каст есть мало шансов улучшить свое тяжкое положение.
Чужаки, которые не понимают социальную систему гоблинов, иногда удивляются тому, как разные касты взаимодействуют с ними. Один человеческий воин может спугнуть дюжину собирателей, только чтобы затем испытать шок, когда на него злобно нападут два охотника. Пойманная группа захватчиков может висеть в сети, когда десятки гоблинов проходят мимо и не обращают на них внимания, пока не появится группа собирателей.
//''Кнутобои.''// В гоблинском племени наибольшую близость к понятию благородства имеет каста кнутобоев – семейства гоблинов, обученные сражаться, и также обладающие ключевыми навыками, такими как стратегия, обустройство ловушек, приручение животных, горное дело, плавка, ковка и религия. Если у племени есть какой–либо заклинатель, он тоже относится к этой касте. Надсмотрщики следуют за вождем племени, и кнутами доносят его волю до других гоблинов.
//''Охотники. ''//Семьи гоблинов, которые умеют пользоваться оружием, но не посвящены в какие–либо другие специальные знания, относятся ко второй по статусу касте в племени. Охотники часто – лучшие ездоки на волках и знают территории, наиболее отдаленные от логова племени. В мирное время они охотятся на дичь, а в бою они служат разведчиками, пехотинцами и кавалерией.
//''Собиратели.''// Семьи из третьей касты ответственны за добывание еды из окружающего пространства, беря то, что растет само, или воруя то, что смогут. Собиратели также занимаются сельским хозяйством, которое гоблины способны вести и обязаны проверять ловушки с захваченными людьми и животными. Собиратели обычно не вооружены оружием серьезнее чем лассо или нож, но они часто носят с собой сети, калтропы, лассо и узду для того, чтобы управлять захваченными существами. Эти гоблины готовят для племени, а во времена войны они также ответственны за создание ядов.
Собиратели, и стоящие ниже их парии, в бою очень боятся за свои жизни, полагая, что у кнутобоев и охотников есть специальные знания для того, чтобы выжить. Эти члены низших каст и дают гоблинам их репутацию трусов.
//''Парии. ''//Некоторые семейства гоблинов, стоящие ниже всех, состоят из самых тупоголовых, наименее образованных и самых слабых гоблинов. Они получают худшие рабочие места: чистить загоны животных, убирать за другими гоблинами и выполнять любые каторжные работы, такие как рытье шахт. Если у племени гоблинов есть рабы, чтобы делать часть этой работы, семьи париев наслаждаются возможностью контролировать и управлять этими существами, у которых вообще нет никакого статуса.
---
!!!Символы статуса
Гоблины любят символы власти, поэтому вождь племени часто берет такие атрибуты всюду, куда он или она идет. Такой символ может иметь обычную форму, как корона или трон, но также может быть и особенным предметом, как волчье седло с высокой спинкой или цветные ботинки. Касты в племени также имеют символы, указывающие на членство или родство, но эти символы редко значат одно и то же в разных племенах и редко о чем–либо говорят другим существам. Некоторые возможные символы положения в обществе даны в таблице символы статуса. Каста или босс могут демонстрировать больше чем один из предметов.
---
!!!Больше о гоблинах
Справочник Воло по монстрам, Глава 1: Происхождение монстров, Гоблиноиды: Войско завоевателей, с. 40
<<<
Голиафы могут быть полезными союзниками, но никогда не обращайтесь к ним за помощью, если вы слабы. Они столь же тверды и неумолимы как горный камень, столь же холодны и безжалостны как жестокие, холодные ветры. Если вы обращаются к ним, будучи в силе, они могут посчитать Вас достойным союза.
— Тордек, //Путеводитель по горным пикам //
<<<
На высоких горных пиках – выше склонов, на которых растут деревья, там, где разреженный воздух и прони- зывающие ветра – обособленно живут голиафы. Мало людей, которые заявляют, что видели голиафа, и еще меньше тех, кто утверждает, что подружился с одним из них. Голиафы кочуют по суровому царству скал, ветра и холода. Их тела, выглядящие будто вырезаны из горного камня, обладают огромной физической силой. Их дух, влекомый блуждающим ветром, заставляет их кочевать от вершины к вершине. Их сердца, наполненные суровым почтением к их холодному миру, обязывают каждого голиафа заслужить свое место в племени или умереть пытаясь.
---
!!!Ведомые соперничеством
Каждый день бросает голиафу новый вызов. Еда, вода и убежище редко встречаются в высокогорье. Одна ошибка может принести гибель всему племени, в то время как героическое усилие одного может гарантировать выживание всей группе.
Голиафы таким образом полагаются на самодостаточность и собственные умения каждого. У них есть привычка вести счет, подсчитывая свой вклад во что-то и сравнивая его со вкладом других. Голиафы любят побеждать, но они рассматривают поражение как причину усовершенствовать свои навыки.
У этой приверженности соперничеству есть и темная сторона. Голиафы – свирепые конкуренты, но больше прочего их ведет желание превзойти свои прошлые деяния. Если голиаф убил дракона, он или она будет искать более крупного и более сильного дракона, чтобы сразить и его. Редкий голиаф – искатель приключений доживает до старости, поскольку большинство умирает, пытаясь превзойти собственные подвиги.
---
!!!Честная игра
Для голиафов соревнование существует только когда оно проходит в равных условиях. Соревнование определяет талантливость, преданность и целеустремленность. Это факторы позволяют выживать на их родине, не полагаясь на магические предметы, деньги или прочее, что может склонить чашу весов в одну или другую сторону. Голиафы с радостью используют такие преимущества, но они делают это с опаской, помня, что такое преимущество может в любой момент пропасть. Голиаф, который слишком сильно на них полагается, может стать самонадеянным, а в горах это верный путь к беде.
Эта черта проявляется наиболее сильно, когда голиафы взаимодействуют с другими народами. Отношения между крестьянами и знатью озадачивают голиафов. Если королю не хватает ума или лидерства, чтобы вести за собой, то очевидно, что его место должен занять самый талантливый человек в королевстве. Голиафы редко оставляют такие мнение при себе, и высмеивают людей, которые полагаются на общественные структуры или правила, чтобы сохранить власть.
---
!!!Естественный отбор
Среди голиафов любой взрослый, который не приносит пользу племени, изгоняется. У одного голиафа мало шансов выжить, особенно у старого или слабого. У голиафов мало жалости ко взрослому, который не может позаботиться о себе, хотя больного или раненого лечат в следствии представлений голиафов о честной игре.
Травмированный надолго голиаф не хочет быть бременем для племени. Как правило, такой голиаф умирает, пытаясь работать как здоровый, или убегает ночью, чтобы встретить свою судьбу на холоде.
В некоторых случаях, стремление голиафа превзойти самого себя приводит его к неизбежному поражению и смерти. Для голиафа намного лучше умереть в бою, на пике силы и умения, чем долго и медленно умирать от старости. Крайне мало людей когда-либо встречало пожилого голиафа, и даже эти голиафы, которые покинули свое племя, борются с желанием расстаться с жизнью, поскольку их физические навыки приходят в упадок.
Из–за опасности их образа жизни, племена голиафа страдают от хронической нехватки опыта, из-за отсутствия старейшин. Они надеются на врожденную мудрость своих лидеров, поскольку редко могут рассчитывать на мудрость, обретенную с возрастом.
---
!!!Имена голиафов
У каждого голиафа есть три имени: имя от рождения, данное матерью и отцом новорожденного, прозвище, данное вождем племени, и название семьи или клана. Имя от рождения длиной до трех слогов. Название клана – пять и более слогов с гласной на конце.
Имена от рождения редко связано с полом. Голиафы видят женщин и мужчин как равных во всем, и общества с разделением ролей между полами либо озадачивают их, либо вызывают насмешку. Для голиафа именно тот, кто лучше делает какую то работу, должен её выполнять.
Прозвище голиафа — это характеристика, которая может измениться по прихоти вождя или старейшины племени. Оно описывает любой поступок, успех или провал, совершенный голиафом. Голиафы дают прозвища своим друзьям из других рас, и изменяют их, чтобы показать совершенные ими дела.
Голиафы представляются всеми тремя именами, перечисляя их в таком порядке: имя от рождения, прозвище, название клана. В обычной беседе они используют свое прозвище.
''Имя от рождения:'' Аукан, Вауния, Вимак, Гаи-Ал, Гаусак, Иликан, Кеоти, Куори, Ло-Ка, Мавеис, Маннео, Нала, Орило, Пааву, Петани, Сасем, Талай, Эглат, Юфал.
''Прозвище:'' Бесстрашный, Взывающий к заре, Вывихнутая конечность, Вырезающий уступы, Глядящий в небо, Далеко прыгающий, Дважды осиротевший, Нашедший кремень, Одинокий охотник, Остроглазый, Рисующий слова, Скручивающий нить, Сшибающий корни, Твердая рука, Убивший медведя.
''Название клана:'' Анакалатай, Ваймей-Лага, Гатаканаси, Каладжано, Колаи-Джилиана, Кото-Олави, Оголакану, Тулиаджа, Тунукаласи, Эленитино.
Находясь между миром живых и миром мертвых, дампиры сохраняют связь с жизнью, но их бесконечно испытывает порочный голод. Их родство с нежитью дарует дампирам способность овладеть вампирским мастерством в виде ночного зрения и высасывающего жизнь укуса.
Обладая уникальным пониманием природы нежити, многие дампиры становятся искателями приключений и охотниками на чудовищ. Их мотивы часто глубоко личные.
Одни ищут опасности, считая монстров олицетворением собственного голода. Другие жаждут отомстить тому, кто превратил их в дампира. А другие предпочитают одиночество охоте, стремясь отдалиться от тех, кто искушает их голод.
---
!!Голод дампира
Каждый дампир испытывает жажду, утоляемую только за счет живых. Те, кто слишком усердствует в удовлетворении своей жажды, рискуют потерять контроль над собой и вечно рассматривать других как добычу. Те, кто сопротивляется, могут найти исключительные способы контролировать свои желания или подавлять их постоянным, стачивающим зубы воздержанием. В любом случае, искушение преследует дампиров, а обстоятельства складываются так, что у них есть бесконечные поводы для потакания своим желаниям.
Хотя многие дампиры жаждут крови, ваш персонаж может иначе получить пропитание от живых. Совершите бросок или выберите вариант из таблицы ниже, чтобы определить, что искушает вашего персонажа.
| !к6 |!Голод |
| 1 |Кровь |
| 2 |Плоть или сырое мясо |
| 3 |Спинномозговая жидкость |
| 4 |Психическая энергия |
| 5 |Сны |
| 6 |Жизненная энергия |
---
!!Происхождение дампира
Дампиры часто возникают в результате встреч с вампирами, но всевозможные мрачные сделки, некромантическое влияние и встречи с таинственными бессмертными также могли преобразить вашего персонажа. В таблице ниже приведены предположения о том, как ваш персонаж получил свою происхождение.
| !к8 |!Происхождение |
| 1 |Вы - реинкарнация предка, который был тираном-вампиром. |
| 2 |Вы заключили договор с хищным божеством, извергом, феей или духом, поэтому вы разделяете их голод. |
| 3 |Вы пережили нападение вампира, но навсегда изменились. |
| 4 |Внутри вас живет паразит. Вы потакаете его голоду. |
| 5 |Трагедия прервала ваше превращение в бессмертного. |
| 6 |Вы - ослабленная форма потустороннего существа. Утоление голода ускоряет ваше перерождение. |
| 7 |Один из ваших родителей был вампиром. |
| 8 |Радикальный эксперимент изменил ваше тело, заставив вас зависеть от других в получении жизненно важных веществ. |
<<<
«Ты опоздал, эльф!» — послышался знакомый грубый голос. Бренор Боевой Молот встал на труп убитого им йети, не обращая внимания на то, что под ним корчился его эльфийский друг. Несмотря на испытываемые неудобства, Дриззт всё же был рад видеть этот большой нос и рыжую бороду. «Я так и знал, что ты вляпаешься в какую-нибудь историю и мне снова придётся тебя вытаскивать!».
— Р. А. Сальваторе, //Магический кристалл //
<<<
Полные древнего величия королевства и вырезанные в толще гор чертоги, удары кирок и молотков, раздающиеся в глубоких шахтах и пылающий кузнечный горн, верность клану и традициям и пылающая ненависть к гоблинам и оркам — вот вещи, объединяющие всех дварфов.
---
!!!Невысокие и крепкие
Смелые и выносливые дварфы известны как опытные воины, шахтёры, камнетёсы и металлурги. Хотя они и не превышают 150 см в высоту, дварфы настолько широкоплечие и плотные, что весят столько же, сколько превосходящий их в росте на 60 см человек. Их отвага и выносливость также не уступает представителям более высоких народов.
Кожа у дварфов бывает от тёмно-коричневой до светлой, с красным оттенком. Наиболее распространённые оттенки — светло-коричневый или смуглый, как разные виды земли. Их волосы, которые они носят длинными, но собранными в простые причёски, обычно чёрного, серого или коричневого цвета, но у дварфов с бледной кожей часто встречаются рыжие волосы. Дварфы мужчины очень ценят свои бороды и тщательно за ними ухаживают.
---
!!!Долгая память, долгие обиды
Дварфы могут жить более 400 лет, и старейшие из них часто помнят этот мир сильно отличным от нынешнего. Такая долговечность даёт им особый взгляд на мир, которого лишены короткоживущие расы вроде людей и полуросликов.
Дварфы стойкие и выносливые, как горы, в которые они влюблены. Они стоически противостоят проходящим столетиям и почти не меняются. Они уважают традиции своих кланов, прослеживая их родословную до самого основания древнейших твердынь на рассвете молодого мира, и не отказываются от этих традиций с лёгкостью. Частью этих традиций является преданность богам дварфов, которые поощряют присущие дварфам идеалы: прилежный труд, сноровку в бою и любовь к кузнечному горну.
Дварфам присущи непреклонность и лояльность, верность своему слову, решительность в действиях, временами переходящие в упрямство. У многих дварфов сильно развито чувство справедливости, и они медленно прощают причинённое им зло. Зло причинённое одному дварфу, это зло, причинённое всему его клану. Таким образом, попытка отомстить одному дварфу может превратиться во вражду, захлестнувшую целый клан.
---
!!!Кланы и королевства
Королевства дварфов простираются глубоко под горами, где дварфы добывают драгоценные металлы и камни и куют чудесные вещи. Они любят красоту драгоценных металлов и ювелирных изделий, и у некоторых дварфов эта любовь может превратиться в алчность. Ценности, которые они не могут найти в своих горах, они получают благодаря торговле. Они не любят кораблей, и предприимчивые люди и полурослики часто ведут торговлю дварфскими товарами через водные пути. Благонадёжным представителям этих рас всегда рады в дварфских поселениях, хотя некоторые места там закрыты даже для них.
Главным элементом дварфского общества является клан, и дварфы очень высоко ценят социальное положение. Даже дварфы, живущие вдалеке от своих королевств, хранят свою принадлежность к клану, узнают относящихся к нему соплеменников и взывают к именам предков, произнося клятвы и выкрикивая проклятья. Лишение клана это худшая судьба, способная выпасть на участь дварфа.
Дварфы в чужих землях обычно работают ремесленниками, чаще всего оружейниками или ювелирами. Некоторые становятся наёмниками или телохранителями, очень ценимыми за их храбрость и преданности.
---
!!!Боги, золото, клан
Дварф, выбравший путь искателя приключений, может руководствоваться жаждой сокровищ — для личного пользования, для достижения определённой цели или даже ради альтруистического желания помочь другим. Другими может двигать божественное озарение, прямой приказ, или желание принести славу одному из дварфских божеств. Клан и предки тоже являются одними из сильнейших мотивов. Дварф может искать способ вернуть утерянную честь клана, отомстить древнему врагу или вновь обрести место в клане, откуда был изгнан. Или он может отправиться на поиски топора, утерянного предком на поле брани столетия назад.
---
!!!Имена дварфов
Имя дварфу даётся старейшиной клана согласно традиции. Каждое подходящее имя используется из поколения в поколение. Имя дварфа принадлежит клану, а не отдельному дварфу. Дварф, опорочивший своё имя, лишается его, и согласно законам, ему запрещается использовать любое другое дварфское имя.
''Мужские имена:'' Адрик, Альберих, Баренд, Баэрн, Броттор, Бренор, Вондал, Вэйт, Гардаин, Даин, Даррак, Делг, Килдрак, Моргран, Орсик, Оскар, Рангрим, Рюрик, Таклинн, Торадин, Тордек, Торин, Травок, Траубон, Ульфгар, Фаргрим, Флинт, Харбек, Эберк, Эйнкиль
''Женские имена:'' Артин, Бардрин, Вистра, Гуннлода, Гурдис, Дагнал, Диеза, Илде, Катра, Кристид, Лифтраса, Мардред, Одхильд, Рисвин, Саннл, Торбера, Торгга, Фалкрунн, Финеллен, Хельджа, Хлин, Эльдет, Эмбер
''Названия кланов: ''Балдерк, Боевой Молот, Горунн, Данкил, Железный Кулак, Крепкая Наковальня, Ледяная Борода, Лодерр, Лютгер, Огненная Кузня, Рамнахейм, Стракелн, Торунн, Унгарт, Холдерхек
---
!!!Больше о дварфах
Том Морденкайнена о врагах, Глава 3: Дварфы и Дуэргары, с. 65
Большинство людей, размышляя о других планах, считают их очень далёкими мирами, но планарное влияние может проявиться в любом месте мира. Иногда оно проявляется в существах, рождённых в результате определённых обстоятельств, и несущих силу других миров в своей крови. Дженази — один таких народов, это потомки гениев и смертных.
Стихийные Планы часто неприветливы к уроженцам Материального Плана: сокрушительная земля, иссушающее пламя, безграничные небеса и бескрайние моря делают посещение этих мест опасным даже на короткое время. Однако, сильные гении не стоят перед такими проблемами, проникая в мир смертных. Они приспособлены к смешанным стихиям Материального Плана и иногда посещают их по собственной воле или будучи призванными магией. Некоторые гении могут принимать смертный облик и путешествовать инкогнито.
Во время этих визитов смертный может привлечь внимание гения, что может перерасти в дружбу и романтические отношения, а иногда и к появлению детей. Этих детей и называют дженази: люди, имеющие связь с двумя мирами, и в тоже время не принадлежащие ни к одному из них. Некоторые дженази рождены от союза смертного и гения, у других оба родителя могут быть дженази, и очень редко те, у кого в родословной были гении, могут унаследовать его стихийную природу, которая дремала в течение нескольких поколений.
Иногда дженази могут появиться от воздействий всплеска стихийной силы, через такие явления, как прорыв Внутренних Планов или схождение планов. При таких явлениях стихийная энергия проникает в тела существ, и её может оказаться достаточно, чтобы в качестве потомства от двух смертных появился дженази.
---
!!!Наследники силы стихий
Дженази наследуют что-то от обеих сторон своей двойственной природы. Они похожи на людей, но помимо необычного цвета кожи (красный, зелёный, синий или серый цвет) в них есть нечто необычное. Стихийная кровь, текущая в их венах, может проявлять себя по-разному в каждом дженази, и чаще всего как магическая сила.
Силуэтом дженази может сойти за человека. Те, у кого земляное или водное происхождение, как правило, тяжелее, в то время как воздушные и огненные, как правило, легче. Внешне дженази могут иметь черты своих смертных родителей (заострённые уши от эльфа, коренастое телосложение и густые волосы от дварфа, маленькие руки и ноги от полурослика, чрезвычайно большие глаза от гнома и так далее).
Дженази почти никогда не общаются со своими стихийными родителями. Гении редко проявляют интерес к своим смертным потомкам и рассматривают их как нелепую случайность. Многие вообще не испытывают никаких чувств к своим детям-дженази.
Некоторые дженази живут как изгои, отправленные в ссылку из-за своей необычной внешности и странной магии, другие же могут стать лидерами диких гуманоидов и странных культов в диких землях. Третьи могут занимать влиятельные посты, особенно там, где почитают стихийных существ. Некоторые дженази оставляют Материальный План, чтобы найти пристанище на домашнем плане своего родителя-гения.
---
!!!Дикие и уверенные
Дженази редко испытывают недостаток в уверенности, и считают себя способными справиться с любой проблемой. Эта уверенность может проявляться как изящная уверенность в своих силах у одного дженази, и как высокомерие у другого. Такая слепая уверенность в себе может иногда заставить дженази пойти на неоправданный риск, а их большие планы часто приводят к большим неприятностям, как для самих дженази, так и их спутников.
Слишком частые неудачи могут уменьшить самомнение дженази, поэтому они всегда стремятся к идеалу, оттачивая свои таланты и совершенствуясь в своём мастерстве.
---
!!!Земли дженази
Дженази так редки, что даже за всю жизнь они могут не встретить никого из своего вида. У них нет больших городов или империй. Дженази редко создают собственные общины, и обычно принимают культуру и общество, в которых они родились. Чем более странен их внешний вид, тем труднее им приходится в жизни. Многие дженази растворяются в многолюдных городах, где их внешность не привлекает внимания людей, привыкших к разнообразию народов.
Живущим на границе приходится гораздо труднее. Люди там меньше принимают различия. Холодный приём и подозрительные взгляды это лучшее, на что могут надеяться дженази; в более отсталых местах они сталкиваются с гонениями и даже насилием со стороны людей, которые ошибочно принимают их за исчадий. Не желая такой жизни, дженази ищут изоляции от мира, обустраивая свои дома в горах или лесах, возле озёр или даже под землёй.
---
!!!Имена дженази
Дженази могут использовать имена народа, среди которого росли. Позднее они могут взять себе имя, делающее акцент на их наследии, к примеру, Пламя, Зола, Волна или Оникс.
---
!!!Предыстория дженази
У каждой подрасы дженази свой собственный темперамент, который мог бы сделать некоторые предыстории более подходящими, чем другие.
''Дженази воздуха'' гордятся своим наследием, иногда вплоть до высокомерия. Они могут быть более красноречивы, и стремятся иметь аудиторию. Они редко остаются в одном месте на долгое время, и всегда находятся в поиске чего-то нового, торопятся жить. Воздушные дженази, не живущие в городах, предпочитают открытые земли, такие как равнины, пустыни и высокие горы. Наиболее подходящая предыстория для них: артист, благородный и шарлатан.
''Дженази земли'' более замкнуты; их связь с землёй препятствует им чувствовать себя комфортно в городах. Их необычный размер и сила делают их хорошими солдатами, хотя благодаря стойким качествам они могут впечатлить других и стать великими лидерами. Многие дженази земли живут в подземельях, где они чувствуют себя комфортно. Когда они выходят из своих пещер, они могут бродить по холмам и горам или могут предъявить права на старые руины. Наиболее подходящая предыстория для них: отшельник, солдат и чужеземец.
''Дженази огня'' часто попадают в неприятности из-за своего вспыльчивого характера. Как и их воздушные собратья, они иногда хвастают своим превосходством над простыми людьми. Но они также стремятся, чтобы другие разделяли их высокое самомнение, поэтому постоянно борются за свою репутацию. Наиболее подходящая предыстория для них: благородный, народный герой и преступник.
Почти все ''дженази воды'' имеют опыт работы на борту или около морских судов. Они становятся отличными моряками и рыбаками. Как и дженази земли, дженази воды предпочитают тихие, уединённые места; широкие берега естественных водоёмов. Они идут туда, куда хотят, и делают то, что хотят, редко чувствуя привязанность к чему-либо. Наиболее подходящая предыстория для них: моряк и отшельник.
<<<
Парнишка был забит до смерти, его напарница загнана в угол, жрица обмочилась, а волшебница истекала кровью из глубокой колотой раны. К удаче этих новичков, большинство гоблинов собрались в узком проходе, а он был драконорождённым. Вдохнув поглубже, он на миг задумался о том, как же пахнет поджаренный гоблин.
— Рхогар, драконорождённый-ветеран
<<<
Рождённые драконами, о чём говорит их название, драконорождённые идут гордо подняв голову по миру, который встречает их со страхом и непониманием. Сформированные драконьими богами или самими драконами, драконорождённые первоначально вылупились из драконьих яиц как новая раса, сочетающая в себе лучшие качества драконов и гуманоидов. Некоторые драконорождённые являются верными слугами истинных драконов, другие образуют ряды солдат в великих войнах, а некоторые ищут свою судьбу, не найдя себе призвания.
---
!!!Гордый драконий род
Драконорождённые, как правило, выглядят как драконы, стоящие на задних лапах и принявшие гуманоидную форму, потеряв при этом крылья и хвост. Первые из них обладали чешуёй оттенков, присущих драконам разных видов, но поколения непрерывного скрещивания привели к появлению единого цвета. Их маленькие, аккуратные чешуйки обычно цвета меди или латуни, иногда с алым, золотым, медно-зелёным или рыжим оттенком. Они высоки и крепки, часто достигая двух метров в высоту и обладая весом свыше 130 килограмм. Их крепкие, четырёхпалые конечности снабжены пальцами, не уступающими по прочности когтям.
Кровь определённых видов драконов чрезвычайно сильна в представителях некоторых кланов. Эти драконорождённые часто гордятся тем, что цвет их чешуи близок к цвету их прародителей — ярко красный, зелёный, синий или белый, глянцево-чёрный или блестяще-золотой, серебряный, латунный, медный или бронзовый.
Помимо этого, каждый драконорождённый обладает той или иной частью истинного дракона. Тех,чья часть проявляется в виде драконьего хвоста, обычно избегают, так как для драконорождённых наличие хвоста считается плохой приметой и дурным предзнаменованием.
---
!!!Самодостаточные кланы
Для каждого драконорождённого его клан важнее собственной жизни. Они ставят свою преданность и уважение клану выше всего, даже богов. Каждый поступок драконорождённого отражается на чести его клана, и тот, кто опозорил свой клан, может быть изгнан. Каждый драконорождённый знает своё место и свои обязанности в клане, и долг чести заставляет их придерживаться этого места.
Постоянное стремление к самосовершенствованию отражает самодостаточность всей расы драконорождённых в целом. Они ценят мастерство и совершенство во всём, к чему прикладывают усилия. Драконорождённые ненавидят проигрывать, и они приложат все возможные силы к достижению цели, прежде чем откажутся от неё. Они часто делают достижение мастерства в каком-либо навыке целью всей своей жизни. Представители других рас, разделяющие эти взгляды, могут легко завоевать уважение среди драконорождённых.
Однако, несмотря на стремление к самодостаточности, они понимают, что в трудной ситуации без помощи бывает не обойтись. Но лучший источник помощи это твой клан. А если помощь требуется всему клану, то они скорее обратятся к другому клану драконорождённых, чем к представителям других рас, или даже к помощи богов.
---
!!!Имена драконорождённых
Драконорождённые получают личные имена при рождении, но в знак уважения они на первое место ставят название клана. Детское имя или прозвище обычно используется среди представителей одного выводка как неофициальное. Такое имя может указывать на некоторое событие из жизни драконорождённого или его привычку.
''Мужские имена:'' Арджхан, Баласар, Бхараш, Гхеш, Донаар, Крив, Медраш, Мехен, Надарр, Панджед, Патрин, Рхогар, Тархун, Торинн, Хескан, Шамаш, Шединн
''Женские имена:'' Акра, Бири, Даар, Джхери, Кава, Коринн, Мисханн, Нала, Перра, Райанн, Сора, Сурина, Тхава, Уаджит, Фаридэ, Хавилар, Харанн
''Детские имена:'' Кривоухий, Липучка, Праведник, Скалолаз, Фанатик, Щитогрыз
''Названия кланов:'' Версисатургиеш, Даардендриан, Делмирев, Драчедандион, Кепешкмолик, Керрилон, Кимбатуул, Клестинсиаллор, Линксакасендалор, Мястан, Неммонис, Нориксиус, Офиншталажир, Прексижандилин, Турнурот, Фенкенкаьрадон, Шестенделиат, Яржерит
<<<
Даже в смерти каждое существо играет свою роль в поддержании Великого Баланса. Но теперь растет дисбаланс, сила, которая хочет повелевать природой. Это разрушительное поведение смертных рас. Чем дальше их уводят от природы их действия, тем более развращает их влияние. Как друиды мы стремимся в основном защищать и обучать, сохранять Великий баланс, но бывают случаи, когда мы должны встать против опасности и искоренить ее.
— Сафран, архидруид
<<<
Вскидывая вверх сучковатый посох из остролиста, эльф вызывает буйство небесной стихии и обрушивает разряды молний на орков, посмевших угрожать его лесу огнём.
Затаившись высоко в кроне дерева, человек в облике леопарда смотрит из джунглей на чужеродную архитектуру храма Злой Стихии Воздуха и пристально наблюдает за действиями культистов.
Рубя клинком из чистого пламени, полуэльф бросается в гущу армии скелетов, чтобы уничтожить кощунственную магию, возвратившую им извращённое подобие жизни.
Призывая стихии или подражая животным, друиды воплощают незыблемость, приспособляемость и гнев природы. Они ни в коем случае не владыки природы — вместо этого друиды ощущают себя частью её неодолимой воли.
Друиды являются хранителями природного мира, и считается, что со временем друид становится голосом природы, которая, по правде сказать, слишком неуловима для простого люда. Многие, став друидами, понимают, что они тяготеют к природе; её силы, циклы и движения наполняют их умы и души изумлением и проницательностью. Многие ученые и мудрецы изучали природу, слагая тома об этих таинствах и силе, но друиды – особый тип существ: в какой-то момент они начинают воплощать эти природные силы, производя магические явления, которые связывают их с духом природы и потоком жизни. Окружающие часто почитают, избегают или считают друидов опасными из-за их странной и таинственной силы.
---
!!Сила природы
Выше чего-либо другого друиды почитают природу. Именно она является источником всех их заклинаний и магических способностей, непсредственно или через природное божество. Многие предпочитают духовный путь конечного единения с природой, но есть и те, кто служат богам диких просторов, животных или стихий. Длящиеся испокон веков обычаи друидов также называют Старой Верой, противопоставляя их поклонению в храмах и у алтарей.
Заклинания друидов воздействуют через животных и окружающую природу. Это сила клыка и когтя, солнца и луны, огня и бури. Также друиды учатся принимать облик животных, и некоторые настолько углубляются в это умение, что родному облику предпочитают звериный.
---
!!Сохранение равновесия
Для друидов природа представляет собой шаткое равновесие. Воздух, земля, огонь и вода — те четыре стихии, что составляют основу мира — должны уравновешивать друг друга. Если одна из стихий обретёт превосходство, сам мир может прекратить существование, притянутый стихийным измерением и разорванный на элементарные составляющие. Чтобы не допустить этого, друиды противостоят сектам Стихийного Зла и всем, кто стремится наделить любую из стихий превосходящей силой. Также друидов заботит тонкое экологическое равновесие, необходимое флоре и фауне, и готовность цивилизованных поселений жить в гармонии с природой, а не противопоставлять себя ей. Жестокость природы — часть естественного порядка вещей, однако друиды не терпят всё чужеродное, включая аберрации (иллитиды и бехолдеры) и нежить (зомби и вампиры). Иногда друиды совершают вылазки на таких существ, особенно если те приближаются к их территориям.
Священная земля и области нетронутой природы нередко охраняются друидом. Впрочем, при достаточной угрозе естественному равновесию или подзащитной земле друид может перейти к активной борьбе с напастью, ступив на путь искателя приключений.
---
!!Священные растения
Некоторые растения считаются священными у друидов. В частности, это берёза, бузина, дуб, ива, можжевельник, ольха, омела, орех, падуб (он же остролист), рябина, тис и ясень. Эти растения часто используются в изготовлении друидической фокусировки, которая может включать, например, ветви дуба или тиса, побеги омелы.
Древесина подходит и для других изделий, включая оружие и щиты. Тис связан со смертью и перерождением, так что из него делают рукояти скимитаров и серпов. Ясень символизирует жизнь, а дуб — силу: из них получаются замечательные древки, дубины, боевые посохи и щиты. Ольху считают растением воздуха и делают из неё метательное оружие, например, дротики и метательные копья.
Друиды из мест, которым эти растения чужды, обращаются к местным видам. Например, пустынный друид может почитать юкку и кактус.
---
!!Друиды и боги
Некоторые друиды напрямую поклоняются силам природы, однако большинство посвящает себя служению одному из природных божеств, широко представленных в мультивселенной. Традиции поклонения этим богам часто считаются более древними, чем церкви и жречество в цивилизованных регионах. В мире Серого Ястреба, в частности, религия друидов также называется Старой Верой и распространена среди фермеров, охотников, лесников, рыбаков и прочих, чья жизнь тесно связана с природой. Она включает поклонение Природе как таковой, но также и почитание Беори, Матери Орта, и культы Обад-Хая, Элонны и Улы.
В мирах Серого Ястреба и Забытых Королевств круги друидов обычно не связаны поклонением одному какомулибо богу. Например, в Забытых Королевствах в одном и том же круге могут состоять друиды Майликки, Сильвануса, Чонтии, Эльдат и даже грозных Богов Гнева — Амберли, Малара, Ориль и Талоса. Коллективно этих богов часто называют Первым Кругом как самых почитаемых у друидов. Любой друид знает их наперечёт и считает всех, даже жестоких, достойными поклонения.
В Эберроне друиды придерживаются анимистических убеждений, никак не связанных с Верховными Владыками, Тёмной Шестёркой или любой другой религией. Друиды верят, что у всего живого и у всех естественных явлений — солнца, луны, ветра, огня, даже самого мира — есть дух, а друидическая магия — способ обращения к этим духам и управления ими. Однако у разных течений друидизма разные представления об отношениях духов между собой и с цивилизацией. Например, Скованные Ясенем считают тайную магию извращением природного порядка, Дети Зимы преклоняются перед силами смерти, а Хранители Врат стерегут древние учения, останавливающие вторжение в мир аберраций.
---
!!Создание друида
Создавая персонажа друида, подумайте о том, что сформировало его тесную связь с природой. Возможно, он родом из мест, где жива Старая Вера. Или же его, брошенного ребёнком в чаще леса, нашёл и вырастил друид. Возможно, персонаж испытал волнующий опыт встречи с духом природы — скажем, пережил нападение гигантского орла или лютого волка. Может, персонаж родился в разгар бури или во время извержения вулкана, что стало знаком уготованного ему пути друида.
Всегда ли он был странствующим друидом или же когда-то охранял рощу или ручей? Возможно, зло отравило его родину, и он отправился в большой мир в поисках нового смысла и надежды.
Ваш друид может быть истинным поклонником природы, тем, кто всегда презирал цивилизацию и нашел утешение в диких землях. Или ваш персонаж может быть городским жителем, который теперь стремится привести цивилизованный мир в гармонию с дикой природой. Вы можете использовать нижеприведенные разделы чтобы придать деталей вашему друиду вне зависимости от того, как он попал в эту профессию.
---
!!!Любимый предмет
Некоторые друиды носят один или несколько предметов, священных для них или имеющих глубокое личное значение. Такие предметы не обязательно волшебны, но каждый из них является объектом, олицетворяющим связь разума и сердца друида с конкретной концепцией или духовным мировоззрением.
Когда вы решите каким будет ваш любимый предмет, подумайте над тем чтобы создать для него историю: как к вам попал этот предмет и почему он так важен для вас?
| !к6 |!Предмет |
| 1 |Веточка дерева собраний, которое стоит в центре вашей деревни |
| 2 |Флакон с водой из источника святой реки |
| 3 |Специальные травы, перевязанные в пучок |
| 4 |Маленькая бронзовая чаша с выгравированными изображениями животных |
| 5 |Погремушка сделанная из высушенной тыквы и падубных ягод |
| 6 |Миниатюрный золотой серп, переданный вам вашим наставником |
---
!!!Направляющий аспект
Многие друиды чувствуют сильную связь с конкретным аспектом естественного мира, например, с водоемом, животным, типом дерева или каким-либо другим видом растения. Вы отождествляете себя с выбранным аспектом; своим поведением и самой своей природой он служит примером, которому вы пытаетесь подражать.
| !к6 |!Направляющий аспект |
| 1 |Тисовое дерево напоминает вам об обновлении разума и духа, позволяя старому отмереть и новому прорасти. |
| 2 |Дубы представляют силу и жизнелюбие. Медитация под дубом наполняет ваши тело и разум решимостью и стойкостью. |
| 3 |Бесконечный поток реки напоминает вам о величии мира. Вы стремитесь действовать с учетом долгосрочных интересов природы. |
| 4 |Море – постоянный бурлящий котел силы и хаоса. Это напоминает вам, что принятие изменений необходимо для выживания в мире. |
| 5 |Птицы в небе свидетельствуют о том, что даже самые маленькие существа могут выжить, если они останутся выше битвы. |
| 6 |Как видно из действий волка, сила одного ничто по сравнению с силой стаи. |
---
!!!Наставник
Не редкость для будущих друидов искать (или быть найденными) учителей или старейшин, которые научат их основам их магического искусства. Большинство друидов, которые учатся у наставника, начинают свое обучение в молодом возрасте, а наставник играет жизненно важную роль в формировании взглядов и убеждений ученика.
Если ваш персонаж учился у кого-то другого, кто или что это была за личность, и какова была природа ваших отношений? Ваш наставник наделил вас определенным взглядом или иным образом повлиял на ваш подход к достижению целей выбранного вами пути?
| !к6 |!Наставник |
| 1 |Ваш наставник был мудрым трентом, который учил вас мыслить категориями годов и десятилетий, а не дней и месяцев. |
| 2 |Вы были обучены дриадой, которая наблюдала за дремлющим порталом в Бездну. Во время вашего обучения вам было поручено наблюдать за скрытыми угрозами миру. |
| 3 |Ваш учитель всегда взаимодействовал с вами в форме сокола. Вы никогда не видели гуманоидную форму наставника. |
| 4 |Вы были одним из нескольких молодых людей, которые были учениками старого друида, пока один из учеников не предал вашу группу и не убил вашего наставника. |
| 5 |Ваш наставник являлся вам только в видениях. Вам еще предстоит встретиться с этой личностью, и вы не уверены, что такая личность существует в телесной форме. |
| 6 |Ваш наставник был вермедведем, который научил вас относиться ко всякой живой твари с равным уважением. |
[img class="centerme" [https://i.imgur.com/KcqUDXU.jpg]]
<<<
Стать жрецом - стать посланником богов. Сила даруемая богами велика, но она всегда несёт огромную ответственность.
— Патриарх Ригби
<<<
Воздев руки и глаза к небу и запев молитву, эльф начинает сиять внутренним светом, который проливается на боевых товарищей и лечит их.
Распевая песнь славы, дварф широко размахивает своим топором, прорубаясь через ряды орков, выступивших против него, крича хвалу богам с каждым павшим врагом.
Посылая проклятье на силы нежити, женщина поднимает свой священный символ, из которого льётся свет, отбрасывающий зомби, толпящихся около её спутников.
Жрецы являются посредниками между миром смертных и далёкими мирами богов. Настолько же разные, насколько боги, которым они служат, жрецы воплощают работу своих божеств. В отличие от обычного проповедника, жрец наделён божественной магией.
Почти все народы, которые почитают божеств, живут своей жизнью, будучи никогда не затронуты божественной сущностью. Таким образом, они никогда не смогут узнать, каково это быть жрецом – тем, кто не только благочестивый священнослужитель, но и был наделен толикой силы божества.
Давний предмет дебатов: становится ли смертный жрецом в результате своей преданности богу, в результате привлекшей внимание божества? Или же само божество видит в смертном потенциал и призывает его к служению? В конечном счете, возможно, ответ не имеет значения. Однако жрецы появляются и мир нуждается в жрецах, так же как жрецы и божества нуждаются друг в друге.
---
!!Целители и воители
Божественная магия, как следует из названия, является силой богов, источающейся из них в мир. Жрецы являются проводниками этой энергии, проявляющейся в виде чудотворных эффектов. Боги не дают такую власть всем, кто обращается к ним, но только тем, кто избран выполнять высокое призвание.
Использующие божественную магию не полагаются на обучение или тренировки. Жрец может разучить шаблонные молитвы и древние ритуалы, но способность читать заклинания зависит от преданности и интуитивного ощущения воли божества.
Жрецы сочетают полезную магию исцеления и вдохновения союзников с заклинаниями, которые вредят и препятствуют врагам. Они могут вызвать страх и ужас, наложить проклятье или болезни, отравить, и даже призвать пламя с небес, чтобы уничтожить своих противников. Встретившись с грешниками, которым поможет только удар булавой по голове, жрецы полагаются на свою боевую подготовку, что позволяет им вступить в ближний бой с силами богов на своей стороне.
---
!!Божественные посредники
Не каждый послушник или священнослужитель в храме или святилище является жрецом. Некоторые проповедники призваны к простой жизни служащего в храме, выполняя волю своих богов посредством молитвы и жертв, а не с помощью магии и силы оружия. В некоторых городах духовенство занимает политические должности, или рассматривается как трамплин для более высоких должностей, и вообще не общаются с богом. Истинные жрецы — редкость в большинстве иерархий.
Если жрец обращается к жизни искателя приключений, то, как правило, из-за того, что его бог требует этого. Преследуя цели богов, часто попадаешь в опасные ситуации вне стен цивилизаций, приходится карать зло и искать святые реликвии в древних гробницах. Многие жрецы также должны защищать последователей своих божеств, что может означать сражение с неистовыми орками, ведение переговоров о мире между воюющими государствами, или закрытие портала, через который в мир может пройти князь демонов.
Большинство странствующих жрецов поддерживает некоторую связь с храмами и орденами, разделяющими их веру. Храм может попросить помощи у жреца, а высший священник вправе просто потребовать её.
---
!!Создание жреца
Если вы создаёте жреца, важно определить, какому божеству вы служите, и какие принципы воплощает ваш персонаж. Посоветуйтесь с Мастером, чтобы узнать, какие божества есть в вашей кампании.
Как только вы выбрали божество, определитесь с отношением вашего жреца с этим богом. Стали ли вы его служителем добровольно? Или бог сам выбрал вас, принуждая к служению и не считаясь с вашими пожеланиями? Как священники в храмах вашей веры воспринимают вас: как героя или нарушителя порядка? Каковы ваши конечные цели? Есть ли у вашего божества специальное поручение для вас? Или вы стремитесь доказать себе, что вы достойны великих достижений?
Если ваш персонаж жрец, то следующие разделы предлагают способы добавить некоторые детали к истории и личности этого персонажа.
---
!!!Служение пантеону, философии или силе
Обычный жрец – священнослужитель конкретного бога и выбирает Божественный Домен, связанный с этим божеством. Магия клирика от бога или божественного плана, и часто священнослужитель несет священный символ, который является проводником божественной силы.
Некоторые жрецы, особенно в мирах, подобных Эберрону, служат целому пантеону, а не одному божеству. В некоторых кампаниях жрецы могут вместо этого служить высшим силам, таким как жизнь или смерть, или философским концепциям, таким как любовь, миролюбие или одно из девяти мировоззрений.
Поговорите с вашим Мастером о божественных силах, доступных в вашей кампании, будь то боги, пантеоны, философские концепции или высшие силы. Независимо от того, кому или чему служит ваш жрец, выберите Божественный Домен, который подходит для него, и если у него нет святого символа, то придумайте его вместе с Мастером.
Классовые умения жреца часто зависят от вашего божества. Если вы посвятите себя пантеону, высшей силе или философии, ваши жреческие умения все равно работают так, как описано. Просто считайте отсылки к божеству отсылками к той сущности, которой вы служите и которая дает вам вашу магию.
---
!!!Храм
Большинство жрецов начинают свое богослужение, становясь священниками ордена, и впоследствии понимают, что они были благословлены их богом для того, чтобы стать жрецами. Чтобы подготовиться к этой новой обязанности, кандидаты обычно получают указание от жреца храма или другого места обучения, посвященного их божеству.
Некоторые храмы отрезаны от мира, так что их обитатели сосредоточиваются на религиозных обрядах, в то время как другие храмы открыты для служения и излечения страждущих. Чем отличается храм, в котором вы учились?
| !к6 |!Храм |
| 1 |Ваш храм, как говорят, является самым старым из сохранившихся строений, построенных в честь вашего бога. |
| 2 |Аколиты нескольких божеств, схожих по догматам, учились вместе в вашем храме. |
| 3 |Вы происходите из храма, который занимается пивоварением. Некоторые говорят, что вы пахнете элем из этого храма. |
| 4 |Ваш храм – это крепость и полигон, который готовит боевых священников. |
| 5 |Ваш храм – это мирное скромное место с огородами и простыми священниками. |
| 6 |Вы служили в храме на Внешних Планах. |
---
!!!Дар
Многие жрецы имеют среди личного снаряжения предметы, которые символизируют их веру, напоминают им обеты или иным образом помогающие держаться на избранном пути. Несмотря на то, что такой предмет не наполнен божественной силой, он важен для владельца из-за того, что он представляет.
| !к6 |!Дар |
| 1 |Фаланга пальца святого |
| 2 |Книга в металлическом переплете, рассказывающая, как выслеживать и уничтожать адских созданий |
| 3 |Свисток в форме свиньи, который напоминает о смиренном и всеми любимом наставнике |
| 4 |Косичка, сплетенная из волос с хвоста единорога |
| 5 |Свиток, описывающий, как наилучшим образом избавить мир от некромантов |
| 6 |Рунический камень, по слухам, благословленный вашим богом |
---
!!!Тайны
Ни один смертный не свободен от тёмных мыслей или сомнений. Даже жрецы сражаются с темными желаниями или запретными влечениями, заставляющих отвернутся от учений своего божества.
Если вы еще не рассматривали этот аспект своего персонажа, посмотрите в таблицу для примера некоторых тайн или создайте свои. Ваша глубокая, темная тайна может включать в себя, что вы делали (или делаете), или это может быть связано с тем, как вы относитесь к миру и своей роли в нем.
| !к6 |!Тайна |
| 1 |Бес даёт вам советы. Вы пытаетесь игнорировать существо, но иногда его советы полезны. |
| 2 |Вы верите, что в конечном счете боги – это ни что иное, как ультрамогущественные смертные существа. |
| 3 |Вы признаете силу богов, но вы думаете, что большинство событий происходит по чистой случайности. |
| 4 |Несмотря на то, что вы можете использовать божественную магию, вы никогда не ощущали присутствие божественной сущности внутри себя. |
| 5 |Вы страдаете от кошмаров, которые, по вашему мнению, посланы вашим богом в качестве наказания за какое-то неведомое преступление. |
| 6 |В периоды отчаяния вы чувствуете, что вы всего лишь игрушка богов, и вы презираете их отстраненность. |
[img class="centerme" [https://i.imgur.com/gvUJURM.jpg]]
<<<
Изобретатели сами выдумывают передовые проблемы, а потом пытаются решить их - громко и, частенько, с сопутствующим ущербом.
— Таша, ведьма
<<<
Мастера создания новых вещей, изобретатели используют смекалку и магию для раскрытия необычных возможностей предметов. Они рассматривают магию как сложную систему, которую нужно расшифровать, а затем использовать в своих заклинаниях и изобретениях. В следующих разделах вы найдете все необходимое для игры за одного из этих изобретателей.
Изобретатели используют различные инструменты, чтобы направить свою магическую силу. Чтобы сотворить заклинание, изобретатель может использовать алхимические принадлежности для создания мощного эликсира, каллиграфические принадлежности для начертания знака силы или инструменты ремонтника для изготовления временного талисмана. Магия изобретателей связана с их инструментами и талантами, и мало кто из персонажей может подобрать нужный инструмент для работы так же хорошо, как изобретатель.
---
!!Изобретатели во многих мирах
По всей мультивселенной D&D изобретатели создают инновационные изделия и магические предметы для войны и мира. Множество жизней было скрашено или спасено благодаря работе добрых изобретателей, но бесчисленные жизни также были потеряны из-за массового разрушения, вызванного творениями некоторых изобретателей. В Забытых Королевствах остров Лантан является домом для многих изобретателей, а в мире Саги о копье гномы-жестянщики часто являются представителями этого класса. Странные технологии Барьерных пиков в мире Серого ястреба вдохновили некоторых людей пойти по пути изобретателя, а в Мистаре различные народы нанимают изобретателей, чтобы поддерживать в рабочем состоянии дирижабли и другие чудесные устройства. Изобретатели в Городе Сигил делятся открытиями, найденными в разных уголках мультивселенной, а гном-изобретатель Ви управляет бизнесом, охватывающим весь космос, и нанимает искателей приключений для устранения проблем, которые другие считают неисправимыми. В родном мире Ви, Эберроне, магия используется как форма науки и применяется во всем обществе, в основном благодаря чудесной находчивости изобретателей.
---
!!Создание изобретателя
Создавая изобретателя, подумайте об отношениях персонажа с мастером, который обучил его своему ремеслу. Есть ли у персонажа соперник? Поговорите с вашим Мастером о роли, которую играют изобретатели в кампании, и о том, с какими организациями вы можете быть связаны.
---
!!!Магия изобретения
Будучи изобретателем, вы используете инструменты при сотворения заклинаний. Описывая свое заклинание, подумайте о том, как вы используете инструмент. Например, если вы сотворяете заклинание //лечение ран//, используя алхимические принадлежности, вы можете быстро изготовить мазь. Если вы сотворяете заклинание, используя инструменты ремонтника, у вас может получиться миниатюрный механический паук, который перевязывает раны. Эффект заклинания в любом случае будет одинаковым. Такие детали никак не ограничивают вас и не дают вам никаких преимуществ, помимо эффекта заклинания. Вам не нужно обосновывать, как вы используете инструменты для сотворения заклинания. Но творческое описание своего заклинания - это интересный способ выделиться среди других заклинателей.
<<<
I am kalashtar, born of two worlds. Over a thousand years ago, my ancestor bound her bloodline to the spirit Kashtai, and I am a child of that union. Kashtai moves within me. Her memories come to me in dreams, and at times her voice whispers in the silence of my mind. As long as at least one of my sisters is alive, Kashtai will sur vive-and as long as she lives, she will fight il-Lashtavar.
— Lakashtai, servant of the light
<<<
The kalashtar are a compound people, created from the union of humanity and renegade spirits from the plane of dreams-spirits called quori. Kalashtar are often seen as wise, spiritual people with great compassion for others. There is an unmistakable alien quality to the kalashtar, though, as they are haunted by the conflicts of their otherworldly spirits.
You were born with a bond to an otherworldly being. You have memories of a life you’ve never lived, visions of battling fiends and an endless struggle against darkness. When you sleep, you don’t dream as others do, but you often wake with a sense of purpose or new ideas. You see the pain and suffering in the world and know that there is a path to light—but there are monsters in the shadows, faceless enemies that have been hunting you since before you were born.
Will you embrace the spirit within you and make its struggle your own? Will you stand against the darkness, even if it draws the many eyes of the Dreaming Dark upon you? Or will you ignore that inner voice and try to live your own life?
---
!!!Kalashtar Origins
The quori are spirits of nightmare. But just as angels can fall, fiends can rise. Centuries ago, a handful of quori turned against il-Lashtavar, the malevolent force that dominates Dal Quor. The Dreaming Dark hunted them across the dreamscape, seeking to consume and reclaim them. In desperation, these rebel spirits reached out to Eberron, finding a haven in the minds and bodies of a group of Adaran monks. Sixty-seven spirits escaped, and the first kalashtar were born.
As a kalashtar, you’re descended from one of these monks. A quori is bound to your bloodline. It exists in the minds and dreams of all of your siblings, and as long as one of you is alive the quori is sustained. Should you all die, the spirit will be lost . . . and so, the Dreaming Dark is always happy to kill a kalashtar.
The kalashtar were born centuries ago, and have since spread out from Adar. What is your background? What has set you on the path to adventure? Are you searching for allies against the Dreaming Dark, or are you pursuing a mission of your own?
---
!!!Adaran
The kalashtar were born in Sarlona, in the distant land of Adar. Today, the Empire of Riedra dominates Sarlona, and imperial forces endlessly siege Adar. The monks and priests of Adar believe that the war against the Inspired and il-Lashtavar won’t be won with weapons; instead, prayer and guided meditation will ultimately shift the balance from darkness to light.
Adaran kalashtar rarely take direct action without reason. If you are from Adar, what caused you to leave your monastery and brave the Riedran blockades? Have the elders entrusted you with a specific mission, or has your quori spirit driven you to distant lands? The hermit background is a good way to reflect a mystic from a distant land possessing dangerous revelations.
Of all the origins mentioned here, you likely have the strongest connection to your quori spirit. Adaran kalashtar are ascetic, disciplined, and focused on the Path of Light. You were taught to inspire those who live in fear and enlighten those lost to darkness; can you reconcile this with your adventuring life? If you’ve recently arrived in Khorvaire after living your life in a monastery, you are unaccustomed to crime and greed. Is the chaos of a city like Sharn disorienting?
---
!!!Khorvairian
There are kalashtar communities in several major cities of the Five Nations, including the Overlook district in Sharn and Whitewalls in Fairhaven. Kalashtar prefer to stay close to one another, both to practice their shared traditions and to stand together against any threats posed by the Dreaming Dark. If you were raised in such a community, you’re familiar with the Path of Light and other kalashtar customs. But there’s no Riedran army at the gates; you know the Dreaming Dark is a threat, but it’s a ghost in the shadows.
Many kalashtar simply seek to spread light through their daily actions, such as showing kindness and compassion or mediating disputes. On the other hand, some of the kalashtar of Khorvaire have embraced a grim path in the battle against darkness. The Shadow Watchers don’t believe that evil can be fought merely with kindness and prayer. Members of this order seek to identify sources of corruption and to ruthlessly eliminate them. While a Shadow Watcher’s focus is on agents of the Dreaming Dark, they can pursue any force of evil, supernatural or otherwise.
As a kalashtar of Khorvaire, you could bring a compassionate approach to any background; whether you’re an acolyte of the Path of Light, a wise sage, or a lively entertainer, you do your best to help the innocent and lift spirits. Criminal and charlatan would be unusual paths, but the spy background could reflect the work of a Shadow Watcher. While you aren’t as isolated from the world as an Adaran kalashtar, you’re still guided by alien instincts and have an otherworldly demeanor.
---
!!!Orphan
Kalashtar can breed with humans and half-elves, and their children have an equal chance of being fully kalashtar or the race of the other parent. Kalashtar are quite rare; even in cities like Sharn with kalashtar communities, there are many people who will assume kalashtar are just humans with strange eyes . . . or some sort of half-elf, maybe? Maybe it’s a new fashion?
As such, there are kalashtar in Khorvaire who grew up without the guidance of a kalashtar parent. Orphans may be entirely unaware of their heritage and the nature of their quori spirit—it tries to communicate through dream-visions and instincts, but lacking any context, such orphans rarely understand their quori bond. Nonetheless, the quori is an integral part of them, urging them toward the light—and indeed, most orphans follow such a path. A kalashtar orphan who chooses a darker path is fighting the instincts imparted by their spirit. Such a kalashtar is likely to be deeply conflicted, which can manifest as unidentified stress, fits of rage, depression, or unpredictable behavior.
An orphan kalashtar can follow any path. Whether altruistic, nefarious, or somewhere in between, work with your DM to decide how you interpret the influence of your quori bond. Have you followed its guidance despite not knowing its true nature? Do you interpret it as a curse or ghost, twisting your thoughts and putting you at odds with yourself? Have you found the inner determination to suppress it entirely? Do you ultimately want to come to terms with your kalashtar nature, or do you like being an outsider and prefer to stay that way?
---
!!!The Quori Bond
As a kalashtar, you’re part of a spiritual lineage, traditionally reflected by the suffix of your name. For example, Lanhareth and Minhareth are both kalashtar of the lineage of Hareth. Your lineage is set before birth, tied to one of your parents. If you are born to kalashtar of Vaktri and Hareth, you inherit only one of the bonds, often that of the parent of your gender. Since you can’t inherit both bonds, you won’t be half Hareth and half Vaktri. Your lineage affects your appearance and personality, eye color, hair color, and other aspects. When you meet another kalashtar of your lineage, you’ll see common traits, but you’ll also feel a deeper connection; in some ways, you’re one person.
The quori bond exists on a deep level. Your quori doesn’t hover over your shoulder or whisper in your ear. Instead, it exists in the collective subconscious of all kalashtar of your lineage, shaping and guiding you all. You feel it as instinct, in memories of things you’ve never done—visions of a war in the realm of dreams. When you sleep, you don’t dream, but the bond grows stronger. Your quori may even give visions to guide you. With time and training, you can strengthen this connection, learning to hear its psychic voice more clearly. Ultimately, it’s up to you how you roleplay your connection. While the quori isn’t an active presence that responds in conversation, some kalashtar do speak to it as if it was, talking with the quori as a way of processing their own thoughts. Others take comfort in its subconscious presence, confident it is with them at all times. And some—notably orphans—refuse to acknowledge it, determined to see their mind as their own.
In creating a kalashtar character, it’s important to consider what type of quori you’re bound to. You can develop this through roleplaying, but it can also be reflected by your choice of class and by your abilities or spells. Each quori has a connection to a particular emotion. Fiendish quori feed on this emotion, using it to manipulate mortals. In your case, it could be that you understand how to generate that emotion in others, or that you yourself experience that emotion in a deep and powerful way. Or it could be that you have learned how to suppress that emotion, and that is the source of your strength. Whatever choice you make, it will be reflected throughout your lineage. If you decide that Vaktri is a du’ulora quori and that you draw on his burning fury to produce your own barbarian rage, then other Vaktri kalashtar you meet may also be barbarians or furious warriors.
The bond to the spirit can cause some kalashtar to display unusual quirks. Consider rolling or selecting a trait from the Kalashtar Quirks table.
| !к10 |!Причуда |
| 1 |You try to understand the motives and feelings of your enemies. |
| 2 |You prefer using telepathy over speaking aloud. |
| 3 |You feel a strong drive to protect the innocent. |
| 4 |You apply dream logic to mundane situations. |
| 5 |You discuss things out loud with your quori spirit. |
| 6 |You suppress your emotions and rely on logic. |
| 7 |You are strongly influenced by the emotions of those around you. |
| 8 |You prefer to find nonviolent solutions to problems whenever possible. |
| 9 |You are driven by a warrior spirit and will fight for any noble cause. |
| 10 |You are obsessed with Dreaming Dark conspiracies. |
The three quori presented in //Eberron: Rising from the Last War// are described below, along with another fourth common quori, the du’ulora. If you want to develop a kalashtar from another quori lineage, discuss it with your DM.
''Du’ulora ''
The fiendish du’ulora are spirits of rage and aggression. In Dal Quor, they craft dreams that drive feuds and vendettas, spurring mortals to violence and vengeance. Your du’ulora spirit has turned against the darkness, but fury remains its domain and anger is your birthright. How do you express this? As a bard, you might specialize in taunting enemies, turning their anger against them and driving them to rash action. As a barbarian, you could say that your spirit is the source of your rage. As a paladin, you might channel its fury when you smite your foes. You might be calm and serene most of the time, expressing sudden powerful moments of rage when you draw on your bond.
The key thing to remember is that your du’ulora has chosen the path of light, even if it is a spirit of rage. You may revel in moments when you get to unleash your anger on your enemies, but it still drives you to fight for a noble cause. Your fury is a tool, and you should never let it drag you into darkness.
''Hashalaq''
The hashalaq are seducers and deceivers, feeding on doubt and desire. They are the spies and loremasters of the quori. Hashalaq kalashtar make excellent bards; the College of Lore reflects both your love of knowledge and your ability to confuse your foes. Hashalaq make excellent warlocks, with your spirit granting the Beguiling Influence invocation and allowing you to charm your enemies. As a hashalaq kalashtar, consider whether you specialize in deception, or choose to be honest and focus on your ability to inspire positive emotion—do you prefer cunning Deception or empathic Persuasion? Hashalaq clerics typically follow this latter path, using their knowledge to guide allies and cut through the deception that comes so naturally to their kind.
''Kalaraq''
The kalaraq are spirits of pride and ambition. The natural leaders of the quori, they dominate through sheer charisma and force of will. As a kalaraq kalashtar, you surely have your own grand ambitions. You excel at inspiring others to follow you and you won’t hesitate to take bold action. You might lead in the vanguard as a paladin, or strengthen your allies as a cleric, or bend enemies to your will as a bard of the College of Glamour. The kalaraq are also known as the eyebinders, capable of consuming and binding weak souls; you could be a warlock or wizard who specializes in summoning or binding spirits.
The kalaraq are the rarest and most powerful of the quori. The kalaraq Taratai was the leader of the rebels, and hers is the only spiritual lineage that has been completely destroyed by Dreaming Dark; Taratai’s own fate is unknown. There are only a couple remaining kalaraq lines, and as a kalaraq kalashtar, others may look to you for bold leadership and guidance.
''Tsucora ''
The tsucora feed on terror and craft the most classic nightmares. As a tsucora kalashtar, you have a deep understanding of fear. This is an excellent foundation for a bard of the College of Whispers or a Living Weapon monk, sowing fear with a word or a touch. Likewise, you could be a Great Old One warlock tormenting your enemies with fear and dissonant whispers. On the other hand, you could take the path of an inspiring cleric who bolsters your allies against fear, using your knowledge of it to strengthen their resolve. Tsucora kalashtar often seem cold and intimidating, but despite your knowledge of nightmares, you are still looking toward the light.
---
!!!Creating a Lineage
Once you’ve chosen a quori spirit, next define your lineage, considering the traits you might share with other kalashtar bound to that same quori line. Here are two examples.
''Lurashtai'' began her existence as a tsucora quori. She wove dreams of gothic horror, playing on her victims’ fears of death and the undead. Raised on these morbid memories, the kalashtar of her line are comfortable with tragedy, have no fear of death, and see beauty in things that others find disturbing or terrifying. As a spirit of light, Lurashtai has taken an interest in the undead; she fears that by being trapped outside the cycle of life and dream, the undead weaken the shared soul of the age. As a result, the kalashtar of her line are often driven to hunt undead and lay their spirits to rest. Lurashtai kalashtar usually have pale complexions, sharp features, and silky, dark hair; they generally favor the color red in their clothing.
''Aveth'', a hashalaq quori, wielded the twin weapons of manipulation and insight before his exodus from Dal Quor. He takes great interest in the potential that mortals hold to choose a nobler path, much as he and his kind fled Darkness in search of Light. The kalashtar of Aveth’s line prefer following their intuition over the careful planning of others. They have great confidence in their ability to win over potential foes, turning them into friends, which can yield unexpected allies—or the untimely death of the too-optimistic kalashtar. Aveth kalashtar usually have dark skin, black hair, a preference for blue and aquamarine, and a distinct dislike of peanuts.
---
!!!Psychic Power
Kalashtar are known for their psychic gifts, but aside from their Mind Link, how does this manifest in a kalashtar character? In fifth edition, how do they wield mental power? In addition, characters carry an innate sense of mental discipline—a kalashtar monk could consider ki as a representation of psionic ability, and the Living Weapon monastic tradition builds on this. But you can also change the flavor of a class without altering the mechanics. Consider the following ideas.
''Bards ''
Many kalashtar seek to fight evil through inspiration, and the bard can be an excellent foundation for this. While Bardic Inspiration is described as “stirring words or music,” you can describe your actions as being tied to psychic gifts; instead of a mystical song, you could describe your inspiration as a word backed by a surge of psychic energy. When you use the Words of Terror of the College of Whispers or the Cutting Words of the College of Lore, this could easily reflect your powers of psychic manipulation. Likewise, your spellcasting is mechanically magic; it can be counterspelled, it won’t work in an //antimagic field//, and so on. But you can easily describe //vicious mockery// or //crown of madness// as psychic attacks, or present //cure wounds// as a psychometabolic effect, using your mind to knit together the wounds of another. You gain no mechanical advantage from this—in the case of Bardic Inspiration, your target still has to be able to hear you, even if you’re using psychic power—but there’s nothing preventing you from presenting your bard as being psychically gifted as opposed to singing magic songs.
''Clerics and Paladins ''
Most kalashtar are devoted to the Path of Light, and though its faithful worship no gods, the faith itself can be a source of divine magic. Priests of the Path of Light say that the faithful are inspired by il-Yannah—the great light that will one day rise to replace the Dreaming Dark—but their power comes from within. As such, both cleric and paladin are logical paths for a kalashtar, and you can add psychic flavor to your spells as described with the bard above. When you cast //command//, you aren’t demanding your victim bow to il-Yannah; instead, il-Yannah is strengthening your mind and allowing you to impose your will on the target. Effects such as //bless// could reflect your ongoing psychic guidance, while //cure wounds// and similar spells could be psychometabolic. Your faith helps you focus your mind, but it’s your mind that generates the power. If you want to take this farther, the Mind domain allows you to replace radiant damage with psychic damage; thus, you can flavor your //sacred flame// as a psionic blast instead of holy fire.
This same concept can work for a Divine Soul sorcerer. You don’t use the trappings of a priest, but your visions of il-Yannah have allowed you to focus your mind and alter reality. You can select spells that feel like they could be psychic powers; when you cast mage hand, it can be flavored as an act of telekinesis.
''Warlocks''
You can simply describe your warlock spells as being drawn from psychic power as opposed to arcane invocations. Your patron is your quori spirit. As a warlock, you might have an especially strong bond to this spirit and receive clearer visions than most kalashtar of your lineage; traditionally, kalashtar with such a strong connection are called atavists. The Great Old One is an easy choice, as many of its spells reflect mental manipulation; you can describe //Evard’s black tentacles// as ectoplasmic projections, or //armor of Agathys// as a blend of telekinetic force and cryokinesis. The Awakened Mind feature soon becomes obsolete due to Mind Link; a DM could choose to combine the two, increasing the range of a kalashtar warlock’s Mind Link feature by 30 feet. The Celestial patron is another logical choice, focusing on your quori as a spirit of light. As a Hexblade or any warlock using the Pact of the Blade, you can describe your weapon as being forged from nightmares.
If you want to add more psionic flavor to your warlock, your DM might allow you to shift the damage type of a few of your spells; could eldritch blast inflict psychic damage? And even with default rules, you can roleplay it as a burst of telekinetic force.
---
!!!Kalashtar Names
A kalashtar name adds a personal prefix to the name of the quori spirit within the kalashtar. Such names have no relation to the kalashtar's gender.
Kalashtar orphans are unlikely to know the name of their spirit and take names from another source.
''Quori Names:'' Ashana, Ashtai, Ishara, Hareth, Khad, Kosh, Melk, Nari, Tana, Tari, Tash, Ulad, Vakri, Vash
''Kalashtar Names:'' Coratash, Dalavash, Dolishara, Ha lakosh, Khoratari, Koratana, Lanhareth, Molavakri, Nevitash, Sorashana, Torashtai, Valakhad, Vishara
<<<
Карта, которую мы нашли, показала вход в тайник с сокровищами короля–священника прямо в середине разрушенной части города. Мы без проблем приближались к нашей цели, но, когда мы достигли сгоревшего здания, внезапная какофония зазвучала вокруг нас. Птичий крик, кошачье шипение, собачий лай. Лидда погнала нас назад, к более безопасным улицам города. Только когда мы вернулись в районы, патрулируемые стражей, она объяснила, что шум означал, что бескрылый народ занял этот район, и что нарушение границы повлечет смерть.
– Гимбл, //Заметки Охотника за Сокровищами//
<<<
Преследуемые древним преступлением, которое лишило их крыльев, кенку блуждают по миру как бродяги и грабители, живущие на отшибе человеческого общества. Кенку имеют зловещую репутацию, которая не совсем уж незаслуженна, но они могут оказаться ценными союзниками.
---
!!!Древнее проклятие
Кенку однажды служили таинственной, могущественной сущности на другом плане существования. Некоторые полагают, что они были приспешниками Граз’зта, другие говорят, что они были разведчиками и исследователями Герцогов Ветра Аакуы. В любом случае, согласно легенде, кенку предали своего повелителя. Не сумев противиться соблазну красивого сверкающего сокровища, кенку спланировали украсть предмет и сбежать на Материальный План.
К сожалению для кенку, их повелитель раскрыл их план прежде, чем они смогли его осуществить. В ярости, эта сущность наложила на них три ужасных проклятия. Во–первых, любимые крылья кенку иссохли и отвалились, оставив их привязанными к земле. Во–вторых, за то, что их изобретательность и умения обернулись интригами против их покровителя, из их душ была вырвана искра творческого потенциала. И наконец, чтобы гарантировать, что кенку никогда не смогут выдать его тайны, их повелитель лишил их голоса. Как только эта сущность удовлетворилась наказанием, кенку были отпущены на Материальный план.
С тех пор кенку блуждают по миру. Они обосновываются в местах, которые принимают их, обычно мрачные города, которые переживают тяжелое время и наводнены преступностью.
---
!!!Мечты о полёте
Больше чем что либо, кенку хотят вернуть свою способность летать. Каждый кенку рождается с желанием подняться в воздух, и те, кто изучает колдовство, делают это в надежде овладеть заклинаниями, которые позволят им лететь. Слухи о магических предметах, таких как ковры–самолеты, метлы, способные летать, и аналогичных предметах, пробуждают у кенку большое желание приобрести их себе.
Несмотря на отсутствие крыльев, кенку любят жить в башнях и других высоких строениях. Они ищут руины, которые простираются к небу, хотя им нехватает мотивации и креативности, чтобы сделать в них ремонт или укрепить их. Даже в этом случае, их легкий вес и размер позволяют им жить в хрупких строениях, которые обрушились бы под человеком или тем более орком.
Некоторые гильдии воров используют кенку как наблюдателей и посыльных. Кенку живут в самых высоких зданиях и башнях, контролируемых гильдией, что позволяет им, прячась на верхних уровнях, наблюдать за городом.
---
!!!Безнадежные плагиаторы
В результате отсутствия у них творческого потенциала, кенку комфортнее быть прислужниками могущественного руководителя. Лидеры стай поддерживают дисциплину и минимизируют конфликты, но они не способны эффективно планировать или составлять долгосрочные планы.
Хотя они неспособны говорить своим собственным голосом, кенку отлично могут подражать любому звуку, который они слышат, от голоса халфлинга до шума камней, падающих вниз по склону. Однако, кенку не может создать новые звуки и может общаться только используя звуки, которые он уже слышал. Большинство кенку использует смесь из подслушанных фраз и звуковых эффектов, чтобы передать свои идеи и мысли.
К тому же, кенку неспособны придумывать новые идеи или создавать новые вещи. Кенку может скопировать существующий предмет с исключительным умением, что позволяет им стать превосходными ремесленниками и писцами. Они могут копировать книги, делать точные копии предметов, и преуспевать на других должностях, где от них требуется создавать большое количество одинаковых предметов. Немногие кенку находят удовлетворение в такой работе, так как их поиск свободного полета делает их малопригодными для занятий рутиной.
---
!!!Идеальные прислужники
Кенку собираются в группы, называемые стаями. Стаю возглавляет самый старый и самый опытный кенку с самым широким запасом знаний из которого можно черпать информацию, часто называемый Мастером.
Хотя кенку не может создать новую вещь, у них есть талант к изучению и запоминанию подробностей. Таким образом, амбициозный кенку может отличится как превосходный шпион и разведчик. Кенку, который знает хитрые схемы и планы, разработанные другими существами, может их использовать. У кенку отсутствует способность импровизировать или изменять план, но мудрый Мастер приводит в исполнение одновременно несколько планов, уверенный, что подчиненные будут в точности следовать приказам.
Поэтому многие кенку живут немудрёной жизнью, служа посыльными, шпионами, и наблюдателями для гильдий воров, бандитов и других преступных картелей. Сеть кенку может передать птичий щебет или подобный шум через город, предупреждая союзников о подходе патруля стражи или сообщая о наилучшей возможности для грабежа.
Так как кенку может точно воспроизвести любой звук, сообщения, которые они передают, редко меняются или теряют смысл. Посыльные–люди могли бы изменить слова или фразы и нечаянно исказить сообщение, но кенку с точностью воспроизводят то, что они слышали.
---
!!!Искатели приключений кенку
Приключенец кенку – это обычно оставшийся в живых из стаи, которая понесла тяжелые потери, или редкий кенку, которому надоела жизнь преступника. Такие кенку более амбициозны и смелы, чем их товарищи. Другие начинают самостоятельные исследования тайн полета, овладевая магией, или пытаются раскрыть тайну своего проклятия и найти способ снять его.
У приключенцев кенку, несмотря на их относительную независимость, все еще есть склонность искать компаньона, чтобы подражать ему и следовать за ним. Кенку любят подражать голосу и словам своего компаньона.
---
!!!Имена кенку
Учитывая, что кенку может копировать любой звук, их имена состоят из поразительного разнообразия звуков и шумов. Имена кенку в основном делятся на три нижеследующие категории, мужские и женские имена не отличаются.
Кенку головорезы, воины и бандиты используют как имя звук, издаваемый оружием, таким как лязг булавы о броню или звук ломающейся кости. Не–кенку обращаются к кенку, описывая этот звук. Примеры этого типа имен: Разбиватель, Лязгун, Разрезатель, и Грохотун.
Воры, мошенники и грабители кенку используют как имя крики животных, обычных для города. Таким образом кенку могут обращаться друг к другу, в то время как те, кто слышит их, принимают их за обыкновенных животных.
Не–кенку используют имена, которые относятся к издаваемому звуку или к животному, которому кенку подражает, такие как: Крысиный Скрежет, Свистун, Мышатник и Рычун.
Некоторые кенку отворачиваются от преступности, чтобы вести законные дела. Эти кенку используют как имя звуки, издаваемые при их ремесле. Моряк повторяет звук трепещущего паруса, в то время как кузнец подражает лязгу молотка о металл. Не–кенку дают им имена по ремесленным звукам, такие как Хлопок Паруса, Молоточник и Резатель.
---
!!!Отыгрыш кенку
Если Вы играете кенку, постоянные попытки подражать шумам могут приводить к путанице или раздражать вместо того чтобы вызывать интерес. Вы можете просто описать звуки, которые издает ваш персонаж и что он имеет в виду. Поясните намерения своего персонажа, если вы не стремитесь сознательно к недопониманию или таинственности.
Вы можете сказать, «Щелкун издает звук молотка медленно и ритмично постукивающего по камню, чтобы показать, насколько ему скучно. Он играет со своим кинжалом и изучает агента Альянса Лордов, сидящего в баре.» Создание вокабуляра шумов, которые другие игроки должны будут расшифровать, может показаться веселой идеей, но на самом деле это может сильно отвлекать и замедлять игру.
<<<
Кобольды становятся гораздо менее симпатичными, когда обучаются метать огненные шары.
– Воло, //Справочник Воло по монстрам//
<<<
Кобольды часто описываются как трусливые, глупые и слабые, но эти мелкие рептилоиды на самом деле обладают развитой общественной системой, основывающейся на преданности племени; они умелые ремесленники и ожесточено работают сообща, чтобы преодолеть свои физические ограничения.
В мечтах, кобольды представляют мир, в котором другие существа оставили их в покое, позволив спокойно рыть туннели и воспитывать следующее поколение, в надежде обнаружить магию, что поможет освободить их бога. В реальном же мире, кобольдов часто задирают и уводят в рабство более сильные существа. Живя на свободе, они постоянно испытывают страх перед вторжением и завоеванием. По отдельности кобольды пугливы и избегают сражений, но, если вы загоните его в угол или ему придется защищать свое гнездо – берегитесь. Кобольды печально известны своими импровизированными ловушками, которые они устанавливают для защиты своих нор.
---
!!!Искусные туннелепроходцы
От природы кобольды искусны в прокладке туннелей. Как и дварфы, они обладают врожденным чувством камня, определяя какие части породы слабые или сильные, какие из них можно подвергнуть нагрузке или раскопать, где находятся залежи минералов или подземные источники воды. Такие способности позволяют им создавать надежные жилища там, где другие существа не смогут почувствовать себя в безопасности.
Пусть остальные гуманоидные расы могут сказать мало хорошего о кобольдах, но все они отмечают потрясающее качество работы маленьких рептилий в прокладке туннелей при использовании столь примитивных инструментов. Часто кобольдов, захваченных в рабство более могущественными созданиями, заставляют расширять жизненное пространство хозяйского убежища и обеспечить охрану жизненно важных областей с помощью ловушек и других видов защиты.
Некоторые сообщества людей нанимают кобольдов для прокладки канализационных туннелей, оплачивая их труд едой и инструментами, доступа к которым у кобольдов нет. При должном обращении и отсутствия излишнего внимания со стороны людей, они усердно работают, прокладывая сеть туннелей под улицами, соединяя их с ближайшим водоемом, таким образом улучшив санитарные условия в городе. В случае, если кобольдом понравится местность, а обращение со стороны людей не будет жестоким, они могут остаться, обзаведясь постоянным домом, работая над расширением канализационных сетей растущего сообщества. Так называемые «городские кобольды» живут исключительно под землей, время от времени совершая ночные вылазки на поверхность. Примерно под четвертью всех городов мира проживают городские кобольды, однако, большинство из живущих на поверхности людей даже не подозревают о своих скрытных соседях, живущих внизу.
---
!!!Опытные мусорщики
Кобольды являются экспертами в обнаружении поломанных, потерянных, бракованных или брошенных вещей других существ, которые всё еще можно использовать. Они предпочитают собирать явно давно оставленные или выброшенные вещи, исчезновение которых не привлечет чужое внимание. В то же время, они совсем не испытывают стыда, пытаясь стянуть вещи, принадлежащие другим, так как такие вещицы находятся в более хорошем состоянии, а потому обычно более полезны или ценны.
Собираясь на воровскую миссию, кобольды пытаются остаться незамеченными, не дав повода владельцу предмета причинить им вред. Например, группа городских кобольдов может скрытно проникнуть в дом сапожника ночью, забирая ножи, обрывки кожи, гвозди и другие полезные вещи, но, если появится минимальный риск быть обнаруженными, они стремглав убегут, не пытаясь напасть на кого–то в доме. Убегая до того, как их увидят и опознают, они избегают навлечь гнев городских жителей на свое племя.
Конечно, существуют и более агрессивные особи, и племена, но в целом кобольды никогда специально не провоцируют ответное нападение существ, у которых они обычно воруют. Лучше быть осторожным и осмотрительным, чем быть объявленным опасностью и угрозой.
---
!!!Драконьи слуги
Кобольды верят, что были созданы из крови драконов богиней Тиамат, что объясняет их рептилиеподобный (или как они скажут драконоподобный) внешний вид. В каждом племени кобольдов легенда об их происхождении передается от стариков к детям, прививая каждому по отдельности и всему поколению гордость и самоуважение. Пусть кобольды и предпочитают бежать, а не драться, бросая имущество и часто оказываясь под гнетом более сильных гуманоидов, но они знают, что внутри них живет величие, и гордятся, что они избраны быть кровными родственниками драконов.
Кобольды с готовностью служат хроматическим драконам и поклоняются им как полубогам, несущим божественную искру. Это не обычный вид поклонения или богослужения. Кобольды благоговеют в присутствии дракона, как будто настоящий божественный аватар почтил их своим появлением. Кобольды из кожи вон лезут, чтобы исполнить любые приказы дракона, даже если эти приказы опасны. Хотя кобольды и не поклоняются Тиамат на прямую, они признают ее богиней всех цветных драконов, а также повелительницей их расового бога, Куртулмака.
---
!!!Жизнь и мировоззрение
Кобольды живут племенным строем, где у каждого – своя роль в защите и выживании сообщества. Сильнейшие кобольды становятся воинами и охотниками, умнейшие – ремесленниками и стратегами, самые стойкие идут в шахты или занимаются дрессировкой, и т.д. Даже глупый и слабый кобольд приносит пользу племени, занимаясь сбором грибов или присмотром за молодняком, тем самым заботясь о выживании группы.
Кобольды ощущают прохладную близость или нечто вроде родства с другими членами своего племени, при этом они редко бывают мягки в обращении друг с другом. Пара кобольдов может считать себя друзьями или врагами по прошествии десятилетия общения, но глубина этих чувств не идет ни в какое сравнение с людскими эмоциями. Благодаря тому, что большую часть своего времени они проводят в работе, спорящие кобольды редко получают возможность обменяться оскорблениями, не говоря уже о том, чтобы подраться из–за разногласий.
Кобольды выбирают пару исходя из удобства. Отсутствие у них эмоциональной привязанности приводит к отсутствию такого понятия как брак или постоянные семейные отношения. Они откладывают яйца в общеплеменном инкубаторе без возможности для вылупившегося молодняка отследить своих родителей.
Так как яйца не требуют особой заботы, женские особи кобольдов также участвуют в сражениях и работах. Более того, в процессе жизни кобольды могут медленно сменить свой пол. Если большая часть мужчин или женщин племени была убита, оставшиеся в живых смогут изменить соотношение полов в течении нескольких месяцев, пока сообщество вновь не станет сбалансированным. Благодаря этому, племя может быстро восполнить потери при наличии всего нескольких выживших. Исходя из этих предпосылок, у кобольдов нет гендерной роли среди молодежи и взрослых. Вождь, чародей, шахтер или ремесленник могут быть как мужчиной, так и женщиной.
---
!!!Быстро вырос, рано умер
Кобольды вырастают и созревают намного быстрее чем другие представители гуманоидных рас. В возрасте 6 лет кобольд считается взрослым. Большинство становится жертвами болезней, жестокости, несчастных случаев до достижения 20 лет, но потенциально кобольды могут прожить до 120 лет. Такая длительность жизни является проявлением отдаленного родства с драконами. Самка может отложить до 6 яиц в год, каждое из которых вылупится через два–три месяца.
Кобольды не проводят похоронных церемоний. Мертвое тело сжигают или уничтожают каким–либо другим способом (или, если в племени практикуют каннибализм, съедают). Кобольды верят, что, погибнув служа племени, будут мгновенно возвращены к жизни Куртулмаком, появившись из яиц последней кладки в инкубаторе. В случае смерти особо важного или уважаемого члена племени, за инкубатором начинают пристально наблюдать. Как только будет отложено новое яйцо, его отделяют от остальных и ревностно оберегают. Появившийся из такого яйца кобольд будет воспитан, чтобы занять важную роль.
---
!!!Отыгрыш кобольда
Кобольд прекрасно осознаёт свою слабость перед враждебным миром. Он знает, что мал, и более сильные существа будут использовать его; скорее всего он погибнет в юном возрасте, а жизнь будет полна тяжелого труда. Пусть такие перспективы выглядят мрачновато, кобольды находят отдушину в работе, делах на пользу племени и знании о своем великом драконьем наследии.
Кобольды не особенно умны, но и не так тупы, как орки. Многие могут обмануть кобольда сладкими речами и остротой ума, но как только он поймет, что его провели, он запомнит это. Если у него будет возможность когда–нибудь отплатить своему обидчику, он обязательно ей воспользуется, даже если это будет мелкой пакостью.
Кобольд не любить чувствовать себя одиноким или загнанным в угол. Он всегда хочет иметь путь для безопасного отступления или хотя бы союзника, что повысит его шансы. Без этого кобольд начнет нервничать, он будет то истерить, то погружаться в полное безмолвие.
---
!!!Имена кобольдов
Имена кобольдов являются производными от Драконьего языка и часто обозначают характерную черту, такую как цвет чешуи, особенности строения тела, привычки. Например: «Красная нога», «Белый клык» или «Спринтер». Так звучат на Общем перевод часто встречающихся имен. Кобольд может сменить имя, когда станет взрослым, или добавить дополнительный слог после важных событий, таких как первая охота, первая кладка или выживание в первой битве.
''Имена кобольдов:'' Арикс, Варн, Галакс, Гару, Иртос, Кашак, Миипо, Моло, Ососс, Ротом, Сагин, Сик, Снив, Таклак, Тес, Урак, Хагнар, Хокс, Экс, Этт
---
!!!Внешнее разнообразие
Кобольды имеют большое разнообразие в цветах и узорах своей чешуи. Хотя люди с трудом различают двух выглядящих похоже кобольдов, сами рептилоиды легко различают друг друга.
Большая часть кобольдов одного племени имеет похожий окрас. Например, представители племени Меднозубых в большинстве своем серые в красную полоску. Два племени, которые сливаются, в итоге скрещиваются достаточно, чтобы создать новый фенотип, несмотря на то, что случайные аномальные отклонения и атавизмы приводят к появлению представителей с окрасом одного из исходных племен.
---
!!!Больше о кобольдах
Справочник Воло по монстрам, Глава 1: Происхождение монстров, Кобольды: Малые драконы, с. 62
<<<
"Pierce was built by deisgn, while you were built by accident," Lakashtai said. "The soul is what matters, not the shape of the vessel."
"What makes you think he has a soul?" Gerrion said.
"What makes you think you do?"
— Keith Baker, //The Shattered Land//
<<<
As a warforged, your body was made in a Cannith forgehold. The creation forge wove rootlike muscles across a frame of metal and darkwood, bathing your body in alchemical fluids, giving you skin of steel or hardened leather. And then the miracle occurred: you came to life. You are made from wood and steel, but you are alive, aware, capable of feeling love and anger. You were born with an innate sense of your purpose, the knowledge of war burned into the back of your mind. But you aren’t bound to follow the path that your creators planned for you. You have freedom. You have the ability to learn. Perhaps you even have a soul.
As a warforged, you were created for a reason—what was it? How did you find a new purpose and become an adventurer? What do you want from life now? Are you concerned about the fate of the warforged as a species, or do you feel more of a kinship with your adventuring companions than you do with other warforged?
---
!!!Origin and Purpose
The first warforged were built for battle. As Cannith refined its techniques, what started as simple infantry gave way to more sophisticated designs: lithe scouts with mithral plating, powerful juggernauts, even “living wands” wielding the power of sorcerers. As people grew more accustomed to these living constructs, Cannith began designing civilian warforged with a wide array of talents.
As a warforged, you have the ability to learn, and your background and class features could reflect this. If you’re a warforged bard, were you built to entertain, or were you created as a simple laborer only to discover remarkable talent within yourself? If you’re a sorcerer, were you designed to channel arcane power, or is it an unexpected development? Determine your original purpose from the options below, then consider how it relates to who you are today.
''Battlefield ''
Like most warforged, you were designed to serve in the Last War. You didn’t choose your side; you were sold to one of the Five Nations and set to work. You weren’t taught to question this role—war was the only purpose you knew. Some warforged came to feel a patriotic attachment to the nation they served, despising the enemies they fought. Others felt a close bond to the officers and soldiers they served with, fighting for this “family” rather than for a nation. How about you? Which nation did you fight for? Do you consider yourself to be a Thrane or a Cyran, or do you have no love for the nation that bought you and threw you on the front lines?
Warforged were in service for the last three decades of the war. How long did you serve? What was your most dramatic experience? Did combat leave you with lasting scars or damage, even if they have no mechanical effect on your character?
For many warforged, class abilities reflect the role you played on the battlefield. As a fighter, you likely fought in the vanguard. As a ranger or rogue, you may have been designed as a scout. A barbarian’s rage could reflect a “battle mode”— you don’t actually get angry, but you temporarily increase your damage output and resistance. Class abilities gained over time could reflect an evolution of that design as you unlock your full potential—is this true for you, or are you developing unexpected talents?
''Civilian ''
In the last decade of the Last War, Cannith began selling warforged to civilian organizations. This wasn’t a common thing; a farmer couldn’t just go to the shop and take a warforged home. But you could have served a dragonmarked house, been a bodyguard or a tutor for a noble family, or even been designed to serve as an enforcer for a criminal organization. This path provides a wide range of possible backgrounds and unusual stories. If you take the noble background, that doesn’t mean you hold noble rank yourself—you could be a trusted bodyguard who’s still treated as a member of the household. Perhaps a noble has made you their heir; such a thing would be unprecedented, but it would be an interesting story! With the folk hero background, you could have served as the protector of a particular village, with the story of your brave deeds spreading far and wide.
As a civilian warforged, does your class reflect your original purpose, or have you risen beyond that? For example, you could take the sage background to reflect that you were designed to be a tutor or a researcher. You weren’t built to be a wizard—but over the course of your career, you began to master the arcane, far exceeding the expectations of your creators.
Warforged who served on the battlefield are forced to find a new life, because there is no war. As you weren’t made for war, did the end of the war have a dramatic impact on you? The Treaty of Thronehold released you from any form of indenture, but do you still feel an attachment to your family or village? Did you ever have a sense of loyalty to a nation, or has your worldview always been shaped by the people you worked with?
''Specialized or Unique ''
Battlefield warforged were largely mass produced. But there were many small runs of experimental warforged using specialized designs or experimental techniques. Perhaps your warforged rogue was part of a secret unit of assassins that were never deployed; how many others were in the unit, and what’s become of them? As a warforged entertainer, were you built to be a superstar—and if so, how does House Phiarlan feel about that? As a druid, have you found a bond to the natural world within, or did an eccentric artificer design you with the potential to change shape and bond with natural creatures?
In developing an exotic warforged, talk with your DM to develop details about your creator and your purpose. Are you one of a kind or part of a small run? Do you know who built you and why, or is your true purpose a mystery even to you?
---
!!!Mind and Body
Cannith artificers designed your body and made you for a purpose. When the creation forge imbued you with life, there were things you knew. If you were built to be a warrior, you knew how to wield a sword and pike. You had an instinctive sense of squad tactics. There were things Cannith instructors had to teach you, but even there, it felt almost as if they were reminding you of things you already knew.
This is one of the mysteries of the warforged. Where does your sentience come from? Cannith gave direction, but they didn’t design your mind; if they could, they’d have made you without emotion, and likely without the capacity for true independence. Many arcane scholars theorize that the creation forges don’t create the warforged mind, but rather summon it. Some believe that the warforged soul is drawn from the planes, that a warforged soldier is infused with the essence of Shavarath. Others suggest that the creation forges could be recycling husks from Dolurrh . . . perhaps the reason you sometimes feel that you’re remembering new skills is because you possessed those skills in a former life.
Regardless, your Cannith instructors taught you to focus solely on the purpose they gave you. They trained you to suppress emotions, to be a weapon or a tool. Now you are free, able to explore your full potential. What does this mean for you? You can feel a full range of emotions, but do you? Or are you mystified by anger and love? What do you actually care about? Do you feel loyalty to a particular person? To a nation? To the future of the warforged race? Some warforged revel in the ability to choose a new path; others hold fast to their original purpose, and just want a reason to put those skills to work.
''Evolution ''
Warforged aren’t machines; they’re living, magical beings, and can evolve both physically and mentally. Just as you can learn new skills, your body can transform over time. This is one way to reflect class benefits; can you think of a way that your body could physically change to account for a new ability? If you gain the Defense Fighting Style, that might reflect your natural armor becoming thicker. If you’re a warforged sorcerer, the ability to cast new spells could be reflected by arcane sigils appearing on your body, or by growing crystals that project light or energy. Never forget that you’re the product of magic as well as science. You may be made of metal and leather, but you’re also alive.
''Integrated Protection ''
As a warforged, your armor is a part of you. Your skin is metal or leather, physically bonded to the rootlike tendrils that serve as your muscles. While it is possible for you to change your armor, very few warforged actually ever do this. The process is similar to a human peeling off their skin; while it’s not dangerous for the warforged, it’s a disturbing and uncomfortable experience. As an adventuring warforged, it’s an important ability to have, as it allows you to improve your defense and to make use of magical armor. But be aware of the weight of what you’re doing when you exchange your armor.
Once you have integrated a suit of armor, it cannot be removed against your will. However, you are still considered to be wearing armor for purposes of the Defense Fighting Style or other feats and benefits that relate to armor. Likewise, integrated armor can be targeted by magical effects.
''Integrated Tools ''
Just as a warforged can bond to armor or weapons, it’s possible to attach a tool to its body. There are two ways to do this. The first is to acquire an //integrated tool//. This is a common magic item that requires attunement; through attuning the tool, you bond it to your body.
Unlike an //armblade//, an //integrated tool// represents more than just having a hammer attached to your hand. Most tools don’t represent one single object, but rather, a range of smaller items. How does this manifest with you? If you have a set of integrated thieves’ tools, do you use your fingers as lockpicks? Or do you draw the various tools you need out of compartments in your forearm? If you have an integrated instrument, is it built into your arm or your torso? Whatever you decide, remember that you have to have a hand free in order to make use of an //integrated too//l. You can say that your bagpipes are built into your chest, but you still need a free hand to play them.
An //integrated tool// can be an interesting part of a character concept that reflects the purpose a warforged was built for. A warforged outlander could have a set of cartographer’s tools built into her body; she was designed to explore, using her integrated tools and innate sense of direction to constantly update her maps. A warforged entertainer with an integrated flute is a compelling image. In both cases, it’s not that the warforged acquires the tool, but rather, it was part of their original design. If you have an interesting origin story, you can see if your DM will allow you to take a tool you possess at character generation as an //integrated tool//. If not, //integrated tools// are common magic items and can be easily acquired over the course of your adventures.
---
!!!Warforged Concepts
When creating a warforged character, a simple place to start is to ask: What did you do during the war? How have you changed since it ended? Did you choose the path you’re on, or were you designed for it? The Living Weapon monk could be a warforged whose abilities reflect physical evolution combined with martial discipline. The Circle of the Forged is a druid path that lets you explore your connection to the natural world while remaining a creature of wood and stone. Here are a few other unusual concepts.
''The Divine Tool ''
You were made by human hands. There are many who believe that you have no soul, that you’re just a tool. What would draw you to a religion and imbue you with the faith required to channel divine magic? If you’re creating a warforged paladin or cleric, here are a few ideas to consider:
* Onatar is the Sovereign of the Forge, the patron of the smith and artificer. As a Forge cleric, you might believe that the warforged weren’t designed by a mortal mind; rather, Aaren d’Cannith was guided by divine inspiration to bring Onatar’s children into the world. Do you want to bring humans and warforged together, promoting a peaceful coexistence? Or do you believe that the warforged have their own divine purpose that has yet to be fulfilled?
* A artificer built fifteen warforged, each to serve as an avatar for one of the Sovereigns and Six. Did they succeed? You wield divine magic; is there the seed of a Sovereign within you, waiting to grow as you gain levels? Which Sovereign do you represent? And if the experiment appears to have worked, what became of your fourteen siblings?
* You have the body of a warforged but the mind of a human. You were a devoted follower of the Blood of Vol. After death, you awoke in a warforged body. You don’t know how this happened. Was it an accident? The work of a necromancer? Or are all warforged vessels for dormant ghosts? Regardless, you intend to use this second life to fight for the living.
* Any noble soul can draw on the power of the Silver Flame to protect the innocent. Were you inspired by a paladin who fought by your side, and you took up their sword when they fell in battle? Or perhaps you were //designed// to channel the power of the Flame — a prototype commissioned by one of the Cardinals of Thrane. Are you a miracle, a celebrated champion of the church with the acolyte background? Or has Cardinal Krozen branded you an abomination?
''The Docent Warlock ''
A //docent// is a sentient magic item, a sphere that attaches to the chest of a warforged and offers guidance. Ancient //docents// have been found in Xen’drik, artifacts of unknown age and origin. You found such a //docent// and it’s attached to your body, altering your physiology and gifting you with supernatural powers. Mechanically you’re a warlock, but you wear your patron on your chest. The patron you choose reveals something about the nature of the //docent//. If you take the Fiend as your patron, it suggests that a dark power could be bound in the //docent//. If you take the Celestial as your patron, perhaps the //docent// holds a spirit of light. The //docent// is the source of your powers, but you don’t know if you can trust it; discovering the true nature of the docent will be part of your unfolding story. Is it a magic item created by a forgotten society? Or is an immortal spirit bound in the //docent// . . . and if so, what does it want?
While the story idea is that you found a //docent//, your patron doesn’t use an attunement slot and you can’t actually remove it; it’s become a part of you. However, if you do somehow remove it, you won’t lose the powers you already possess. Should this happen, perhaps you’ll have to find a new patron, or perhaps you’ll find that the power was a part of you all along.
''The Forgotten Assassin ''
You awoke in the bottom of a lake. You have no memory of how you got there or anything of your life before that moment. As warforged don’t need to breathe, you made your way back to shore. You’re a warforged rogue, quick and deadly. But you have flashes of your past, glimpses of memory in which you’re an assassin possessing far greater skills than you have today. As you gain levels, you are actually regaining these skills you once possessed. As you do so, perhaps you’ll also recover your memory. Who did you work for? Who did you kill? How and why was your memory wiped? And most of all, are you sure you want to know the answer?
---
!!!Quirks
Warforged often display an odd personality trait or two, given how new they are to the world. The Warforged Quirks table contains example quirks.
| !к8 |!Причуда |
| 1 |You analyze-out loud-the potential threat posed by every creature you meet. |
| 2 |You often misread emotional cues. |
| 3 |You are fiercely protective of your friends. |
| 4 |You try to apply wartime discipline to every situation. |
| 5 |You don't know how to filter your feelings and are prone to dramatic emotional outbursts. |
| 6 |You don't understand clothing beyond its utility and assume it denotes a person's function. |
| 7 |You are obsessed with your appearance and con stantly polish and buff yourself. |
| 8 |War is the only thing that makes sense to you, and you're always looking for a fight. |
---
!!!Warforged Names
Most warforged were assigned numerical designations for use in military service. Many of them adopted nick names, often given to them by their comrades. As independent individuals, some have chosen new names as a way to express their path in life. A few take on human names, often the name of a fallen friend or mentor.
''Warforged Names:'' Anchor, Banner, Bastion, Blade, Blue, Bow, Cart, Church, Crunch, Crystal, Dagger, Dent, Five, Glaive, Hammer, Iron, Lucky, Mace, Oak, Onyx, Pants, Pierce, Red, Rod, Rusty, Scout, Seven, Shield, Slash, Smith, Spike, Temple, Vault, Wall
<<<
Думаешь, я свихнулся? Я думаю, по-настоящему свихнуться – это тянуть лямку простого смертного, когда знания и сила под рукой, чтобы получить их и править миром.
— Заррен, вестник Акамара
<<<
Молодой эльф в золотых одеждах, с псевдодраконом, свернувшимся у него на плече, тепло улыбается дворцовому стражу, вплетая магическое очарование в свои сладкие речи, чтобы подчинить его своей воле.
Когда в руках морщинистой старухи оживает пламя, она шепчет тайное имя своего демонического покровителя, вливая в заклинание зловещую магию.
Переведя взгляд с потрёпанного тома на необычное сочетание звёзд над головой, тифлинг с дикими глазами начинает мистический ритуал, который откроет проход в далёкий мир.
Колдуны — искатели знаний, что скрываются в ткани мультивселенной. Они раздвигают грани понимания нашего мира, всегда стремясь расширить свои познания. Через договор, заключённый с таинственными существами сверхъестественной силы, колдуны открывают для себя магические эффекты, как едва уловимые, так и впечатляющие воображение. Колдуны подпитывают свои силы древними знаниями таких существ как феи, демоны, дьяволы, карги и чужеродные сущности Дальнего Предела.
Там, где мудрецы или волшебники увидят опасное знамение и закончат свои изыскания, колдун продолжит идти вперед несмотря ни на что. Таким образом, для появления колдуна требуется особая смесь интеллекта, любопытства и безрассудства. Многие назвали бы это признаком безумия, колдуны же называют это решимостью.
Колдуны определяются двумя элементами, которые совместно формируют их путь в этом классе. Во-первых: это события или обстоятельства, которые послужили причиной того, что колдун заключил договор с планарной сущностью. Во-вторых: это характер сущности. В отличии от жрецов, обычно принимающих божество и его божественный дух, колдун может ненавидеть или наоборот любить своего покровителя.
---
!!!Клятва и долг
Колдун заключает договор с потусторонней сущностью. Иногда отношения между колдуном и его покровителем похожи на отношения жреца и его божества, но сущности, выступающие в роли покровителей, вовсе не боги. Колдун может возглавить культ, посвящённый принцу демонов, архидьяволу или совершенно чужеродной сущности — созданиям, у которых обычно нет жрецов. Куда чаще их взаимоотношения похожи на отношения мастера и ученика. Знания колдуна и его сила растут по мере оказания услуг покровителю.
Магия, которой наделён колдун, может вносить незначительные изменения в его сущность (например, способность видеть в темноте или читать на любом языке), а также дарует возможность пользоваться мощными заклинаниями. В отличие от начитанных волшебников, колдуны могут дополнять магию некоторыми элементами рукопашного боя. Они хорошо себя чувствуют в лёгком доспехе, и знают, как пользоваться простым оружием.
---
!!!Поиски тайн
Колдунами управляет ненасытная жажда знаний и власти, это вынуждает их заключать договоры и определяет их будущую жизнь.
Истории о колдунах, связавших себя с исчадиями, широко известны. Но не все покровители колдунов — демонические сущности. Иногда путешественник находит в дебрях леса красивую башню, встречает её хозяина или хозяйку — фею, и оказывается втянутым в договор, не получив должной информации. А иногда, углубившись в толстые тома книг с запрещёнными знаниями, ученик открывает свой ум — блестящий, но сумасшедший, реальности, находящейся за пределами материального мира в пустоте, в которой таятся чужеродные создания.
Как только договор заключён, жажда колдуна к знаниям и власти не может быть утолена обычной учёбой и исследованиями. Никто не заключает договор с могущественным покровителем без намерения использовать полученную силу.
Подавляющее большинство колдунов проводит свои дни в погоне за своими собственными целями. Как правило, это разного рода приключения. Кроме того, требования покровителей ведут колдунов навстречу приключениям.
---
!!!Создание колдуна
Когда вы создаёте персонажа колдуна, потратьте немного времени и подумайте о том, каков будет ваш покровитель, и какие обязательства на вас накладывает договор с ним. Что привело вас к заключению договора, и как вы встретились с покровителем? Соблазнил ли вас дьявол, когда вы его вызывали, или же вы искали ритуал, который бы позволил вызвать древнего бога? Искали ли вы покровителя или покровитель сам нашёл и выбрал вас? Раздражают ли вас обязательства, возложенные договором, или же вы радостно служите в ожидании награды?
Посоветуйтесь со своим Мастером, чтобы определить, какую роль будет играть ваш договор во время приключений. Требования вашего покровителя могут втянуть вас в различные приключения, или же это будут небольшие услуги, которые персонаж выполняет между приключениями.
Какие отношения у вас с покровителем? Они дружественные, враждебные, сложные или же романтичные? Насколько важным вы являетесь для своего покровителя? Какую роль играете в его планах? Знаете ли вы других слуг своего покровителя?
Как покровитель общается с вами? Если у вас есть фамильяр, он может неожиданно заговорить голосом покровителя. Некоторые колдуны находят послания от своих покровителей вырезанными на деревьях, среди листьев чайной заварки или в движении облаков — такие послания может увидеть только сам колдун. Другие колдуны разговаривают со своими покровителями во снах или видениях, или имеют дело только с посредниками.
В последующих разделах представлены способы дополнить персонажа колдуна, которые могут создать некоторые интригующие сюжетные и ролевые возможности.
---
!!!Отношение покровителя
Любые отношения – это двусторонняя улица, но в случае колдунов и их покровителей совершенно не обязательно что обе стороны улицы будут иметь одинаковую ширину или один и тот же материал. Чувства которые колдун испытывает к своему покровителю, позитивные или отрицательные, могут быть взаимными или же наоборот два участника договора могут относится друг к другу с противоположными эмоциями/
Когда вы определяете отношение вашего колдуна-персонаж к покровителю, также подумайте, как всё выглядит с точки зрения покровителя. Как ваш покровитель относится к вам? Ваш покровитель – друг и союзник или враг, который дает вам силу только потому что вы вынудили его заключить договор?
| !к6 |!Отношение |
| 1 |Ваш покровитель направлял и помогал вашей семье в течение нескольких поколений и милостиво относится к вам. |
| 2 |Каждое взаимодействие с вашим капризным покровителем – это сюрприз, приятный или болезненный. |
| 3 |Ваш покровитель – дух давно умершего героя, который видит ваш договор как способ для него продолжать оказывать влияние на мир. |
| 4 |Ваш покровитель – суровый педант и относится к вам с уважением. |
| 5 |Ваш покровитель обманул вас при заключении договора и относился к вам как к рабу. |
| 6 |По большей части вам предоставлена свобода действий и покровитель не вмешивается в них. Иногда вы с ужасом думаете, что же будет, когда покровитель наконец проявится. |
---
!!!Специальные условия договора
Договор может варьироваться от свободного соглашения до официального контракта с длинными, подробными положениями и перечнями требований. Условия договора – то, что должен сделать колдун, чтобы получить милость покровителя – всегда продиктованы покровителем. Иногда эти условия включают в себя особое положение, которое может показаться странным или причудливым, но колдуны воспринимают эти условия так же серьезно, как и другие требования своих договоров.
Есть ли у вашего персонажа договор, который требует от вас изменить свое поведение необычным или, казалось бы, фривольным образом? Даже если ваш покровитель ещё не возложил на вас такую обязанность, это не значит, что это всё равно не может произойти.
| !к6 |!Условие |
| 1 |Когда ваш покровитель обратится к вам, вы должны принять немедленные меры против конкретного врага своего покровителя. |
| 2 |Ваш договор проверяет вашу силу воли; вы должны воздерживаться от алкоголя и других опьяняющих веществ. |
| 3 |По крайней мере один раз в день вы должны написать или вырезать имя или символ своего покровителя на стене здания. |
| 4 |Иногда вы должны проводить причудливые ритуалы для поддержания своего договора. |
| 5 |Вы никогда не можете одевать один и тот же наряд дважды, так как ваш покровитель считает такую предсказуемость скучной. |
| 6 |Когда вы используете таинственные воззвания, вы должны произнести имя своего покровителя вслух или рискуете вызвать его недовольство. |
---
!!!Связывающий знак
У некоторых покровителей есть привычка и им частенько нравится каким-то образом маркировать колдунов. Связывающий знак даёт понять тем, кто знает о таких вещах, что индивид, о котором идет речь, служит покровителю. Колдун может воспользоваться таким знаком, чтобы подтвердить, что он связан договором, или, возможно, захочет скрывать его от лишних глаз (если это возможно), чтобы избежать трудностей, которые он может принести.
Если ваш договор колдуна обязывает вас иметь связывающий знак, как вы относитесь к его демонстрации, вероятно, зависит от характера ваших отношений с тем, кто дал вам это. Является ли знак источником гордости или чем-то, чего вы стыдитесь?
| !к6 |!Знак |
| 1 |Один из ваших глаз выглядит так же, как глаз вашего покровителя. |
| 2 |Каждый раз, когда вы просыпаетесь, маленькая родинка на вашем лице появляется в другом месте. |
| 3 |Вы проявляете симптомы болезни, но не страдаете от нее. |
| 4 |Ваш язык неестественного цвета. |
| 5 |У вас есть рудиментарный хвост. |
| 6 |Ваш нос светится в темноте. |
[img class="centerme" [https://i.imgur.com/IynfTyN.jpg]]
<<<
Существуют только Зло и Великое Зло, а за ними, в тени, скрывается Истинное Зло. Истинное Зло - это то, что ты едва можешь себе представить, даже если ты считаешь, что ничто не может тебя удивить. А иногда Истинное Зло хватает тебя за горло и требует, чтобы ты выбрал между ним и другим, чуть меньшим Злом.
— Ренфри Сорокопутка
<<<
С изуродованным, но решительным, покрытым испариной лицом, полуорк проводит пальцем по ранам, чтобы начертить в воздухе светящийся рубиновый знак. Схватив невесомый, завершенный символ, он искривляет его, высвобождая темную магическую энергию, которая устремляется вперед, порождая проклятье из своих собственных жил на преследующее чудовище, чтобы уравнять шансы.
Таинственная полуэльфийка, облаченная в поношенный плащ и грубые кожаные доспехи, осторожно исследует место кровавой бойни у дороги. Её взгляд вспыхивает озарением, когда она медитирует над последствиями резни. Выживший, нанявший её с опасением, отпрыгивает, когда полуэльфийка внезапно вскакивает на ноги, уверенная в том, что знает преступника, где его дом, и как мало времени у нее есть, чтобы найти его.
Ступив в беспросветные покои, полные древней пыли и затихающих шепотов, полурослица улавливает резкий запах надвигающейся опасности и слышит скрежет костей и когтей по камню. Она морщится, проводя лезвием по ладони: сталь превращает ее кровь в светящиеся руны могущественной магии, а меч внезапно охватывает колдовское пламя, жаждущее заклеймить и испепелить плоть ее врагов.
Кровавые охотники, которых часто боятся или не понимают, движимые непрекращающимся стремлением уничтожить нечисть, - это умные, владеющие магией воины, которые связали свою сущность с темными существами, на которых они охотятся, чтобы лучше выслеживать и уничтожать свою добычу. Вооруженные обрядами запретной магии крови и готовые пожертвовать своей жизненной силой и человечностью ради дела, они защищают королевства из тени, постоянно бдительно следя за тем, чтобы не стать теми же чудовищами, на которых они решили охотиться.
---
!!Жертва ради сохранения жизни
В то время как большинство классических школ магического обучения хорошо известны и широко уважаемы, архаичные и мрачные заклинания магии крови долгое время были запрещены и потеряны для большей части цивилизованного мира. Кровавые охотники восстановили эти техники вдали от осуждающих взглядов общества, найдя эзотерическую природу магии крови эффективной в борьбе со злом, которое часто бросает вызов божественным силам, исторически держащим оборону.
Благодаря тщательному изучению и практике кровавые охотники внедрили в свое боевое мастерство кровавые обряды, жертвуя частью своего здоровья, чтобы наполнить свое оружие мощной магией крови и призвать стихии, чтобы они окутали их удары. Они могут высечь на теле своего противника арканное клеймо, препятствующее его способностям и наказывающее его агрессию, или наложить на врага кровавое проклятие, манипулируя его телом изнутри. Эти искусные воины, готовые терпеть все ради победы, превратились в мощную силу для борьбы с ужасами, угрожающими невинным.
---
!!Чудовище для борьбы с чудовищами
Желание что-то изменить в опасном мире, необходимость отомстить за причиненное зло, вдохновение от личного наблюдения за странными и мощными техниками другого кровавого охотника или просто стремление найти свое место в безразличном мире - причины, по которым человек может принять Охотничью пагубу и выбрать эту жизнь, многочисленны и разнообразны. Вступая в орден кровавых охотников, человек также присоединяется к тесной семье, связанной служением друг другу и общему делу. Для многих это единственная семья, которую они знали или оставили, поэтому родство, ощущаемое между членами ордена, является практически неразрывной связью.
Однако за границами ордена жизнь кровавого охотника зачастую нелегка. Ритуалы Охотничьей пагубы часто приводят к тому, что охотник заметно изменяется и склонен вызывать тревогу у простых людей, а вид магии крови может вызвать суеверный страх даже у самого образованного ученого. Хотя некоторые общества смирились с добрыми делами орденов, многие кровавые охотники стараются скрывать свою природу, пока нет крайней необходимости, чувствуя себя более комфортно в диких землях и пустошах, где обычно тренируются ордена. Но, даже в этом случае, лучшая работа, которую может выполнить кровавый охотник, обычно касается бедных и беззащитных людей на задворках общества, тех, кто подвержен развращающему влиянию исчадий и темным намерениям. Под угрозой осуждения эти мрачные защитники проникают в цивилизацию, зарабатывая деньги в качестве наемников или охотников за головами, постоянно высматривая признаки чего-то более гнусного, скрывающегося под поверхностью.
Выбирая этот путь, кровавый охотник безвозвратно отдает часть себя своему делу, физически, эмоционально, а иногда и морально. Ордена кровавых охотников исповедуют свои собственные уникальные идеалы и методы, часто используя техники с темным происхождением, которые проверяют силу и волю этих защитников. Многие борются со страхом проиграть в этой борьбе, поэтому жизнь, основанная на дисциплине и бдительности, заставляет их бродить по сельской местности в поисках единомышленников и слухов о готовящихся темных делах.
---
!!Создание кровавого охотника
Когда вы создаете кровавого охотника, наиболее важными аспектами вашего персонажа являются причины, побудившие вас к такому образу жизни, и почему вы стремитесь отказаться от всего, чтобы погрязнуть в темноте вместе со злом, на которое вы охотитесь? Вы потеряли любимого человека из-за дьявольского зверя и теперь хотите уберечь других от подобной участи? Вы искали чувство цели и защищенности и нашли его среди ордена, который вас приютил? Вы всегда носили в себе зерно тьмы и ищете сородичей, которые присмотрят за вами и не дадут вам поддаться ей? Были ли вы когда-то святым воином, который отступил от своей веры и был изгнан, но до сих пор стремитесь отдать себя защите невинных? Или вы - преступник с темным прошлым, стремящийся искупить свою вину и принимающий эту жизнь как путь покаяния?
Каковы ваши отношения с силами магии крови и способностями, которые она обещает наделить вас, когда вы приблизитесь к ее овладению? Уважаете ли вы древнюю силу, бурлящую в ваших жилах, и боитесь ли вы ее, используя только в случае необходимости? Наслаждаетесь ли вы силой, которую она дает вам, принимая свой дар и свободно используя его? Боитесь ли вы, что суеверия верны и эта сила в конце концов превратит вас в одного из монстров, на которых вы охотитесь? Или же учеба дала вам уверенность в контроле над материей, и вы уверены, что сможете использовать эти дары для того, чтобы наступил более яркий рассвет?
Подумайте также о том, что, хотя кровавый охотник принадлежит к ордену, многие отправляются в самостоятельное плавание, чтобы выполнять свою работу наилучшим образом. Что заставило вас покинуть стены вашего ордена? Собираетесь ли вы вернуться, или вы решили, что вам есть чему поучиться в мире за его пределами? Что вы ищете в других искателях приключений, которые могут помочь вам достичь ваших целей?
Хотя большинство кровавых охотников следуют по пути добра или нейтралитета в своих исканиях, некоторые поддались темной, соблазнительной стороне магии крови и используют свои способности в корыстных и злых целях. Такие отступники всегда изгоняются из ордена, и на них часто охотятся как на тех существ, которых они когда-то обучались убивать.
<<<
Это были рассказы о беспокойном народе , путешествовавшем по морям и рекам на длинных кораблях, сперва для грабежа и разбоя, потом в поисках мест для поселений. Но с каждой страницы била энергия, любовь к приключениям. Лириэль читала большую часть ночи, тратя драгоценные свечи.
Она никогда не задумывалась о людях, но эти истории восхищали ее. В этих пожелтевших страницах говорилось о храбрых героях, странных и яростных животных, могучих богах и магии, которая была неотъемлемой частью той дальней земли.
— Элейн Каннингем, //Дочь дроу//
<<<
В большинстве миров люди — это самая молодая из распространённых рас. Они поздно вышли на мировую сцену и живут намного меньше, чем дварфы, эльфы и драконы. Возможно, именно краткость их жизней заставляет их стремиться достигнуть как можно большего в отведённый им срок. А быть может, они хотят что-то доказать старшим расам, и поэтому создают могучие империи, основанные на завоеваниях и торговле. Что бы ни двигало ими, люди всегда были инноваторами и пионерами во всех мирах.
---
!!!Многоликие
Со своей склонностью к миграции и завоеваниям, люди более разнообразны физически, чем другие распространенные расы. Не существует типичной внешности человека. Рост отдельного представителя может составлять от 150 до 185 см, а вес — от 60 до 110 кг. Оттенок кожи у людей варьируется от почти чёрного до очень бледного, а волосы — от чёрного до светлого тонов (волнистые, кудрявые или прямые); мужчины могут носить волосы на лице, густые или редкие. Многие люди имеют примесь нечеловеческой крови, выдающей черты эльфа, орка, или предков другого происхождения. Люди достигают совершеннолетия около двадцати лет, и редко проживают одно столетие.
---
!!!Разнообразие во всём
Люди являются самыми приспособленным и амбициозным народом среди распространённых рас. Их вкусы, нравы и обычаи сильно отличаются во множестве разных земель, где они поселились. Однако там, где они селятся, они остаются надолго: строят города, стоящие веками, и великие королевства, сохраняющиеся множество столетий. У отдельного человека может быть относительно короткая продолжительность жизни, но человеческая нация и культура сохраняет традиции от своих истоков на время, намного превышающее память одного человека. Они живут сегодняшним днём, что весьма хорошо подходит для приключенческой жизни, и позволяет вдобавок строить планы на будущее, со стремлением оставить после себя прочное наследие. Индивидуально или в группах, люди легко приспосабливаются к ситуации, и всегда остаются внимательными к изменяющейся политической и социальной динамике.
---
!!!Прочные институты
Там, где один эльф или дварф могут взять ответственность за охрану особого места или великой тайны, человек создаёт священные порядки и институты. В то время как кланы дварфов и старейшины полуросликов передают свои традиции новым поколениям, человеческие храмы, государства, библиотеки и своды законов запечатлевают их традиции в анналах истории. Люди мечтают о бессмертии, но (за исключением тех, кто становится нежитью или достигает божественного восхождения, чтобы избежать оков смерти) достигают его, когда продолжают жить в памяти, после смерти.
Хотя некоторые люди могут быть ксенофобами, в целом их общество очень смешано. На землях людей обитает большое количество нечеловеческих рас, по сравнению с количеством людей, живущих на землях нелюдей.
---
!!!Воплощение амбиций
Люди, ищущие приключений, являются самыми смелыми и амбициозными представителями смелой и амбициозной расы. Они стремятся заработать славу в глазах своих товарищей, накапливая власть, богатство и популярность. Более чем другие народы люди борются за цель, а не за расширение территорий или процветание отдельных фракций.
---
!!!Человеческие имена и этносы
Поскольку культура людей самая разнообразная среди всех существующих рас, у них нет типичных имён. Некоторые родители дают своим детям имена из других наречий, например, из Дварфского или Эльфийского (произносимые более или менее правильно), но большинство родителей даёт имена, связанные с культурой своего региона или традициями предков.
Культура быта и физические характеристики людей могут сильно меняться в зависимости от региона. В Забытых Королевствах, например, одежда, архитектура, кухня, музыка, и литература в северо-западных землях Серебряных Пустошей отличаются от тех, что есть в далёком Тёрмише или Импилтуре на востоке, и совсем не похожи на их аналоги в далёком Кара-Туре. Физические характеристики людей различаются в соответствии с переселениями их предков, поэтому люди Серебряных Пустошей имеют все возможные сочетания цветов кожи.
<<<
Если вы обдумываете, брать ли с собой чешуйчатого в приключение, запомните этот важный факт. Этот странный, нечеловеческий блеск в его глазах, когда он оглядывает вас – тот же взгляд, которым вы смотрите на свежеподжареный стейк.
– Тордек, дварфийский воин и приключенец
<<<
Только дурак смотрит на людоящеров и видит не более, чем просто чешуйчатых гуманоидов. Несмотря на их физическую форму, людоящеры имеют больше общего с игуанами или драконами, чем с людьми, дварфами или эльфами. Людоящеры обладают чуждым и непостижимым образом мысли, их желаниями и мыслями руководит другой набор основных принципов, чем у существ с теплой кровью. Их мрачные болотные дома могут располагаться в сотнях миль от ближайшего людского поселения, но разрыв между образом мыслей у них и у гладкокожих намного больше.
Несмотря на их чужеродное мировоззрение, некоторые людоящеры прилагают усилия, чтобы понять и, по-своему, подружиться с представителями других рас. Такие людоящеры становятся преданными и умелыми союзниками.
---
!!!Иная логика
Рептилоидная натура людоящеров проявляется не только в их внешности, но также и в том, как они думают и действуют. Людоящеры испытывают куда как меньше эмоций, чем другие гуманоиды. Как и у большинства рептилий, их чувства в основном вращаются вокруг страха, агрессии, и удовольствия.
Вместо чувств людоящеры испытывают реакции на существ и ситуации. Например, люди, столкнувшиеся с сердитым троллем, на подсознательном уровне испытывают страх. Они испуганны, их движения и мысли путаются, они реагируют инстинктивно. Страх захватывает их и управляет ими. Для людоящеров же, наоборот, эмоции — это особые реакции на других существ, объекты и ситуации. Людоящер не думает, «я боюсь.» Вместо этого он рассматривает самых сильных и агрессивных существ как угрозу, которую по возможности нужно избегать. Если такие существа нападают, людоящер бежит, сражаясь только если его загнали в угол. Людоящер не боится тролля; вместо этого он понимает, что тролль это внушающее страх, опасное существо, и реагирует соответственно.
Людоящеры никогда не сердятся так, как это делают другие, но они могут быть агрессивны к существам, которых они могут победить в бою, и которые не опасны для них как-то иначе. Они агрессивны к добыче, которую хотят съесть, существам, которые приносят им вред, и так далее.
Людоящерам приятны существа и вещи, которые облегчают жизнь. Приятные вещи должны быть сохранены и защищены, иногда даже за счет безопасности самого людоящера. Большинство приятных для людоящера существ и вещей оцениваются скорее как хорошие, чем как пугающие.
---
!!!Холодные и расчетливые
Большинство гуманоидов считает хладнокровных людей недостаточно эмоциональными и сочувствующими. Тот же ярлык навесили на людоящеров. В отсутствие каких–либо внутренних эмоциональных реакций, людоящеры ведут себя отстраненно. Они не оплакивают павших товарищей и не впадают в ярость по отношению к врагам. Они просто наблюдают и реагируют согласно ситуации.
У людоящеров нет эмоциональных связей с прошлым. Они оценивают ситуации, основываясь на их текущей и будущей полезности и важности. Наиболее сильно это проявляется тогда, когда людоящеры имеют дело с мертвыми. Для людоящера умерший товарищ становится потенциальным источником еды. Этот компаньон, возможно, когда-то был воином или охотником, но теперь он – не более чем свежее мясо.
Людоящер, который живет среди других гуманоидов, может, в течение долгого времени учиться уважать эмоции других существ. Людоящер не разделяет эти чувства, но вместе с тем оценивает их так же беспристрастно. Да, павший дварф мог бы быть полезнее как еда, но разрубание тела на стейки вызывает агрессию у других гуманоидов и делает их менее полезными в сражении.
---
!!!Полезность и выживание
Мышление людоящеров могло бы показаться излишне жестоким, но оно помогает им выжить во враждебном окружении. Болота, которые они населяют, наполнены потрясающим разнообразием угроз. Людоящеры нацелены на выживание любой ценой, без сантиментов.
Людоящеры оценивают всё и всех с точки зрения полезности. Искусство и красота не имеют для них значения. Острый меч полезен и хорошо служит, в то время как тупой меч – мертвый груз без точильного камня.
Людоящеры не видят необходимости планировать будущее дальше чем на сезон. Этот подход позволяет им поддерживать свой текущий уровень влияния в мире, но это ограничивает их развитие. У людоящеров нет никакого интереса к развитию письма, созданию долгосрочных планов, или культивированию других ме- тодов развития за пределы их обычного существования как охотников и собирателей.
---
!!!Несчастные мягкокожие
По сути, людоящеры относятся к другим гуманоидам с безразличием, граничащим с жалостью. Учитывая, что другие гуманоиды родились без крепкой чешуи и острых зубов, это вообще чудо, что им удалось выжить так долго. Типичный человек загнулся бы на болотах за день.
Однако, если другие существа оказываются полезными для людоящера, то они вызывают у людоящеров желание защитить их, которое тем сильнее, чем внешне слабее защищаемый. Людоящеры оценивают таких существ как молодых и неспособных защищаться детенышей, которые могут оказаться полезным в будущем, если о них заботиться.
---
!!!Речь людоящеров
Людоящеры могут отлично владеть Общим языком, но в следствие особенностей их склада ума, структура их речи отличается от других гуманоидов.
Людоящеры редко используют метафоры. Их речь почти всегда буквальна. Они могут понимать идиомы, но с некоторыми трудностями.
Имена путают их, если они не являются описательными. Они склонны давать собственные имена согласно своим традициям другим существам, используя слова Общего языка.
Людоящеры используют активные глаголы, чтобы описывать мир. Людоящер в холодную погоду может сказать, «Этот ветер приносит холод» вместо «Мне холодно». Людоящеры склонны определять вещи с точки зрения действий, а не результатов.
---
!!!Индивидуальность людоящеров
Вы можете использовать таблицу ниже, чтобы определить персональные причуды или особые манеры вашего людоящера.
| !к8 |!Причуда |
| 1 |Вы ненавидите расточительство и не видите причин, почему бы не освежевать павших врагов. Пальцы – это вкусно и компактно! |
| 2 |Вы лучше всего спите, когда большей частью погружены в воду. |
| 3 |Деньги для вас бессмысленны. |
| 4 |Вы думаете, что есть только две разновидности гуманоидов: людоящеры и мясо. |
| 5 |Вы научились смеяться. Вы используете этот талант в ответ на все эмоциональные ситуации, чтобы лучше находить общий язык со своими товарищами. |
| 6 |Вы все еще не понимаете, как работают метафоры, но это не мешает вам использовать их при любом удобном случае. |
| 7 |Вы высоко цените мягких гуманоидов, которые понимают, что нуждаются в кольчуге и мечах, чтобы соответствовать тем подаркам, с которыми вы родились. |
| 8 |Вы любите есть свою еду пока она все еще трепыхается. |
---
!!!Имена людоящеров
Людоящеры берут свои имена из драконьего языка. Они используют простые определения, даваемые племенем, основанные на известных делах и поступках. Например, Гарурт переводится как «топор»: имя, данное воину людоящеров, который победил орка и завладел его оружием. Людоящера, которому нравится скрываться в зарослях тростника, чтобы заманить в засаду животное, можно было бы назвать Ачуак, что означает «зеленый», описывая, как она смешивается с листвой.
Людоящеры не делают различия между мужскими и женскими именами. Каждое приведенное в качестве примера имя дано с переводом в круглых скобках.
''Имена людоящеров:'' Арит (война), Ачуак (зеленый), Биэшра (животное), Варгач (сражение), Вертика (гора), Вилигнат (ожог), Вит (сталь), Вута (черный), Гарурт (топор), Дарастрикс (дракон), Джанк (молоток), Ирхтос (тайна), Кепеск (шторм), Кетенд (драгоценный камень), Корт (опасность), Косч (небольшой), Котар (демон), Литрикс (броня), Мирик (песня), Отокент (умный), Саурив (глаз), Троден (много), Туркер (ночь), Уск (железо)
<<<
Полезная уловка: если вы столкнетесь с медвежатником, у которого на шипы воткнуты отрубленные головы-трофеи, произнесите заклинание, позволяющее головам заговорить. После этого вы сможете заставить делать медвежатника почти что угодно.
– Эльминстер, //Справочник Воло по монстрам//
<<<
Медвежатники фигурируют в страшилках многих рас – громадные, волосатые твари, которые крадутся в тени, тихо как кошки. Если вы будете идти по лесу один, то медвежатник протянет свои лапы из кустов и задушит вас. Если вы ночью отойдете слишком далеко от дома, то медвежатники схватят вас, чтобы сожрать в своей берлоге. Если медвежатник отрезает вам голову, ваша душа остается запертой внутри, и медвежатники используют вашу голову, чтобы магически повелевать всеми, кого вы когда-либо знали.
Жуткие истории вроде этих, несут в себе долю правды. Медвежатники, нападая, действительно полагаются на скрытность и силу, предпочитая действовать ночью. Они действительно собирают головы вражеских лидеров, но настолько же маловероятно, что они действительно будут есть врагов без разбора, как то, что это будут делать люди. Медвежатники, скорее всего, не нападут на одинокого путника или заблудившихся детей, если это, конечно, не принесёт им какую-либо пользу. С точки зрения остального мира, их агрессивность и дикость к счастью компенсируются их редкостью и ленивостью.
---
!!!Ленивые и жестокие тунеядцы
Вне боя медвежатники проводят большую часть своего времени отдыхая или подрёмывая. Они почти совсем не занимаются ремеслом или сельским хозяйством, или как-то иначе делают что-либо значимое. Они заставляют более слабых существ выполнять их приказы, а сами тем временем расслабляются. Когда превосходящая сила попытается заставить медвежатников служить, они попытаются сбежать, вместо того, чтобы выполнить работу или противостоять противнику. Даже состоящих в войске гоблиноидов и участвующих в войне медвежатников часто нужно будить и подкупать, чтобы заставить их выполнять свои обязанности.
Эта лень не позволяет понять то, насколько злы эти существа. Медвежатники способны впадать в припадки невероятной ярости, используя свои мускулистые тела для точного, быстрого и безжалостного избиения. По своей сути, медвежатники – засадные хищники, привыкшие к длительным периодам бездеятельности, нарушаемым кратковременными вспышками смертоносной активности. Хотя они могут быть свирепыми, медвежатники не приспособлены для длительной активности.
---
!!!Менталитет банды
Так как медвежатники – не очень плодовитая раса, вся их популяция малочисленна и раскидана в широкой области. Медвежатники живут семейными группами, которые действуют скорее, как банды. В группе как правило не больше дюжины особей, в основном родных братьев и сестер и их пары, а также немного потомства и пара стариков. Банда живет внутри и в окрестностях небольшого огороженного места, часто естественной пещеры или старой берлоги медведя, и у них может быть дополнительное логово в другом месте на их территории, которую используют временно, когда идут в длительный поход за едой.
В хорошие времена банда медвежатников сплочена, и ее участники хорошо сотрудничают, охотясь или запугивая других существ. Но когда удача отворачивается от банды, её члены становятся эгоистичными и могут саботировать друг друга, чтобы подавить противников или изгнать более слабых или непопулярных участников, чтобы сохранить остальную часть банды сильной. К счастью для расы в целом, даже у юных и пожилых медвежатников есть способность в одиночку выжить в дикой местности, и изгнанный члены банды может в конечном счете присоединиться к другой группе.
Не смотря на свою природу, влияние медвежатников на окружающий мир не сильно больше, чем у стаи волков. Они существуют, создавая простые инструменты, охотясь и собирая еду, и банды иногда мирно сходятся, чтобы обменяться между собой товарами и членами банды.
---
!!!Злое поклонение злым богам
Медвежатники поклоняются двум богам: братьям Хруггеку и Гранхулу. Хруггек – внушающий страх старший брат, обладающий легендарной силой и мастерством в бою. Медвежатники полагают, что их сила и храбрость проистекают от него. Коварный Гранхул – младший брат, и истории медвежатников рассказывают, что он одарил их скрытностью, но взамен он высосал их энергию, чтобы медвежатники спали вместо него в своих берлогах, в то время как он будет вечно бдительным и бодрым.
Согласно легендам медвежатников, Хруггек и Гранхул часто сражаются бок о бок, охотясь на все, с чем они сталкиваются, как и позволяет им их право сильнейшего. Хруггек забирает головы тех, кого он убивает и насаживает их на колья в своем логове, где они молят его о милосердии и восхваляют его силу. Гранхул присматривает за Хруггеком, когда тот спит, но, если он должен быть в другом месте, он шепчет команды отрезанным головам, чтобы они разбудили Хруггека, если ему будет угрожать опасность.
Медвежатники восхищаются качествами обоих братьев. Из-за Хруггека они считают, что отвага и физическое превосходство — это их естественное состояние. Благодаря Гранхулу они могут использовать свои размер и силу, чтобы работать тайными убийцами вместо того, чтобы слоняться по округе как огры.
Запугивания, убийства и участие в сражениях – для медвежатников это священные действия. Удушение застанного врасплох противника и нанесение поражения противнику в открытом бою считаются актами почитания богов, также как дварфы считают, что ковка метала является священнодейством для Морадина.
Медвежатники признают двух других богов, которых они презирают и боятся: Маглубиет и Скиггарет.
Маглубиет – глава пантеона гоблиноидов, вынудил обоих братьев подчиниться его власти, но вместо того, чтобы убить их, он проявил милосердие и даже счел их достойными свободы – под его управлением – так, чтобы медвежатники смогли продолжить использовать свои таланты против его врагов. Медвежатники понимают, что, чтя Хруггека и Гранхула, они также отдают дань Маглубиету, даже при том, что они открыто не воздают должное своему повелителю. Когда медвежатников призывают присоединиться к войску, они полагают, что Маглубиет снова загнал братьев в божественное сражение, и они чтят своих богов, следуя их примеру.
Скиггарет – это страшилка медвежатников, столь же ненавистный и ужасный для них, как сами медвежатники в глазах многих других рас. Его имя редко произносят, причем всегда шепотом. Влияние Скиггарета проявляется время от времени, когда медвежатники вынуждены действовать трусливо; медвежатник, который знает или чувствует, что находится в смертельной опасности, впадает в своего рода безумие и сделает что угодно, чтобы остаться в живых, включая попытку убежать. Медвежатники полагают, что это чувство страха появляется из-за того, что в них вселяется Скиггарет, они не любят испытывать это чувство. После того, как безумие прошло, медвежатники не думают о вещах, которые делали в присутствии Скиггарета. Разговор об этом может призвать его назад.
---
!!!Благословения богов медвежатников
Для медвежатников шаманы и священники бесполезны. Никому не надо говорить им, чего хотят их боги. Если боги-братья сердятся на них, они сообщают медвежатникам об этом вспышками молний (Хруггек), либо ослепляя их или убивая (Гранхул). Медвежатники поклоняются своим богам, просто охотясь на других существ и не используя никаких других церемоний, чтобы оказать почтение – с одним исключением.
В акте почитания, который также иногда привлекает благосклонное внимание их богов, медвежатники отрубают головы побежденных противников, отрезают или пришивают открытыми веки, и оставляют рты висеть открытыми. Головы затем насаживают на колья или подвешивают на веревках вокруг логова медвежатников. Сами головы – трофеи, которые чтят Хруггека, а их всегда открытые глаза – уважение к никогда не спящему Гранхулу.
Головы лидеров и могущественных противников являются особенно священными, и преподнёсшая такой трофей банда медвежатников может получить особый дар. Банда, которая снискала расположение Хруггека и Гранхула таким образом, может обнаружить, что голова кричит, когда враг подойдет слишком близко. Иногда головы людей, у которых есть информация, нужная медвежатникам, рассказывают свои секреты вперемежку с плаксивыми мольбами о милосердии.
<<<
Не принимай мое молчание за принятие твоих злодеяний. Пока ты угрожал и хвастался, я придумал, как сломать тебе шею голыми руками четырьмя разными способами.
— Эмбер, великий мастер цветов
<<<
Её кулаки превратились в марево, отражая обрушившийся град стрел. Полуэльфийка перескочила баррикаду и бросилась в плотные ряды хобгоблинов. Кружась среди них, она раздавала удары во все стороны, расшвыривая противников, пока не осталась единственной, стоящей на ногах.
Глубоко вздохнув, покрытый татуировками человек принял боевую стойку. Когда первый из атакующих орков приблизился к нему, он выдохнул, и поток огня, с рёвом вырвавшись из его рта, поглотил противника.
Двигаясь бесшумно, как сама ночь, одетый во всё чёрное полурослик вступил в пятно тени под аркой, и мгновенно появился из другой чернильной тени на балконе, на расстоянии броска камня. Он медленно высвободил клинок из укутанных тканью ножен, и сквозь открытое окно взглянул на деспотичного принца, столь уязвимого во сне.
Независимо от дисциплины, монахов объединяет способность магически использовать энергию, которая течет в их телах. Будь то яркое проявление боевого мастерства или более тонкое сосредоточение на защите и скорости, эта энергия наполняет все, что делает монах.
Монахи идут по пути противоречий. Они изучают свое искусство, как волшебники, и, как волшебники, они не носят доспехов и обычно отказываются от оружия. Но они смертельно опасные бойцы, их способности стоят наравне с яростным варваром или отлично подготовленным воином. Монахи принимают это кажущееся противоречие, так как оно является основой всего монашеского обучения. Изучая себя, можно узнать многое об окружающем мире.
Сосредоточенность монаха на внутреннем совершенствовании приводит к тому, что многие из них становятся отрешенными от общества, их больше волнует личный опыт, чем события, происходящие в других местах. Жаждущие приключений монахи - это редкая порода и без того редкого типа персонажей, выходящих в своем стремлении к совершенству за стены монастыря в большой мир.
---
!!Магия ци
Монахи тщательно изучают магическую энергию, которая в большинстве монастырских традиций именуется ци. Эта энергия является составляющей частью магии, пронизывающей мультивселенную, а точнее, той её частью, которая протекает сквозь тела живущих. Монахи научились управлять энергией, протекающей сквозь их тела, повышая физические способности и нанося атаки, способные препятствовать течению ци в телах противников. Используя эту энергию, монахи наделяют удары своих голых рук и ног неестественной силой и скоростью. С приобретаемым опытом их боевые тренировки и тренировки владением ци дают им всё больше власти над собственными телами и над телами врагов.
---
!!Тренировки и аскеза
Маленькие огороженные монастыри разбросаны по мирам D&D. Это крошечные убежища, позволяющие укрыться от потока повседневной жизни, где само время, кажется, замирает. Живущие тут монахи ищут путь к личному совершенству через созерцание и утомительные тренировки. Многие попадают в монастырь детьми, отправленные туда, если родителям не хватало еды прокормить их, если родители умерли, или в знак благодарности за оказанную монахами помощь.
Некоторые монахи живут обособленно от окружающих, оградившись от всего способного препятствовать их духовному росту. Другие дали обет изоляции, появляясь лишь в качестве шпионов или убийц, действуя по приказу своих лидеров, благородных покровителей или иных, смертных или божественных сил.
Однако большинство монахов не избегают своих соседей и часто посещают ближайшие городки и посёлки, обменивая свои услуги на еду и другие товары. Будучи универсальными воителями, монахи нередко оказываются защитниками соседей от чудовищ или захватчиков.
Для монаха становление искателем приключений означает конец упорядоченной жизни в коммуне. Это может быть трудным шагом, и монахи принимают такое решение нелегко. Те же, кто покинул свой монастырь, относятся к этому шагу очень серьёзно, воспринимая свои странствия как испытание своего физического и духовного развития. Как правило, монахи мало заботятся о материальных богатствах, и ими движет желание достичь большего, чем просто убить чудовище и завладеть его сокровищами.
---
!!Создание монаха
Когда вы создаёте персонажа монаха, подумайте о своей связи с монастырём, в котором вы получили свои навыки и провели годы становления. Были ли вы сиротой или ребёнком, оставленным на пороге монастыря? Ваши родители отдали вас в монастырь в благодарность за услуги, оказанные монахами? Вы начали этот замкнутый образ жизни, чтобы скрыться от преступлений, что вы совершили? Или вы выбрали монашескую жизнь для себя сами?
Подумайте, почему вы оставили монастырь. Быть может, глава вашего монастыря выбрал вас для особо важной миссии за пределами обители? Возможно, вы были изгнаны, потом что нарушили правила сообщества. Вы уходите с опаской, или были рады уйти? Есть то, что вы надеетесь достичь вне монастыря? Хотите ли вы вернуться домой?
В результате строгой организации жизни монашеской общины и дисциплины, необходимой для использования ци, мировоззрение монахов почти всегда законное.
Игра персонажем-монахом предоставляет множество интригующих возможностей попробовать что-то новое. Чтобы еще больше разнообразить своего персонажа-монаха, рассмотрите варианты в следующих разделах.
---
!!!Монастырь
Монах обучается в монастыре, готовясь к аскетичной жизни. Многие из тех, кто приходит в монастырь, живут там до конца своих дней, за исключением лишь искателей приключений и остальных, у кого есть причина уйти. Для них монастырь может послужить укрытием между походами по миру или источником поддержки во время нужды.
Какого типа твой монастырь и где он расположен? Развило ли тебя его посещение необычным или характерным образом?
| !к6 |!Монастырь |
| 1 |Твой монастырь вырезан в горной гряде и нависает над опасной горной дорогой. |
| 2 |Твой монастырь находится высоко на ветвях громадного дерева в Стране Фей. |
| 3 |Твой монастырь был основан облачным гигантом давным-давно и находится внутри облачного замка, куда можно попасть только прилетев. |
| 4 |Твой монастырь построен рядом с вулканической системой горячих источников, гейзеров и серных озер. К вам регулярно заходили торговцы эйзеры. |
| 5 |Твой монастырь основан гномами и представляет собой подземный лабиринт туннелей и комнат. |
| 6 |Твой монастырь был вырезан из айсберга в заледенелых окраинах мира. |
---
!!!Знак монастыря
Даже при монашеском образе жизни, для которого характерно воздержание от материализма и личного имущества, символизм играет важную роль в самоопределении ордена. Некоторые монашеские ордена относятся к определенным существам с особым уважением либо потому что существо связано с историей ордена, либо потому что служит примером качества, которое монахи высоко ценят.
Если у вашего монастыря есть особый знак, вы можете носить изображение существа на неприметном месте одежды в качестве идентификатора. Или, возможно, у знака вашего ордена нет физической формы, но он выражается жестом или позой, которую вы принимаете, и другие монахи могут опознать это как знак.
| !к6 |!Знак |
| 1 |''Обезьяна.'' Быстрые рефлексы и способность путешествовать по верхушкам деревьев – две причины, по которым ваш орден восхищается обезьяной. |
| 2 |''Дракочерепаха.'' Монахи вашего прибрежного монастыря почитают дракочерепаху, читая древние молитвы и возлагая гирлянды цветов в честь этого живого духа моря. |
| 3 |''Ки-рин.'' Ваш монастырь видит главную цель в наблюдении за землями Ки-рина и их защите. |
| 4 |''Совомед.'' Монахи вашего монастыря почитают семейство совомедов, с которым монастырь сосуществует в течение уже многих поколений. |
| 5 |''Гидра.'' Ваш орден выделяет гидру за способность производить несколько атак одновременно. |
| 6 |''Дракон.'' Дракон когда-то гнездился в вашем монастыре. Его влияние еще чувствуется, хотя прошло много времени. |
---
!!!Мастер
Во время вашего обучения, вы скорее всего находились под руководство мастера, который передавал вам заповеди ордена. Ваш мастер ответственен за формирование вашего понимания боевых искусств и вашего отношения к миру. Каким человеком был ваш мастер, и как ваши с ним взаимоотношения повлияли на вас?
| !к6 |!Мастер |
| 1 |Ваш мастер был тираном, которого вы должны были победить в бою один на один, чтобы закончить обучение. |
| 2 |Ваш мастер был добрым и учил вас преследовать мирные цели. |
| 3 |Ваш мастер безжалостно заставлял вас превосходить себя. Вы чуть не потеряли глаз во время одной особенно жестокой тренировки. |
| 4 |Ваш мастер казался добросердечным, пока тренировал вас, но в конце концов предал монастырь. |
| 5 |Ваш хозяин был холоден и отстранен. Вы подозреваете, что вы можете быть родственниками. |
| 6 |Ваш мастер был добр, щедр и никогда не критиковал вас. Тем не менее вам кажется, что вам так и не удалось полностью оправдать его ожиданий. |
[img class="centerme" [https://i.imgur.com/Y6pmJz1.jpg]]
<<<
Лорд Дагулт Неверэмбер однажды спьяну сказал мне, что орки боятся своих богов и если разыграть эту карту верно, их можно контролировать при помощи страха и заставить плясать под свою дудку.
– Воло, //Справочник Воло по монстрам//
<<<
В страшном сне любого цивилизованного места мира вы можете почувствовать гром боевых барабанов за городскими воротами и услышать хор голосов, рычащих: «Груумш!». Не важно насколько прочны стены, умелы лучники или храбры рыцари – лишь несколько поселений на протяжении всей истории смогли выстоять перед крупномасштабным вторжением орков.
Каждый солдат, выживший в столкновении с орками, расскажет о противостоянии с громадным противником, который может расколоть череп воина единственным ударом, являющегося частью силы, что может пожинать врагов, словно серп колосья пшеницы. Только умелый и решительный герой может надеяться пережить поединок с орком.
Дикие и бесстрашные племена орков всегда находятся в поисках эльфов, дварфов и людей, чтобы уничтожить их. Мотив их ненависти к цивилизованным расам мира и необходимость утоления требований богов продиктован верой, что, если орки будут хорошо сражаться и принесут славу своему племени, Груумш призовет их на родной план Ахерон. Там в посмертии избранные присоединятся к Груумшу и его армии в их бесконечной межпланарной битве за превосходство.
---
!!!Боги орков
Орки верят, что их боги непобедимы. Они видят работу определяющих их и их богов принципов в повседневной жизни вокруг себя – природа поощряет сильных и беспощадно уничтожает слабых и нерешительных. Орки не столько уважают, сколько боятся своих богов: у каждого племени есть суеверия о том, как предотвратить их гнев и получить благословение. Эти укоренившиеся неуверенность и страх проявляются в форме дикости и жестокости; орки грабят и убивают в надежде успокоить богов и избежать их ужасного возмездия.
На вершине пантеона орков находится Груумш Одноглазый, тот, кто создал орков и продолжает управлять их судьбами. Ему помогают и содействуют другие божества-воины, Богтру и Илневал, которые приносят с собой силу и хитрость на поле боя. Последователи трех богов – налетчики и разрушители племени – часто являются единственными, кого видят жертвы племени.
В глубинах логова племени, далеко от горна войны, где воины собираются и празднуют, живут последователи Юртруса, бога болезни и смерти, и Шаргааса, бога темноты и неизвестности. Орки, слишком слабые для битв (из-за физической слабости, врожденных дефектов, ран или возраста), часто присоединяются к этим культам, спасаясь от ежедневных унижений, изгнания или смерти.
Жрицы Лутик, богини орков, олицетворяющей как жизнь, так и посмертие, выступают в качестве посредников между двумя частями племени. Именно ее поклонники растят молодых орков воинами, а затем, в конце их жизни, отводят их к Юртрусу и Шаргаасу, в смерть и великую неизвестность.
---
!!!Жизнь племени
Орки выживают благодаря своей дикости и числу. В их жизни нет места слабости, каждый воин должен быть достаточно сильным, чтобы взять то, что принадлежит ему по праву сильного. Орков не интересуют союзы, торговые переговоры или дипломатия. Их заботит лишь удовлетворение их неутолимой жажды битвы, поражение врагов и умиротворение их богов.
---
!!!Взрывная рождаемость
Орки необыкновенно быстро размножаются, чтобы восполнить потери от их бесконечных войн (и они не особенно разборчивы с кем спариваться, поэтому в мире можно обнаружить таких существ, как полуорки и огриллоны). Женщины, собирающиеся родить, освобождаются от работ, и отправляются в щенячий загон логова, где за ними ухаживают последователи Лутик.
Орки не вступают в брак, и не ищут себе пары до самого момента спаривания. Во всех остальных случаях мужчины и женщины более-менее равнодушны друг к другу. Все орки полагают, что спаривание является элементом жизненной необходимости, и не придают ему большего значения.
В возрасте 4 лет орк считается подростком, к 12 годам – полностью взрослым. Большинство орков редко доживает до 25 лет из-за болезней или войн, однако, он может дожить до 40 лет, оставаясь здоровым почти до самого конца. Божественное благословение Лутик может продлить жизнь орка, невзирая на то, что Груумша никогда не радует, когда она делает это, и не одобряет таких «благословленных».
---
!!!Будущие воины
Молодые орки быстро взрослеют в попытке пережить жестокое воспитание. Их ранние годы омрачены испытаниями силы, жестоким соперничеством и отсутствием материнской и отеческой любви. С того момента как ребенок сможет владеть палкой или грубым ножом, он самоутверждается и защищает себя сам, одновременно обучаясь сражаться, выживать в дикой природе, и бояться богов.
Дети, которые не смогли вынести суровость жизнь, наполненной битвами, отделяются от главной части племени, и передаются последователями Юртруса. Достигший зрелости орк воин хорошо подготовлен к жизни, полной сражений.
---
!!!Культура и верования орков
Орки живут в постоянном страхе пред богами, и это чувство глубоко пустило корни в их менталитете. Они считают, что повсюду в окружающем мире проявляются знаки воли их богов, и возлагают ответственность за выявление знаков и знамений, хороших и плохих, а также решение, как племени реагировать на них, на священников племени.
Как у расы, у орков отсутствуют примечательных общих социальных черт, кроме как некой схожести в использовании грубой письменности, распространенной среди всех орков, и в том, как они используют краску, чтобы украшать и характеризовать себя и свое жилище.
---
!!!Знамения и суеверия
Орки полагают, что любое, даже на первый взгляд неважное открытие или событие — следы когтей медведя на дереве, стая воронья или внезапный порыв ветра — могут быть посланием от богов. Если племя сталкивалось с таким предзнаменованием прежде, священники понимают, что оно может значить, но, если у божественного знака нет четкого объяснения, священнослужителям, возможно, придется медитировать в течение многих дней или часов, чтобы увидеть знамения, поясняющие его значение.
У каждой группы орков есть свои собственные суеверия и понимание определенных предзнаменования. Эти традиции меняются от племени к племени и часто основаны на событиях, имевших место в прошлом. Вот несколько примеров:
• Если дварф или человек перед смертью призывают своего бога, то нужно носить с собой уши трупа в течении трех дней, дабы отвести от себя возмездие, а затем похоронить или сжечь их.
• Три ворона всегда добрый знак.
• Если плюнуть там, где спишь, это принесет удачу.
• Если носить при себе кости гнома, то это даст защиту от болезней.
• Никогда не стойте внутри кольца камней, грибов или любого другого круга.
• Увидеть падающую звезду перед битвой – плохой знак. Чтобы защититься от него, нужно проглотить камень.
• Подношение эльфийских ушей приносит благосклонность Груумша
• Если закопать пять камней на рассвете перед долгим путешествием, то всегда можно найти путь назад к военному очагу.
• Топните ногой три раза и произнесите: «Груумш», чтобы оградиться от злой магии.
---
!!!Символьная коммуникация
У орков есть письменность, основанная на дварфийской, но, не будучи поголовно грамотными, они редко ведут записи или излагают свои мысли письменно. Если оркам необходимо что-то сообщить письменно, они используют грубые символы, передающие несложную информацию, такие как «здесь хранится еда», «опасность близко», «иди сюда». Группа орков, участвующая в набеге, может оставлять такие знаки на пути своего движения, в помощь воинам, путешествующим через эту область позднее. Горные проводники, друиды и следопыты могут быть знакомы с множеством таких символов, что предостерегает их вместе с подопечными от вторжения на территорию племени.
---
!!!Цвета завоевания
У трех цветов есть особое значение среди орков, они раскрашивают тела, имущество и убежища с помощью пигментов, которые дают эти цвета. Красная охра символизирует кровь, пепельно-белый представляет смерть, а угольно-черный обозначает тьму.
Неписанные законы, которые определяют статус отдельных орков в племени, указывают определенную степень, в которой цвета могут быть использованы для раскрашивания себя или своих вещей. Например, вождь одного племени может быть единственным, который имеет право окрасить свои клыки красной охрой, в то время как воины другого племени втирают полоски пепла в свою одежду, что символизирует безопасное возвращение с набега.
---
!!!Отыгрыш орка
Большинство орков ведут жизнь, полную разрушения и резни. Но в отличии от существ, чья натура злая от природы, таких как гноллы, возможно, что орк, оторванный от своей культуры, сможет развить в себе некоторое чувство любви, сострадания и сочувствия.
Не имеет значения, насколько одомашненным выглядит орк, в жилах у него по-прежнему течет орочья кровь. С его инстинктивной любовью к битвам и желанием доказать свою силу, орк, пытающийся жить в границах цивилизованности, сталкивается с трудной задачей.
---
!!!Имена орков
Имена орков не всегда что-то значат на их языке, а самые заслуживающие внимания личности получают прозвище от своих соплеменников.
''Мужские имена:'' Абзуг, Бажок, Гел, Груток, Денч, Джахрук, Имш, Кет, Краск, Лортар, Мобад, Мугруб, Муррен, Ронт, Рук, Рхог, Токк, Урзул, Фенг, Хенк, Холг, Шамок, Шамп, Шугог
''Женские имена:'' Багги, Вола, Волен, Евельда, Имен, Кансиф, Мев, Муай, Ниига, Овак, Оунка, Сута, Шаута, Эмен, Энгонг
''Прозвища:'' Глазодер, Грязный, Железный клык, Жестокий, Живодер, Копье смерти, Костелом, Молот Рока, Потрошитель,Рассекатель черепов, Хребтолом, Эльфийский мясник
---
!!!Больше об орках
Справочник Воло по монстрам, Глава 1: Происхождение монстров, Орки: Богоизбранные, с. 81
<<<
Настоящее достоинство паладина измеряется не в побежденных врагах или разграбленных подземельях. Оно измеряется в спасенных жизнях и сердцах, обращенных к милосердию и справедливости.
— Истеваль
<<<
Закованный в латы, сверкающие на солнце, несмотря на пыль и грязь долгого путешествия, человек складывает свой меч и щит и касается ладонями смертельно раненного мужчины. Божественное сияние исходит из его рук, и раны мужчины затягиваются, а глаза широко раскрываются в изумлении.
Дварф пригнулся к земле за камнем. Его чёрный плащ делал его почти невидимым в ночи, и он смотрел, как шайка орков праздновала недавнюю победу. Он тихо крадётся к ним и шепчет свою присягу, и двое орков умирают ещё до того, как понимают, что он здесь был.
Серебряные волосы сверкают в лучах света, которые, кажется, льются только на торжественно смеющегося эльфа. Его копьё вспыхивает, подобно его глазам, когда он снова и снова наносит удары уродливому великану, до тех пор, пока его свет не преодолевает отвратительную тьму.
Вне зависимости от происхождения и миссии, паладинов объединяет их клятва противостоять силам зла. Принесённая ли перед алтарём бога и заверенная священником, или же на священной поляне перед духами природы и феями, или в момент отчаяния и горя смерти, присяга паладина — могущественный договор. Это источник силы, который превращает набожного воина в благословенного героя.
Некоторые паладины посвящают себя непосредственно защите невинных и распространению правосудия в мире, тогда как другие пытаются достичь этого, покоряя тех, кто дерзнёт встать у них на пути, заставляя их преклониться перед законом.
И хотя в мире нельзя найти паладина, которого можно было бы назвать типичным, некоторая часть из них является узко мыслящими «твори-добро» деятелями, которые не собираются терпеть даже самое малое отклонение от их собственных взглядов. Паладины, которые вступили на путь искателей приключений, впрочем, редко остаются столь непреклонными в своих взглядах, хотя бы чтобы не отдаляться от своих компаньонов.
---
!!Источник праведности
Паладин клянётся защищать справедливость и праведность, отстаивать добродетели мира перед вторжениями тьмы, и охотиться на силы зла, где бы они ни скрывались. Разные паладины сосредотачиваются на различных аспектах праведности, но все они связаны клятвой, которая даёт им силы для совершения их священного дела. Многие паладины преданы богам добра, но сила паладина происходит скорее от собственного стремления к справедливости, чем от божества.
Паладины тренируются годами, чтобы обучиться навыкам боя, осваивая владение различными видами оружия и доспехов. Тем не менее, их воинские навыки вторичны по сравнению с магической силой, которой они обладают: силой исцелять больных и раненых, карать нечестивцев и нежить, защищать невинных и тех, кто присоединился к ним в борьбе за справедливость.
---
!!За мирской жизнью
Жизнь паладина - это жизнь искателя приключений. Пока тяжёлые травмы не сделают их инвалидами, паладины проживают жизнь на линии фронта мировой борьбы со злом. В рядах ополчений и армий мира мало представителей класса воин, и ещё меньшее количество простых людей могут претендовать на истинное звание паладина.
Услышав зов, эти бойцы оставляют прежнее ремесло и берут в руки оружие, чтобы бороться со злом. Иногда их клятвы приводят их на службу государям в качестве лидеров элитных групп рыцарей, но даже тогда их верность в первую очередь отдана делу праведности, а не короне или стране.
Ставшие искателями приключений паладины относятся к своему делу серьёзно. Поход в древние руины или пыльный склеп может быть обусловлен поиском более высокой цели, чем поход за сокровищами. Зло таится в подземельях и дремучих лесах, и даже самые скромные победы над ним могут удержать мировое равновесие от небытия.
---
!!Создание паладина
Наиболее важным аспектом персонажа-паладина является природа его священной миссии. Хотя классовые умения, связанные с вашей клятвой, не проявляются до достижения 3 уровня, приготовьтесь заранее, прочитав описание клятв. Вы преданный слуга добра, лояльный к богам справедливости и чести, святой рыцарь в сияющих доспехах, отважившийся идти вперёд, чтобы поразить зло? Вы доблестный чемпион света, лелеющий всё прекрасное, что выступает против тьмы, рыцарь, чья клятва старше, чем многие из богов? Или вы озлобленный одиночка, поклявшийся отомстить тем, кто совершил великое зло, посланный подобно ангелу смерти богами или обуреваемый личной необходимостью мести? Существует множество божеств, которым поклоняются паладины всей мультивселенной, например, Торм, Тир, Хейрониус, Паладайн, Кири-Джолит, Дол Арра, Серебряное Пламя, Багамут, Афина, Ра-Хорахти и Хеймдалль.
Как вы получили призыв к тому, чтобы стать паладином? Вы услышали шёпот невидимого бога или ангела во время молитвы? Другой паладин почувствовал ваш потенциал и решил тренировать вас в качестве оруженосца? Или случилось какое-то ужасное событие — уничтожение вашего дома, которое, возможно, послужило отправной точкой ваших исканий? Может быть, вы наткнулись в священной роще на тайный эльфийский анклав, и нашли себя в защите всех подобных убежищ добра и красоты? Или вы знали с самых ранних воспоминаний, что жизнь паладина была вашим призванием, подобно тому, как если бы вы были посланы в мир с целью, отпечатанной в вашей душе.
Противостоящие силам зла паладины редко имеют любое злое мировоззрение. Большинство из них следует пути милосердия и справедливости. Подумайте, как ваше мировоззрение ведёт вас по пути святого задания, и каким образом оно определяет поведение перед богами и смертными. Ваша клятва и мировоззрение могут находиться в гармонии, или ваша клятва может представлять стандарты поведения, которых вы ещё не достигли.
Вы можете доработать своего персонажа-паладина, используя приведенные ниже рекомендации. Важно помнить, что большинство паладинов - не роботы. У них есть сомнения, предрассудки и противоречивые мысли, как и у любого другого персонажа. Некоторые из них руководствуются внутренними мотивами, которые иногда могут противоречить принципам их клятвы.
---
!!!Личные цели
Слова клятвы паладина определяют предназначение персонажа и диктуют конечную цель или общее намерение, которому паладин следует и которого он добивается. Кроме этого, некоторые паладины движимы личными целями, которые либо совпадают, либо идут вразрез с догматами их клятвы. Паладины, принявшие различные клятвы, могут иметь одинаковые личные цели, различаясь только тем, как они действуют на пути к этим целям, придерживаясь принесенных обетов.
Если ваш персонаж паладин имеет личную цель, она может происходить из какого-то жизненного события и потому может не быть напрямую связана с клятвой.
| !к6 |!Цель |
| 1 |''Мир.'' Вы сражаетесь, чтобы будущим поколениям не пришлось этого делать. |
| 2 |''Месть.'' Ваша клятва служит лишь средством, с помощью которого вы собираетесь исправить древнюю несправедливость. |
| 3 |''Долг.'' Вы живёте, чтобы служить тому, чему принесли клятву, и умрёте ради этого. |
| 4 |''Лидерство.'' Вы собираетесь победить в великой битве, о которой будут петь барды, тем самым вы станете примером, вдохновляющим других. |
| 5 |''Вера.'' Вы знаете, что ваш путь праведный, ведь иначе боги не направили бы вас по нему. |
| 6 |''Слава.'' Вы приведёте мир в новую великую эру, которая будет отмечена вашим именем. |
---
!!!Символ
Паладины помнят о влиянии символов, и многие из них принимают или создают художественное украшение, несущее отличительный знак. Ваш символ служит воплощением принятой вами клятвы и доносит ее до окружающих, как друзей, так и врагов.
Ваш символ может быть изображён на штандарте, флаге или одежде, которые видны всем. Или он может быть менее очевиден и быть выполнен в виде подвески или безделушки, которую вы носите при себе.
| !к6 |!Символ |
| 1 |Дракон, символ вашего благородства в мирное время и свирепости в бою. |
| 2 |Сжатый кулак, показывающий вашу постоянную готовность сражаться за свои убеждения. |
| 3 |Поднятая вверх открытая рука, указывающая на ваше предпочтение дипломатии над боем. |
| 4 |Красное сердце, показывающее миру вашу приверженность справедливости. |
| 5 |Чёрное сердце, символизирующее, что эмоции вроде жалости не мешают вашей приверженности клятве. |
| 6 |Немигающее око, означающее, что вы всегда находитесь на страже вашего дела от угроз. |
---
!!!Супостат
Приверженность священной клятве требует, от паладинов активной позиции в распространении своих убеждений в мире. Эта деятельность, естественно, приводит к конфликтам с существами или сущностями, которые противостоят этим убеждениям. Среди этих противников часто выделяется один, который является самым настойчивым или самым грозным врагом паладина - супостат, присутствие или влияние которого является постоянным фактором в жизни паладина.
У вашего персонажа-паладина может быть враг, который появился еще до того, как вы встали на этот путь. Либо вы можете стать целью из-за того, что вступив на путь паладина вы немедленно привлекли внимание тех, кто был против этого. Если у вас есть личный супостат, то кто или что это? Кого, среди своих врагов вы считаете наибольшей угрозой в достижении собственных целей?
| !к6 |!Супостат |
| 1 |Могучий вождь орков, угрожающий уничтожить и растоптать всё, что для вас священно. |
| 2 |Исчадие или небожитель, посланник Внешних Планов, который намеревается развратить или, наоборот, наставить вас на путь искупления, соответственно. |
| 3 |Дракон, чьи слуги идут по вашему следу. |
| 4 |Первосвященник, который считает вас запутавшимся глупцом и желающий, чтобы вы оставили свою религию. |
| 5 |Соперник-паладин, обучавшийся вместе с вами, но ставший клятвопреступником и считающий вас виновным в этом. |
| 6 |Вампир, который поклялся отомстить всем паладинам после того, как был побеждён одним из них. |
---
!!!Искушение
Хотя паладины преданы своим клятвам, они всё ещё являются смертными, а потому у них есть недостатки. Многие из них демонстрируют поведение или отношение, не соответствующее их высоким идеалам или их призванию.
Что служит искушением, которому подвергается ваш персонаж и чему он с трудом может противиться?
| !к6 |!Искушение |
| 1 |''Гнев.'' Когда гнев охватывает вас, вы не можете трезво мыслить и боитесь, что можете сделать что-то, о чём позже пожалеете. |
| 2 |''Гордыня.'' Ваши дела достойны того, чтобы их заметили, но никто не говорит о них так часто, как вы. |
| 3 |''Похоть.'' Вы не можете пройти мимо миловидного личика или хорошенькой улыбки. |
| 4 |''Зависть.'' Вы завидуете достижениям некоторых известных личностей и чувствуете себя неполноценно, когда ваши дела не могут сравниться с ними. |
| 5 |''Отчаяние.'' Вы считаете силы врагов, которых вам предстоит победить, слишком большими, и, подчас, вы не видите пути к победе. |
| 6 |''Алчность.'' Независимо от того, сколько славы и сокровищ вы добыли, этого всегда мало. |
[img class="centerme" [https://i.imgur.com/8EDssB3.jpg]]
<<<
Long ago there was a woman named Jes, and she had one hundred children. Her rivals conspired against her and swore to kill her children. Jes begged the Sovereigns for help, but their only answer was the wind and rain. In the depths of her despair, a lonely traveler took her hand. "I will protect your children if they follow my path. Let them wander the world. They may be shunned and feared, but they will never be destroyed." Jes agreed, and the traveler gave her his cloak. When she draped it over her children, their old faces melted away and they could be whoever they wanted to be. And so it remains. Though the children are shunned by all, the gift of the Traveler protects them still.
— Chance, changeling priest
<<<
Changelings can shift their forms with a thought. Many changelings use this gift as a form of artistic and emo tional expression. It's also an invaluable tool for grifters, spies, and others who wish to deceive. This leads many people to treat changelings with suspicion.
<<<
I will protect your children if they follow my path. Let them wander the world. None will know them. They will have no kingdom but the road, and no enemy will find them. They may be shunned by all, but they will never be destroyed.
<<<
These are said to be the words of the Traveler, a promise that was made to the first changelings bestowed with the gift of shapeshifting. Many changelings still live according to these principles—wandering clans that remain hidden from the world. But there are an ever-increasing number of changelings who chose to live in the open. As a changeling adventurer, you may use your gifts to fool your enemies—but do you show your true face to your companions?
---
!!!Changeling Origins
Changelings are spread across Khorvaire and Sarlona. They can interbreed with many other humanoid species, and the offspring of such a union will either be changeling or the other species—there are no “half-changelings.” So just as you can be a Brelish elf with no ties to Aerenal, you can be a changeling with no connection to any changeling culture or community. There are changeling students in Arcanix and Morgrave, changeling agents in the King’s Citadel and the Royal Eyes of Aundair, and any number of changelings devoted to the nations they call home. So you don’t //need// deep cultural ties to play a changeling character, but if you want to explore a connection to your changeling roots, here are a few ideas.
''Travelers ''
Nomadic changelings are often referred to as “travelers,” a name referencing both to their wandering lifestyle as well as the Traveler of the Dark Six—who, legend holds, gave them the ability to change their form, and whose chaotic nature is echoed in the lives of many travelers today.
The oldest traveler tradition is that of the Children of Jes. Inspired by the Traveler, the Children follow migratory patterns that slowly evolve, keeping them from becoming too predictable to outsiders. Many travel in small groups—a troupe of entertainers, a merchant convoy, a stagecoach of exotic travelers. Others prefer to travel alone. Regardless, they believe in the importance of change, taking on many personas during their wanderings. Tinker, bard, courier, and priest are common roles, and the changeling might well be quite talented at their trade. Traveler priests can preach a sermon to the Host in the morning and lead Flamesong in the evening. As they conceal their true changeling nature, Children are usually invisible to the people around them; they use a secret language of tattoos and scars to identify one another, along with a set of shared personas.
Few people in the Five Nations understand the culture and values held by changeling travelers. Some are unnerved by the concept of a hidden culture, that a stranger might not be the human or hobgoblin they appear to be. Others assume that because changelings have the uncanny ability to change their faces at will, that they will use it for malevolent ends, cheating honest folk before moving on. Changeling traditions predate Galifar and its laws, and indeed, some deem it fair to “obtain” another’s possessions as long as they’re replaced with a gift of equal value. And a few travelers assert the Traveler’s blessing is their license to prey on the “single-skins”—a term for races lacking the changeling gift for shapeshifting. However, travelers are no more innately dishonest than any other people—whether dragonmarked heir or Gatekeeper druid—though those that respect local customs are still subject to much suspicion due to their shapeshifting abilities and nomadic preferences.
As a player character, the changeling traveler background can allow you to be part of a secretive network of changelings spread across the nation. As a DM, you could present the Children as a stereotypical source of thieves and charlatans. But they could be more enigmatic— an unexpected ally that can appear almost anywhere.
''Stable Changelings''
Under the rule of Galifar, many changelings chose to emerge from the shadows and live in the open, and today they can be found in most major cities of the Five Nations. Changelings in stable communities—such as Dragoneyes in Sharn or the Blackleaf district of Wroat—rarely hide their true nature. This allows them to sell their services openly and to pursue careers that make use of their unique talents, as explored in the “Changeling Careers” sidebar. However, many still make use of shared personas, and outsiders can be confused by the changelings’ fluid relationship with identity. Settled changelings don’t face the same level of prejudice as travelers, but there are still many single-skins who believe no changeling can be trusted.
In addition to changeling neighborhoods in the cities of the Five Nations, there are two unique changeling cultures. The Gray Tide principality of the Lhazaar Principalities is a nation of changelings with a strong mercantile tradition; some say that the Gray Tide engages in a great deal of piracy, using their shapeshifting gifts to shift the blame to other princes. In Droaam, changelings are said to have a stronghold in the city of Lost. However, no outsider knows the location of Lost, and it’s said that the city itself is alive, and can freely move and change its shape. Regardless, the changelings of Lost have been strong allies of the Daughters of Sora Kell, and changelings can be found serving Daask.
As a player character, a stable background gives you a place to call home and allows you to be open about your true nature. As a DM, a changeling community can be an interesting backdrop for an adventure or an easy place to find changeling services.
''Passers ''
While changelings are well represented in the major cities, there are many villages and towns where they’re treated with fear and suspicion. You might have been born into such a community, possibly never even knowing another changeling. As a passer, you’ve crafted a single identity that you consider to be your true face. You may live your entire life as a human warrior or an elf priest, engaging your shapeshifting abilities only as a last resort.
If you grew up as a passer, how do you live today? Do you want to learn more about other changeling cultures, or do you deny any connection to other changelings? Do you acknowledge your changeling nature, or do you consider your passer identity to be your true self? Do you pretend that your changeling abilities come from another source—claiming that your nonmagical cap is a //hat of disguise// or pretending that you’re casting //disguise self// when you shapeshift?
Passer can be an interesting choice for an urchin, outlander, or a changeling who’s lived through oppression and is only now coming to understand their true nature. With NPCs, passers can add an element of chaos—if a slain villain is revealed as a changeling, did they use a body double and escape, or was the villain always a passer?
''Others ''
Changelings are as diverse as any other species, presenting many other cultures and paths you could explore. //Reality seekers// are settled changelings who prefer their natural form and avoid deception, instead searching for the ultimate truth. //Becomers// actively seek to live many lives in order to more fully understand the experiences of others. The Cabinet of Faces is a secret society devoted to the Traveler, and its members actively seek to challenge traditions and cause chaos. Do you have ties to any of these movements?
---
!!!Personas
For a changeling, an identity is like a set of clothes. Within a changeling community, a persona may serve the same role a badge of office or uniform would for a human. The local priest is Father Hes. The sheriff is Big Dol. The healer is Lela. Whoever takes on the job assumes that persona. There may be three different priests, but whoever is currently on duty assumes the identity of Hes. In part, this is visual, but it’s also about adopting a personality—not just looking like Father Hes, but //becoming //Father Hes, giving the people a sense of continuity.
This is especially important for the traveling clans. Travelers use well-established personas as anchors in potentially hostile communities. A trusted merchant, a beloved storyteller, or a reliable mercenary—any traveler can use one of these established personas to ensure a warm welcome. Of course, when using an established persona, it’s up to you to preserve its reputation. If you’re exposed as a changeling or if you ruin the reputation of the persona, you’re destroying a valuable tool.
Many changelings develop their own unique personas. If you’re a fighter with proficiency in the violin, you might use a grim half-orc form in combat and an elegant elf when you play the violin. You’re not //required //to use a persona—the violinist could fight in their elf form—but the persona can serve as a way to focus on that particular skill. The Focused Personas feat in chapter 6 provides a concrete reflection of this.
---
!!!Changeling Careers
People often think of the shapeshifting talents of the changeling as a tool for deception. But in places where changelings live openly, including Droaam and the major cities of the Five Nations, there are many practical uses for shapeshifting. Changelings have long dominated the industry of paid companionship, using their talents to fulfill fantasies. While this can be sexual, there are many other changeling companions who specialize in giving a client the opportunity to have a meal or conversation with a distant loved one, or to practice a difficult conversation with a changeling stand-in. Many artists use changelings as versatile models. Changelings can also often be found as beauticians; in addition to possessing a deep understanding of the shifting nature of appearance, a changeling can use their own form as a palette on which to perfect the look a client is aiming for.
Impersonation is also a viable career. Do you need to be in two places at once? Do you want a local celebrity to appear at your child’s birthday party? Hire a changeling impersonator. The Defender’s Guild of House Deneith has recently begun training and licensing elite changeling bodyguards, capable of serving as body doubles or posing as harmless bystanders until needed.
Many changelings pursue a career in entertainment. After all, a changeling with the proper //shiftweave// outfit can play five roles! However, House Thuranni and House Phiarlan have been accused of denying opportunities to changelings. In licensed Phiarlan companies, changelings are typically relegated to serving as understudies and stunt doubles for dragonmarked superstars.
---
!!!Casual Shapechanging
As a changeling, consider that your ability to shapechange is a natural reflex for you. It doesn’t have to be used for impersonation or deception. You can change your hair color or style on a whim, shift your eye color to suit your mood, even create artistic patterns on your skin. When you make a face to express an emotion, it can be any face. Are you making a rude gesture? Well, what sort of hand do you want to use to do it? Shapeshifting gives you many creative opportunities; don’t be afraid to use them!
---
!!!Changeling Concepts
You could create a character of any class and background who just happens to be a changeling—or you can create a character whose concept is integrally tied to your identity as a changeling. However, you can have an equally interesting story with a character of any background or class, instead adjusting the “fluff”—the cosmetic details or backstory of a class—to fit an idea. While the following ideas don’t require any modification to the mechanical rules of a class, it’s always a good idea to discuss any exotic concept with your DM to make sure it fits the campaign.
---
!!!The Aberrant Sorcerer
An aberrant dragonmark grants dangerous power. What if you found a way to use your natural powers to transform your mark—and in so doing, to change the powers it grants you? The Wild Magic sorcerous origin could reflect the idea that you’re not entirely in control of your abilities, still learning what you can do and how to control it. Acquiring new spells might reflect your ability to reshape your mark into new configurations.
Such an ability would be unprecedented—dragonmarks resist any effort at modification or replication. If you can alter your aberrant mark’s form, could you one day replicate the powers of a true mark? Does this gift mean that you have a special role to play in the Draconic Prophecy, or could your powers be part of an experiment tied to the daelkyr or a group of rogue dragons? If you take the hermit background, this could be the foundation of your Discovery feature. Whatever the truth, you’ll surely be of interest to the dragonmarked houses and House Tarkanan.
---
!!!The Changeling Changeling
In many places, it’s possible to pass between Eberron and Thelanis, and countless stories are told of children stolen away by the fey. As a child, perhaps you wandered through such a portal, finding yourself in the Faerie Court. After a decade in Thelanis, you’ve returned as an agent of one of the mighty archfey . . . a changeling changeling.
This is a logical path for a warlock with an Archfey patron, and could also work with a bard (likely following the College of Glamour). Your powers reflect both the gifts of your patron and tricks you learned growing up in Thelanis. The archfey isn’t just your patron, they’re your surrogate family. Have you returned with a specific mission to fulfill? Or are you just reacclimatizing to the world and waiting for your purpose to be revealed?
As a changeling changeling, you’re an outsider, used to living in a world of fairytale logic and still learning how the world works. The outlander background is one option, reflecting a childhood spent roaming the trackless forests of Thelanis. The hermit background is another logical choice; your Discovery could be a revelation shared with you by your patron. Another path would be to say that you returned to the Material Plane some time ago— perhaps you’ve earned a reputation as an entertainer by playing the music of the Feywild, or become a folk hero using your fey magic.
---
!!!The Fraud
You’ve taken the noble background. You’re the proud scion of a noble family . . . except you’re not. You’re a changeling body double hired by a young noble to take their place, and they never returned to take it back. It’s not a bad life, you take your responsibilities seriously, and you’re //good //at it—far better than the person you replaced. But you’re not who you appear to be. How does this impact your career as an adventurer? Did you know your fellow adventurers before you became a noble fraud? Do you have an entirely separate persona you use while adventuring, or are you adventuring in the guise of the noble?
While the noble is a sound choice for this story, many other backgrounds could work as well. You were the understudy for a famous entertainer who died in a mysterious accident; now you’re sought By Popular Demand, but your fame is based on someone else’s face and talent. Or you could be a spy’s contact now forced to complete their mission. Any class could work with this story—regardless, you’ve taken on someone else’s identity and this comes both with benefits and grave responsibilities.
---
!!!The Menagerie
As a changeling, you can assume the shape of any humanoid. What if you discovered that this was just a fraction of what you were capable of—that you could assume animal forms as well? As a Circle of the Moon druid, you could assert that your spells and shapechanging powers don’t reflect a bond to nature, but rather an evolution of your natural abilities. Spells such as longstrider, darkvision, and barkskin could all be explained as evolved shapeshifting, while charm person or hold person could reflect psychic talents.
If you want to play up this idea of having druidic powers with no ties to druidic traditions, you could talk to your DM about replacing the Druidic language feature. If you take the criminal background, the DM might allow you to replace it with thieves’ cant; another option would be skin cant, described in the changeling traveler background. If neither of these fit, you could likely exchange it for another uncommon language.
Like the aberrant sorcerer, a changeling menagerie possesses an unusual talent. As you gain levels, you’re unlocking more gifts. Are you intrigued by this mystery and what you could become? Or is your shapeshifting simply a useful tool for you?
---
!!!The Pantheist
The wandering priest is an easy role for the changeling traveler; pick a faith you know will receive a warm welcome in your town, preach a sermon for your supper, and move on in the morning. If you started on this path, you could have a shiftweave garment with vestments for the Host, the Flame, and the Blood of Vol, all ready to go. But while you may have started as a charlatan, something odd happened—you found faith. You trust that the Sovereigns are watching over you; you believe that that the Silver Flame strengthens champions of the light; when you adopt an elf form, you even feel a surge of devotion for the Undying Court. When you adopt the trappings of a faith, you feel a connection to it. You’ve had visions tied to every faith, and the magic flows through you. As far as you’re concerned, all the faiths are real; it’s just about picking the right faith for the job.
The simplest way to approach this concept is to pick a fairly general domain—such as Life—and to make your transformations largely cosmetic, a foundation for roleplaying. When you expect to be going into battle, shift your trappings to Dol Dorn. Fighting lycanthropes? Turn to the Silver Flame. About to speak to the dead? Time to call on the Blood of Vol. In taking on all these faiths, you are deeply empathetic, you accept all beliefs as valid, and you seek to help people of different faiths understand one another. Another possibility, if your DM likes the idea, is that you can receive divine visions based on the faith you’re currently embodying. Adopting Onatar’s trappings won’t give you the mechanical benefits of the Forge domain, but you may receive a vision from the Sovereign. Again, this is purely a story idea—and it’s always possible that your divine visions are just deep-rooted delusions!
---
!!!Changeling names
A changeling might use a different name for each mask and persona and adopt new names as easily as they change faces. The true name of a changeling tends to be simple and monosyllabic; however, there are often accents to a changeling's name that are expressed through shapeshifting, something single-skins will likely miss. So, two changelings might have the name //Jin//, but one is //Jin-with-vivid-blue-eyes// and one is //Jin-with-golden-nails//.
Changelings have a fluid relationship with gender, seeing it as one characteristic to change among many.
''Changeling Names:'' Aunn, Bin, Cas, Dox, Fie, Hars, Jin, Lam, Mas, Nix, Ot, Paik, Ruz, Sim, Toox, Vil, Yug
Смерть не всегда является концом. Перерождённые являются примером этого, будучи лицами, которые умерли, но каким-то образом все еще живут. Некоторые перерождённые демонстрируют шрамы от фатального исхода, их пепельная плоть или бескровные вены ясно дают понять, что их коснулась смерть. Другие перерождённые - это чудеса магии или науки, сшитые из разрозненных существ или несущие таинственный разум в искусственных телах. Каким бы ни было их прошлое, перерождённые познают новую жизнь и ищут свой собственный путь и ответы.
---
!!!Потускневшие воспоминания
Перерождённые страдают от некоторой неполноценности, от прерывания их жизни или физического состояния, с которым их разум не в состоянии справиться. Их воспоминания о событиях, предшествовавших прерыванию, часто расплывчаты или отсутствуют. Иногда самые неожиданные события могут вызвать ощущения или видения прошлого.
Перерождённые регулярно размышляют о прошлом, надеясь на какое-то откровение о том, что было раньше. Чаще всего это темные, безмолвные периоды. Но иногда, в момент покоя, стресса или волнения, перерождённый получает представление о том, что было раньше. Когда вы захотите получить такое сноподобное видение, совершите бросок по таблице ниже, чтобы вдохнуть в него подробности.
| !к6 |!Воспоминание |
| 1 |Вы вспоминаете физически болезненный момент. С какой отметиной или шрамом на вашем теле он связан? |
| 2 |Воспоминание вызывает у вас слезы на глазах. Это горькое или радостное воспоминание? Вызывает ли оно у вас те же чувства? |
| 3 |Вы вспоминаете событие из детства. Что в том событии или в том, кем вы были, до сих пор влияет на вас? |
| 4 |Воспоминание приносит с собой голос когда-то близкого вам человека. Что он вам советует? |
| 5 |Вы вспоминаете, как вам нравилось что-то, чего вы не можете вынести сейчас. Что это? Почему вам это не нравится сейчас? |
| 6 |Воспоминание несет в себе яркий запах или ощущение. Что вы собираетесь сделать, чтобы воссоздать эти ощущения? |
---
!!!Происхождение перерождённого
Перерождённые могут возникнуть при таких же обстоятельствах, как и различные виды нежити или конструктов. В таблице ниже можно найти предположения о том, как ваш персонаж стал перерождённым.
| !к8 |!Происхождение |
| 1 |Вы были воскрешены магическим образом, но что-то пошло не так. |
| 2 |Швы скрепили несочетаемые части вашего тела, а ваши воспоминания относятся к нескольким разным жизням. |
| 3 |Выбравшись из могилы, вы поняли, что у вас нет никаких воспоминаний, кроме одного имени. |
| 4 |Вы много лет были неживым слугой некроманта. Однажды к вам вернулось сознание. |
| 5 |Вы очнулись в заброшенной лаборатории рядом со сложными чертежами механических органов. |
| 6 |Вы были освобождены после того, как окаменели на несколько поколений. Однако ваши воспоминания поблекли, и ваше тело уже не то, что было раньше. |
| 7 |В вашем теле живет одержимый дух, который делится своими воспоминаниями и заменяет ваши отсутствующие конечности призрачными. |
| 8 |На людях вы ведете себя как ничем не примечательный человек, но вы чувствуете, как внутри вас зудит соломенная набивка. |
<<<
Люди забывают, что сам смысл спуска в пыльную гробницу – вынести оттуда спрятанные там сокровища. Драки для дураков. Мертвецы не могут потратить свои состояния.
— Барнабас Клинкорез
<<<
Дав спутникам сигнал ждать, полурослик крадётся по подземному залу. Он прижимает ухо к двери, потом вытаскивает набор инструментов и вскрывает замок в мгновение ока. Затем он исчезает в тени, пока его друг воин идёт вперёд, чтобы пинком открыть дверь.
Человек скрывается в тени переулка, в то время как его сообщница готовит свою часть засады. Когда их цель — известный работорговец — проходит по переулку, сообщница издаёт крик, работорговец начинает выяснять, что произошло, и лезвие убийцы перерезает его горло прежде, чем он может издать звук.
Подавив смешок, гномка шевелит пальцами и с помощью магии снимает ключи с пояса охранника. Через миг ключи в её руке, дверь камеры открыта, она и её спутники могут спокойно совершать побег.
Плуты полагаются на мастерство, скрытность и уязвимые места врагов, чтобы взять верх в любой ситуации. У них достаточно сноровки для нахождения решения в любой ситуации, демонстрируя находчивость и гибкость, которые являются краеугольным камнем любой успешной группы искателей приключений.
Некоторые плуты, обратившиеся к приключениям, – бывшие преступники, решившие, что лучше уворачиваться от монстров, чем от рук закона. Иные же – профессиональные убийцы, находящиеся в поиске прибыльного применения своих талантов между заказами. А другие просто любят мандраж преодоления опасностей, встающих на пути.
В приключениях плуты вероятно будут проявлять смесь явственно осторожного подхода – немногие плуты любят битвы – с неутолимой жаждой наживы. В большинстве случаев по мнению плута использование оружия против существа имеет целью не убить это существо, а стать новым владельцем его сокровищ.
---
!!Навык и точность
Плуты прилагают больше усилий для освоения различных навыков, а также совершенствуют свои боевые способности, дающие им большой набор приёмов, каким мало какие персонажи могут похвастаться. Многие плуты сосредотачиваются на скрытности и обмане, в то время как другие совершенствуют навыки, помогающие им в подземельях, такие как лазание, поиск и обезвреживание ловушек, и вскрытие замков.
Когда дело доходит до боя, плуты отдают предпочтение хитрости, а не грубой силе. Плуту достаточно сделать один точный удар туда, где нападение наиболее повредит цели, а не одолевать врага шквалом атак. Плуты обладают почти сверхъестественной ловкостью для избегания опасностей, а некоторые обучились магическим трюкам в дополнение к своим способностям.
---
!!Теневая жизнь
В каждом городе и посёлке есть своя доля плутов. Большинство из них живёт согласно худшим стереотипам класса, зарабатывая на жизнь грабежами, убийствами, срезанием кошельков и мошенничеством. Часто эти негодяи объединяются в гильдии воров или преступные кланы. Многие плуты действуют самостоятельно, но и они иногда берут учеников, помогающих в мошенничестве и грабеже. Некоторые плуты живут честной жизнью слесарей, следователей или крысоловов, работа которых очень опасна из-за обитающих в канализации лютых крыс и веркрыс.
Плуты искатели приключений встречаются по обе стороны закона. Часть из них — закоренелые преступники, которые решили искать удачу и клады, а другая часть живёт жизнью искателей приключений, чтобы уйти от закона. Некоторые обрели и усовершенствовали свои навыки с целью проникновения в древние руины и скрытые склепы в поисках сокровищ.
---
!!Создание плута
Создавая персонажа плута, учитывайте отношение персонажа к закону. Есть ли у вас криминальное прошлое или настоящее? Вы в бегах от закона или от разъярённой гильдии воров? Или вы ушли из своей гильдии в поисках б//о//льших опасностей и б//о//льших вознаграждений? Движет ли вами во время приключений жадность, или какие-либо другие желания и идеалы?
Что послужило причиной, которая увела вас прочь от прошлой жизни? Грандиозное мошенничество или ограбление пошло настолько неправильно, что заставило вас изменить взгляд на ваше ремесло? Может, удача улыбнулась вам, и успешное ограбление дало деньги, которые были вам нужны для побега от убогой жизни. Страсть к путешествиям наконец позвала вас прочь от вашего дома? Возможно, вы обнаружили себя отрезанным от семьи или наставника, и вы должны найти новые средства поддержки. Или, может быть, вы обрели нового друга — другого члена группы искателей приключений — который показал вам новые возможности для заработка, используя ваши особые таланты.
В следующих разделах рассматриваются некоторые аспекты того, что значит быть плутом, которые вы можете использовать для придания глубины своему персонажу.
---
!!!Пагубные пристрастия
Большинство того, что делают плуты, крутится вокруг того, чтобы обрести сокровища и не дать сделать это другим. На пути к таким целям мало что встает кроме того, что многие плуты бывают уведены с этого пути тягой, затуманивающей их мысли, – непреодолимой нуждой, которая должна быть удовлетворена, даже если это рискованно.
Пагубным пристрастием плута может быть обретение физического предмета, что-то, что можно ощутить или испытать, или манера вести себя в определенные моменты. Один плут может быть не способен пройти мимо добычи, сделанной, например, из серебра, даже если эта добыча болтается на шее стражника замка. Другой не может прожить ни дня в городе, не срезав пару кошельков, просто ради практики.
Какому искушению не может не поддаться ваш персонаж-плут, когда представляется такая возможность, даже если это будет означать неприятности для вас и ваших компаньонов?
| !к6 |!Пристрастие |
| 1 |Крупные драгоценные камни |
| 2 |Улыбка смазливой мордашки |
| 3 |Новое кольцо на палец |
| 4 |Возможность уязвить чье-то эго |
| 5 |Изысканнейшая еда и напитки |
| 6 |Пополнение коллекции экзотических монет |
---
!!!Противник
Естественно, что тем, кто насаждает закон, суждено вступить в конфликт с теми, кто его нарушает, и редкий плут не фигурирует на хотя бы одном плакате «разыскивается». Помимо этого, сама природа их профессии предполагает, что плуты часто контактируют с криминальными элементами по собственному желанию или ввиду необходимости. Некоторые из таких личностей также могут стать противниками, и разобраться с ними будет посложнее, чем со среднестатистическим членом городской стражи.
Если предыстория вашего персонажа еще не включает подобную личность, вы можете вместе со своим Мастером придумать причину появления противника в вашей жизни. Возможно, вы уже некоторое время были предметом внимания кого-то, кто планирует использовать вас в своих злобных целях, и о ком вам стало известно только сейчас. Такое происшествие может стать основой будущего приключения.
Есть ли у вашего персонажа-плута противник, который тоже оказался преступником? Если так, как их взаимоотношения влияют на жизнь персонажа?
| !к6 |!Противник |
| 1 |Капитан пиратов, на корабле которого вы когда-то служили. То, что вы считаете переменой деятельности, капитан счел бунтом. |
| 2 |Шпион, которому вы по незнанию передали неверную информацию, что привело к убийству неверной цели. |
| 3 |Глава местной воровской гильдии, который требует, чтобы вы в нее вступили или убирались из города. |
| 4 |Коллекционер, который нелегальными путями приобретает шедевры. |
| 5 |Скупщик краденого, который использует вас как посланника для организации подпольных встреч и сделок. |
| 6 |Владелец незаконной арены боев, где вы когда-то делали ставки. |
---
!!!Благодетель
Немногие плуты добиваются в жизни успеха без чьей-то помощи, а это значит, что в результате они оказываются в большом долгу у такого благодетеля.
Если предыстория вашего персонажа еще не включает подобную личность, то совместно со своим Мастером вы можете придумать, как благодетель появился в жизни персонажа. Возможно, вам помогло что-то, что сделал для вас благодетель без вашего ведома, и только сейчас вы узнали об этом благодетеле. Кто помог вам в прошлом, знали ли вы об этом тогда, и что вы должны ему в качестве компенсации?
| !к6 |!Благодетель |
| 1 |Контрабандист помог вам избежать поимки, но из-за этого потерял ценный груз. Теперь вы должны ему услугу эквивалентной ценности. |
| 2 |Король Бездомных много раз скрывал вас от преследования в обмен на ответную помощь в будущем. |
| 3 |Городской глава однажды помог вам избежать тюрьмы в обмен на информацию о могущественном криминальном боссе. |
| 4 |Ваши родители использовали все свои сбережения, чтобы вытащить вас из беды в вашей юности, и теперь из-за этого бедствуют. |
| 5 |Дракон не съел вас, хотя мог, а в обмен вы обещали оставлять для него самые лакомые кусочки в найденных сокровищах. |
| 6 |Однажды друид помог вам выбраться из затруднительной ситуации; теперь любое случайно встреченное животное может оказаться этим друидом, пришедшим просить об ответной помощи. |
[img class="centerme" [https://i.imgur.com/rLgAHX1.jpg]]
Широкая распространённость людей и их способность давать потомство от представителей других гуманоидных рас породили множество гибридов-полулюдей. Ниже описаны самые распространённые из них.
<<tabs "[tag[Полулюди]]" "Полудварфы" "$:/state/tab1">>
<<<
Реджис, единственный полурослик на протяжении сотен миль, в какую сторону ни посмотри, сцепил ладони за головой и откинулся на густо заросший мхом ствол дерева. Реджис был чрезвычайно мал ростом даже по меркам собственного весьма миниатюрного народца. Верхние кончики волос его торчавшей во все стороны буйной гривы едва достигали трёх футов, однако живот Реджиса ясно свидетельствовал о том, что его обладатель любит съесть хороший обед, а то и несколько, смотря по обстоятельствам. Длинная кривая палка, служившая Реджису удилищем, приподнялась, чуть дрогнула, пристроилась поудобнее между мохнатыми пальцами полурослика и повисла над спокойными водами, безупречно отражаясь в зеркальной поверхности озера.
— Р. А. Сальваторе, //Магический кристалл //
<<<
Целью большинства полуросликов является домашний уют. Место, где можно поселиться в покое и тишине, подальше от мародёрствующих чудовищ и сражающихся армий. Огонь очага, сытная пища, добрая выпивка и добрая беседа. Хотя некоторые полурослики проживают свой век в удалённых сельских общинах, другие сбиваются в постоянно кочующие общины, влекомые открытыми дорогами, широкими горизонтами и возможностью открыть чудеса новых мест и новых людей. Но даже такие кочевники любят покой, вкусную еду, свой очаг и свой дом, даже если это повозка, трясущаяся по пыльной дороге или плот, плывущий по течению реки.
---
!!!Маленькие и практичные
Крошечные полурослики выживают в мире, полном более крупных существ, стараясь избегать внимания, а если это оказывается невозможным, то избегая враждебности. Имея рост около 90 см, они кажутся относительно безвредными, и благодаря этому успешно существуют столетиями, оставаясь в тени империй, войн и политической борьбы. Они склонны к полноте, и весят около 20 кг.
Кожа у полуросликов встречается от смуглой до бледной, с румянцем. Волосы обычно коричневые или рыже-коричневые, вьющиеся. Глаза полуросликов карие или ореховые. Мужчины часто отпускают длинные бакенбарды, но бороды носят редко, а усы тем более. Они любят носить простую, удобную одежду, предпочитая яркие цвета.
Практичность полуросликов распространяется не только на их одежду. Они довольствуются удовлетворением основных потребностей и простых радостей, уделяя совсем мало внимания роскоши. Даже богатейшие из них предпочитают хранить своё добро в закрытых сундуках и подвалах, а не выставлять его на всеобщее обозрение. Полурослики умеют находить простые решения своих проблем, и являются весьма решительными.
---
!!!Добрые и любопытные
Полурослики — приветливый и дружелюбный народ. Они ценят дружбу и родственные связи так же как собственный дом и очаг, лишь в тайне мечтая о золоте и славе. И даже те из них, кто стали искателями приключений, обычно отправляются в путь, преследуя цели дружбы или общества, тяги к переменам или любопытства. Они любят открывать для себя что-то новое, даже если это совсем простые вещи, вроде экзотической еды или незнакомого стиля одежды.
Полурослики легко поддаются жалости, и не выносят вида чужих страданий. Они щедры, и с радостью делятся тем, что имеют, даже в трудные времена.
---
!!!Единые с толпой
Полурослики легко вливаются в сообщества людей, дварфов или эльфов, где их ценят и всегда им рады. Сочетание их врождённых скрытности и скромности позволяют им легко избегать ненужного внимания.
Полурослики охотно работают с другими, и они верны своим друзьям, вне зависимости от их вида. Однако, если кто-то из их друзей, семьи или общины оказывается под угрозой, они способны проявить удивительную свирепость.
---
!!!Пасторальные удовольствия
Большинство полуросликов живёт в маленьких, мирных общинах с большими фермами, среди ухоженных рощ. Они редко создают собственные королевства, и не держат земель за пределами своих тихих владений. Они обычно не признают среди себя какого-либо рода знати или королевской власти, вместо этого прислушиваясь к семейным старейшинам, руководствуясь их мнением. Семьи сохраняют свой традиционный уклад, несмотря на подъёмы и падения империй.
Множество полуросликов живёт среди других рас, где усердная работа и надёжные перспективы принесут им обильное вознаграждение и земные блага. Некоторые общины полуросликов ведут кочевой образ жизни, путешествуя на повозках или плавая на суднах от одного места к другому, не оседая на одном месте постоянно.
---
!!!Поиск возможностей
Полурослики обычно становятся на путь искателя приключений, чтобы защитить свои общины или поддержать своих друзей или исследовать огромный наполненный чудесами мир. Для них авантюризм в меньшей степени карьера, скорее это возможность, а иногда и необходимость.
---
!!!Имена полуросликов
Полурослику даётся имя, фамилия, и, возможно, прозвище. Фамилии часто являются прозвищами, которые прилипли так сильно, что стали передаваться через поколения.
''Мужские имена:'' Альтон, Андер, Гаррет, Кейд, Коррин, Лайл, Линдал, Майло, Меррик, Осборн, Перрин, Рид, Роско, Уэллби, Финнан, Элдон, Эррих
''Женские имена:'' Бри, Вани, Верна, Джиллиан, Китри, Кора, Кэлли, Лавиния, Лидда, Мерла, Недда, Паэла, Портия, Серафина, Трим, Шаэна, Эндри, Юфемия
''Фамилии:'' Вверхтормашкин, Высокохолм, Галькоброс, Добробочка, Зеленофляг, Кустосбор, Лугодуг, Подветкин, Репейник, Чайнолист
---
!!!Больше о полуросликах
Том Морденкайнена о врагах, Глава 5: Полурослики и Гномы, с. 99
<<<
Кто из присутствующих обладает телекинетической силой? Поднимите мою руку.
— Эмо Филипс
<<<
Огромный орк пролетает через весь зал, круша столы и стулья, и с грохотом ударяется о стену, падая в оцепенении. Женщина, глаза которой все еще светятся неземной силой, бросает несколько лишних монет на стойку бара. "Извините за беспорядок. Если он очнется, скажи ему, чтобы в следующий раз попробовал приставать к кому-нибудь своего размера".
Выражение лица заключенного меняется от дерзкого до озадаченного, когда дознаватель не задает вопросов, а просто молча смотрит на него. Его озадаченная гримаса сменяется встревоженной, когда он, не удержавшись, вспоминает, где спрятал награбленное. "Под конюшней за трактиром "Ржавый крюк"", - наконец произносит дознаватель, искажая ужасом лицо вора.
"Тебе не... холодно, что ли?" - спросил гном у эльфийки, пока они пробирались по снегу, разглядывая ее простую одежду и босые ноги. "Я просто думаю "тепло"", - рассеянно отвечает эльфийка. Гном фыркает, вдыхая холодный воздух. Типичная эльфийская глупость. Вот только... они еще не замерзли до смерти. "Скажите... не могли бы вы подумать о "тепле" в эту сторону?" - с надеждой спросил гном. К удивлению гнома, холод снега полностью исчезает. "Это просто жуть... Эй, не прекращай! Я просто сказал, что это жутко".
Псионы - это те, кто приобщился к особой потусторонней силе, обладающие способностью актуализировать силу своего разума для совершения невозможных подвигов. Читая мысли, поднимая огромные тяжести и преодолевая физические ограничения, они вызывают в равной степени благоговение и ужас.
Вопрос о том, что именно представляет собой псионическая сила, может быть решен в вашем сеттинге, а может и не быть. Большинство считают, что псионическая сила исходит изнутри, хотя существуют и другие варианты - от утечки силы из потусторонних миров до альтернативного способа проявления магии и актуализации воли человека в мире.
---
!!Могущественные умы
Поскольку оружие псиона - его разум, он всегда находится на расстоянии одной неосторожной мысли от того, чтобы причинить вред окружающим. Для псиона грань между мыслью и действием может быть очень тонкой, что заставляет его держать свои размышления и эмоции под контролем, чтобы его силы не разбушевались. Это приводит к тому, что многие из них развивают странные формы поведения или манеры, помогающие им контролировать свое душевное состояние, и часто кажутся весьма эксцентричными стороннему наблюдателю. Подумайте, как ваш псион держит свои силы под контролем, и в какой мере его сила проникает в его повседневную жизнь. Как чтение мыслей может повлиять на его язык тела или привычки. Подкладывает ли он дрова в костер, не вставая с лежака, или сдерживает себя от использования своей силы по пустякам, чтобы не оступиться?
---
!!Создание псиона
Создавая персонажа псиона, подумайте о предыстории своего персонажа. Как вы стали псионом? Родились ли вы с латентными способностями? Или с вами что-то случилось, что наделило вас способностями? Или вы специально тренировали себя с помощью тяжелых умственных упражнений, чтобы задействовать их? Подумайте, как развитие редкой и таинственной силы повлияло бы на ваше взаимодействие с окружающими. Подумайте, для какой цели вы используете свои новообретенные способности или как вы планируете их использовать. Хотите ли вы, чтобы вас принимали за волшебника, творящего магию, или вы открыто говорите о том, что вы... другого рода?
<<<
Я провожу много времени вдали от цивилизации, держась на её окраинах, чтобы защищать её. Не думайте, что если я не преклоняю колено перед вашим королем, то я не сделал для его защиты больше, чем все его рыцари вместе взятые.
— Совеллис
<<<
Грубо и дико выглядящий человек в одиночку следует в тенях деревьев за орками, которые, как он знает, планируют напасть на расположенную рядом ферму. Зажав по короткому мечу в каждой руке, он становится стальным вихрем, вырезающим одного врага за другим.
Увернувшись от конуса морозного воздуха, эльфийка встаёт на ноги и натягивает тетиву лука, чтобы пустить стрелу в белого дракона. Невзирая на волну страха, которая исходит от дракона подобно холоду его дыхания, она посылает одну стрелу за другой, чтоб найти уязвимые места в толстой драконьей чешуе.
Подняв высоко руку, полуэльф свистит ястребу, кружащему высоко над ним, призывая птицу к себе. Нашёптывая указания на эльфийском, он показывает на выслеженного совомеда и посылает ястреба, чтобы отвлечь существо, пока он готовит свой лук.
Вдали от суеты городов и посёлков, за изгородями, которые защищают самые далёкие фермы от ужасов дикой природы, среди плотно стоящих деревьев, беспутья лесов и на просторах необъятных равнин следопыты несут свой бесконечный дозор.
Следопыты - это свободомыслящие странники и искатели, которые патрулируют границы цивилизованной территории, отгоняя обитателей диких земель за ее пределами. Это неблагодарная работа, так как их усилия редко понимаются и почти никогда не вознаграждаются. Однако следопыты продолжают выполнять свои обязанности, никогда не сомневаясь в том, что их работа делает мир более безопасным местом.
Отношения с цивилизацией определяют личность и историю каждого следопыта. Некоторые следопыты считают себя исполнителями закона и вершителями правосудия на границе цивилизации, не подчиняющимися никакой суверенной власти. Другие – выживальщики, которые избегают цивилизации в целом. Они уничтожают монстров чтобы сохранить себя в безопасности в то время как они путешествуют сквозь нетронутые дикие земли мира. Если их усилия приносят пользу королевствам и другим цивилизованным областям, что они избегают, что ж, пусть так.
---
!!Смертоносные охотники
Бойцы диких земель, следопыты, специализируются на охоте на монстров, таких как неистовствующие звери, чудовищные создания, ужасающие великаны и смертоносные драконы, угрожающих нападением на цивилизованные земли гуманоидов. Они умеют выслеживать добычу подобно хищнику, скрытно передвигаясь через дебри, прячась среди кустов и камней. Следопыты уделяют особое внимание своей боевой подготовки тем приемам, которые особенно полезны против их конкретных излюбленных врагов.
Благодаря близости с дикой природой, следопыты приобретают способность творить заклинания, взывая к силам природы подобно друидам. Их заклинания, как и боевые навыки, делают акцент на скорость, скрытность и охоту. Таланты и способности следопыта оттачиваются со смертельной сосредоточенностью на мрачной задаче защиты пограничных земель.
---
!!Независимые искатели приключений
Хотя следопыт может заработать на жизнь как охотник или проводник, его истинным призванием является защита приграничных земель от разрушительных действий чудовищ и гуманоидных орд, приходящих из диких земель. В некоторых местах следопыты собираются в тайные ордены или объединяют усилия с кругами друидов. Многие следопыты, однако, независимы почти до крайности, зная, что при нападении дракона или банды орков следопыт может оказаться первой и, возможно, последней линией обороны.
Эта яростная независимость делает следопытов пригодными для приключений, так как они привыкли жить вдали от комфорта сухой постели и горячей ванны. Сталкиваясь с воспитанными в городе искателями приключений, которые ноют о тяготах жизни в дикой природе, следопыты реагируют на это с помесью веселья, разочарования и сочувствия. Но они понимают, что другие искатели приключений, привносящие свою лепту в дело борьбы с врагами цивилизации, стоят дополнительных усилий. Изнеженные горожане могут не знать, как прокормить себя или найти пресную воду в дикой природе, но они компенсируют это незнание своими навыками.
---
!!Создание следопыта
Создавая следопыта учитывайте характер подготовки, которая обеспечила вам особые способности. Возможно, вы обучались персональным наставником, блуждая по дебрям вместе с ним? Или ваше обучение закончилось после смерти наставника, убитого чудовищем, все собратья которого стали для вас заклятыми врагами? Возможно, вас учили необходимым навыкам в группе следопытов, связанной с кругом друидов, постигшим мистические пути и тайны дикой природы. Вы можете быть самоучкой-отшельником, который познал боевые навыки, навыки выслеживания, и даже волшебную связь с природой через необходимость выживания в дикой местности.
Что является источником вашей ненависти к определённого рода врагам? Может, чудовище убило того, кого вы любите, или уничтожило вашу деревню? Или вы видели слишком много разрушений, причинённых этими чудовищами, после которых вы и посвятили себя обузданию их бесчинств? Является ли ваша карьера продолжением вашей работы по охране пограничных земель или это что-то совершенно другое? Что заставило вас объединиться с группой искателей приключений? Считаете ли вы, что научить новых союзников пути дикой природы сложно, или вы радуетесь освобождению от одиночества, которое они вам предлагают?
Если вы создаёте или играете персонажем-следопытом, в следующих разделах вы найдете идеи, как дополнить персонажа и улучшить ваш отыгрыш.
---
!!!Взгляд на мир
Взгляд следопытов на мир начинается (а иногда и заканчивается) с взглядов этого персонажа на цивилизованных людей и места, где они живут. Отношение некоторых следопытов к цивилизации уходит корнями глубоко в презрение, в то время как другие жалеют людей, которых они поклялись защищать – хотя на поле боя, невозможно заметить разницу между одним следопытом и другим. В самом деле, для тех, кто стал свидетелем того, как действуют следопыты, и кому следопыты помогали, вряд ли имеет значение, почему следопыты делают то, что делают. При этом вряд ли два конкретных следопыта выскажут одинаковое мнение по какому-то вопросу.
Если вы еще не думали о деталях мировоззрения вашего персонажа, подумайте над тем, чтобы выразить их точку зрения на окружающий мир коротким высказыванием (например таким как приведены в таблице ниже). Как это может повлиять на то, как вы себя ведете?
| !к6 |!Взгляд |
| 1 |Поселения и города – лучшее место для тех, кто не может выжить самостоятельно. |
| 2 |Прогресс цивилизации лучший способ препятствовать хаосу, но развитие должно контролироваться. |
| 3 |Поселения и города – необходимое зло, но когда дикая природа будет очищена от сверхъестественной угрозы, они нам больше не понадобятся. |
| 4 |Стены нужны трусам, которые прячутся за ними пока другие делают мир безопаснее. |
| 5 |Посещение города не неприятно, но через несколько дней я ощущаю призыв вернуться в дикую местность. |
| 6 |Города порождают слабость, изолируя народы от жестоких уроков природы. |
---
!!!Родной край
Все следопыты, независимо от того, как они взялись за профессию, имеют прочную связь с природным миром и его различными территориями. Для некоторых следопытов дикая природа – родина, где они выросли, либо в результате рождения там, либо переезда туда в молодом возрасте. Для других следопытов цивилизация изначально была домом, но дикая природа стала второй родиной.
Подумайте о предыстории своего персонажа и решите, какая местность больше всего напоминает дом, независимо от того, родились вы там или нет. Что говорит эта местность о вашей личности? Влияет ли это на то, какие заклинания вы решили узнать? Повлияла ли ваша жизнь на ваш выбор избранного врага?
| !к6 |!Родной край |
| 1 |Вы патрулировали древний лес, затенённый и поражённый переходами в Царство Теней. |
| 2 |В группе кочевников вы приобрели навыки выживания в пустыне. |
| 3 |Ваша ранняя жизнь в Подземье подготовила вас к борьбе с местными порождениями. |
| 4 |Вы жили на краю болота, месте поражённым наземными и водными монстрами. |
| 5 |Вы выросли среди вершин и нахождение лучшего пути через горы для вас происходит без усилий. |
| 6 |Вы забрели далеко на Север и научились защищаться и процветать в мире охваченном льдом. |
---
!!!Заклятый враг
Каждый следопыт начинает с избранным врагом (или двумя). Определение избранного врага может быть связано с конкретным событием в ранней жизни персонажа, или это может быть полностью ваш выбор. Что побудило вашего персонажа выбрать конкретного врага? Выбор был сделан из-за традиции или любопытства, или у вас поселилась обида?
| !к6 |!Враг |
| 1 |Вы стремитесь отомстить от имени природы за великие преступления, совершенные вашим врагом. |
| 2 |Ваши предки или предшественники сражались с этими существами, и вы тоже. |
| 3 |Вы не имеете вражды к своему врагу. Вы следите за такими существами, как охотник выслеживает дикого зверя. |
| 4 |Вы находите своего врага увлекательным, и вы собираете книги сказок и истории о нем. |
| 5 |Вы собираете небольшие сувениры с ваших павших, чтобы напомнить вам о каждом убийстве. |
| 6 |Вы уважаете своего избранного врага и считаете свои битвы с ним проверкой своих навыков. |
[img class="centerme" [https://i.imgur.com/5Pil2T9.jpg]]
<<<
Однажды у нас проездом останавливалась табакси, несколько зим назад. Она каждый вечер собирала полный зал желающих послушать ее истории и провела большинство дней, дремля на стуле перед камином. Мы думали, что она очень ленивая, но когда Лайнин пришла, ища пропавшее шило, она вылетела из двери так, что я и глазом моргнуть не успел.
– Тоблен Стоунхилл, трактирщик
<<<
Родом из странных и далёких земель, странствующие табакси – кошкоподобные гуманоиды, которых любопытство заставляет собирать интересные артефакты, записывать рассказы и истории, и осматривать все чудеса в мире. Отъявленные путешественники, любознательные табакси редко на долго оседают на одном месте. Их врожденный характер толкает их раскрывать тайны и находить потерянные сокровища и легенды.
---
!!!Cтранствующие бродяги
Большинство табакси остается на своей далекой родине, живя маленькими, сплоченными кланами. Эти табакси охотятся, ремесленничают, и в значительной степени сами держатся в кругу себе подобных.
Однако, не все табакси удовлетворены такой жизнью. Кошачий Бог, божество, создавшее табакси, одарил каждое свое дитя одной типично кошачей чертой. Табакси, одаренные любопытством, стремятся странствовать повсюду. Они собирают истории, артефакты и знания. Те, кто пережил этот период страсти к путешествиям, возвращаются домой в своих зрелых годах, чтобы поделиться новостями о внешнем мире. Таким образом табакси остаются изолированными, но всегда осведомленными о мире за пределами их дома.
---
!!!Обмен знаниями
Табакси дорожат знаниями, а не материальными вещами. Сундук, заполненный золотыми монетами, может пригодится, чтобы купить еду или моток веревки, но он в сущности не интересен. В глазах табакси, накопление богатства похоже на сбор припасов для долгой поездки. Оно нужно, чтобы выжить в мире, но не ст ит из-за него волноваться.
Вместо этого табакси ценят знания и новый опыт. Их уши навостряются в полной таверне, и они выспрашивают истории, предлагая еду, напитки и монеты. Табакси может уйти с пустым кошельком, но он обдумывает истории и слухи, которые он собрал, как скупердяй подсчитывает монеты.
Хотя материальное богатство мало значит для табакси, у них есть жажда находить и осматривать древние реликвии, волшебные предметы и другие редкие объекты. Помимо сил, которые могут дать такие предметы, табакси испытывают большую радость от распутывания историй их создания и использования.
---
!!!Мимолётные увлечения
Странствующие табакси – существа непостоянные, обменивающие одну навязчивую идею или увлечение на другую по мимолетной прихоти. Желания табакси ярко вспыхивают, но в один момент исчезают, замещаемые новой навязчивой идеей. Цель захватывает их только пока в ней есть тайна.
Табакси-плут может с удовольствием провести месяцы, составляя план кражи необычного драгоценного камня у дворянина, а потом обменять его на билет на корабль или жилье спустя неделю после кражи. Табакси может сделать обширные заметки или запомнить каждую грань драгоценного камня прежде чем отдать его, но драгоценный камень перестает очаровывать его как только его тайны и природа были раскрыты.
---
!!!Торговцы и менестрели
Любопытство движет большинством табакси, встреченных за пределами их родины, но не все они становятся приключенцами. Табакси, ищущие более безопасный путь для удовлетворения своих навязчивых идей, становятся странствующими торговцами и менестрелями.
Эти табакси работают маленькими труппами, обычно состоящими из старшего, более опытного табакси, который ведет до четырех молодых, постигающих свое место в мире. Они путешествуют в маленьких, красочных фургонах, перемещающихся от поселения к поселению. Когда они прибывают, то устанавливают небольшую сцену на городской площади, где они поют, играют на инструментах, рассказывают истории и предлагают экзотические товары в обмен на предметы, которые разжигают их интерес. Табакси неохотно принимают золото, они больше предпочитают интересные предметы или знания в качестве оплаты.
Эти странники придерживаются цивилизованных королевств, предпочитая торговать вместо того, чтобы следовать более опасными путями удовлетворения своего любопытства. Однако, они не брезгуют небольшим осторожным воровством, чтобы получить особенно интересный предмет, который владелец отказывается продать или обменять.
---
!!!Имена табакси
У каждого табакси есть одно имя, данное кланом и основанное на сложной формуле, которая включает в себя астрологию, прорицание, историю клана и другие эзотерические факторы. Имена табакси могут относиться как к мужчинам, так и к женщинам, большин- ство использует прозвища, получаемые из полных имен или вдохновленные ими.
Названия клана обычно основаны на географической достопримечательности, расположенной на территории клана или около неё.
В приведенных примерах имен табакси, прозвища указаны в круглых скобках.
''Имена табакси:'' Леворукая Колибри (Птица), Нефритовый Башмак (Нефрит), Облако На Горной Вершине (Облако), Пять Брёвен (Бревно), Семь Грозовых туч (Гроза), Туманное Зеркало (Туман), Юбка Змеи (Змея)
''Кланы табакси:'' Горное Дерево, Грохочущая Река, Отдаленный Дождь, Храпящая Гора, Яркие Утесы
---
!!!Индивидуальность табакси
У табакси могут быть мотивы и причуды, очень отличающиеся от дварфа или эльфа с похожей предысторией. Вы можете использовать следующие таблицы, чтобы персонифицировать вашего персонажа в дополнение к чертам характера, идеалам, привязанностям и слабостям вашей предыстории.
Для дополнительного веселья, кидайте кубик раз в несколько игровых дней, чтобы определить новый результат, что отражает изменение ваших интересов.
''Навязчивые идеи табакси''
| !к8 |!Мое любопытство сейчас сосредоточено на... |
| 1 |Боге или планарном существе |
| 2 |Монстре |
| 3 |Потерянной цивилизации |
| 4 |Тайне волшебника |
| 5 |Обычном предмете |
| 6 |Магическом предмете |
| 7 |Месте |
| 8 |Легенде или рассказе |
''Причуды табакси''
| !к10 |!Причуда |
| 1 |Вы скучаете по своему тропическому дому и бесконечно жалуетесь на холодную погоду, даже летом. |
| 2 |Вы никогда не носите один наряд дважды без крайней необходимости. |
| 3 |У вас небольшая боязнь воды и вы ненавидите мокнуть. |
| 4 |Ваш хвост всегда выдает ваши сокровенные мысли. |
| 5 |Вы громко мурлычете когда счастливы. |
| 6 |Вы держите маленький шарик пряжи в руке, который постоянно теребите. |
| 7 |Вы всегда в долгах, так как тратите свое золото на шикарные вечеринки и подарки для друзей. |
| 8 |Говоря о чем-то, чем вы увлечены, вы начинаете говорить быстро и без пауз, так что другие не могут вас понять. |
| 9 |Вы записываете всякие пустяки, знания и истории, которые вы обнаружили. |
| 10 |Вы не можете не прикарманить заинтересовавший вас предмет. |
<<<
«Но ты же видишь, как люди смотрят на тебя, дитя дьявола».
Взгляд чёрных глаз, холодных, как зимняя метель, был устремлён прямо в её душу. Её потрясла неожиданная серьёзность его тона.
«Как там говорится? — спросил он. — Один — любопытство, двое — заговор...»
«А трое — проклятье. — закончила она. — Думаешь, я никогда не слышала этот бред?»
«Конечно, слышала». Когда она уставилась на него, он добавил: «Для этого не обязательно копаться в твоих мыслях, девочка. Это ноша каждого тифлинга. Некоторые ломаются под её тяжестью, некоторые спокойно несут это бремя, некоторые даже наслаждаются им». Он снова наклонил голову, разглядывая её с озорным блеском в глазах. «А ты с этим борешься, не так ли? Как дикая кошка, я бы сказал. Все упрёки и замечания лишь делают твои когти острее».
— Эрин М. Эванс, //Серные ангелы //
<<<
Быть тифлингом — значит постоянно натыкаться на пристальные взгляды и перешёптывания, терпеть страдания и оскорбления, видеть страх и недоверие в глазах каждого встречного. Беда в том, что тифлинги знают причину этого — договор, заключённый много поколений назад и позволивший Асмодею — владыке Девяти Преисподних — внести вклад в их родословную. Такая внешность и природа — не их вина, а последствие древнего прегрешения, расплачиваться за которое предстоит им, их детям, и детям их детей.
---
!!!Дьявольская родословная
Тифлинги произошли от людей, и по большому счёту всё ещё выглядят как люди. Тем не менее, их дьявольское наследие оставило заметный отпечаток на внешности. У тифлингов есть большие рога, принимающие различные формы: у некоторых витые рога, как у барана, у других длинные и прямые, как у газели, у третьих спиральные, как у антилопы. Их толстый хвост, от 120 до 150 сантиметров длиной, вьётся между ног, похлёстывая их, когда тифлинг нервничает. Острые зубы превращают улыбку в звериный оскал, а их глаза сплошного цвета без намёка на зрачок или белок, обычно чёрного, красного, белого, серебряного или золотого цвета. Цвет кожи тифлингов может принимать все тона, характерные для человека, а также различные оттенки красного. Их волосы, струящиеся из-за рогов, обычно тёмные, от чёрного или коричневого до тёмно-красного, синего или фиолетового.
---
!!!Самодостаточные и недоверчивые
Тифлинги живут небольшими общинами, в основном в людских городах, чаще всего в самых трущобах, где из них вырастают жулики, воры и короли преступного мира. Иногда они живут группами среди других меньшинств, которые относятся к ним с чуть большим уважением.
У тифлингов нет родины, и они знают, что им нужно найти свой путь в жизни, и что им понадобится сила для выживания. Они с опаской относятся ко всем, кто называется их другом, но когда кто-то проявляет доверие по отношению к ним, они стремятся отплатить той же монетой. Для того, кто заслужит верность тифлинга, он станет верным другом и надёжным союзником до конца своей жизни.
---
!!!Имена тифлингов
Имена тифлингов можно разделить на три категории. Тифлинги, выросшие в какой-либо другой культуре, часто носят имена, характерные для этой среды. Некоторые носят имена, передающиеся из поколения в поколение и произошедшие из Инфернального языка. А некоторые молодые тифлинги, стремящиеся найти своё место в этом мире, берут имена, отражающие какую-либо добродетель или другую концепцию, а затем стараются воплотить её в жизнь. Для некоторых выбранное имя становится путеводной звездой, для другим — тяжким грузом.
''Мужские инфернальные имена:'' Акменос, Амнон, Баракас, Дамакос, Йадос, Кайрон, Люцис, Мелех, Мордай, Мортос, Пелайос, Скамос, Терай, Экемон
''Женские инфернальные имена:'' Акта, Анакис, Брисеис, Дамая, Каллиста, Криелла, Лерисса, Макария, Немея, Орианна, Риета, Фелая, Эа
''«Идейные» имена:'' Безрассудство, Вера, Идеал, Искусство, Музыка, Мука, Надежда, Напев, Нигде, Открытость, Отчаяние, Падаль, Поиск, Почтение, Поэзия, Превосходство, Скорбь, Слава, Случайность, Страх, Усталость
<<<
//Я рыбу большую поймал.//
//Хорошего друга ищу теперь,//
//Трапезу чтоб разделить.//
— тортлское хайку
<<<
То, что многие тортлы считают просто жизнью, другие могут назвать жизнью полной приключений. Тортлы рождаются вблизи песчаных пляжей, но как только они учатся ходить на двух ногах, они становятся кочующими приспособленцами, жаждущими исследовать дикую местность, пережить множество чудес, проверить собственные навыки в деле, и завести новых знакомых.
---
!!!Жизнь тортла
Тортл вылупляется из толстой скорлупы яйца и первые несколько недель ползает на четвереньках. Его родители, старые, на пороге смерти, проводят то немногое время, что у них осталось, рассказывая истории своим отпрыскам. В течении года, молодой тортл становится сиротой, но не ранее чем начнет говорить и сможет позаботиться о себе.
Молодой тортл и его братья и сестры наследуют все инструменты, оружие и подарки, оставленные их родителями. Ожидается, что каждый молодой тортл позаботится о себе. Он покидает место своего рождения и находит свой уголок в глуши, где охотится, ловит рыбу и обитает. С каждым годом тортл оттачивает свои навыки. Он заключает дружбу с соседями также уважая их уединение. В какой-то момент, тортл чувствует почти несдерживаемое желание уйти из дома и путешествовать в дальние страны и увидеть мир. Он собирает все свои вещи и отправляется в странствие, возвращаясь месяцы или годы спустя с историями о своих приключениях и новыми навыками.
Когда тортл чувствует надвигающуюся смерть он находит себе пару и продолжает свой род. Тортлы откладывают яйца (количеством от одного до дюжины) в крепком обиталище, обложенной каменными стенами которую легко охранять. Если такой кладки нет, они строят ее. Родители посвящают остаток жизни охране кладки, защищая отпрысков, и посвящая время передаче знаний прежде чем умереть. Когда дети становятся достаточно взрослыми чтобы покинуть кладку они возьмут оружие и инструменты, оставшиеся от родителей и останутся сами по себе.
---
!!!Убеждения
У тортлов нет своего пантеона богов, но они зачастую поклоняются богам других рас. Это не редкость для тортла слышать истории или легенды, связанные с богом и решить поклоняться этому божеству. В Забытых Королевствах, тортлы особенно привержены Эльдат, Гонда, Латандеру, Саврасу, Селунэ и Тиморе.
В Грейхоке, они склоняются к Селестиан, Фарлангуну, Пелору, Фолтусу и Св. Кутберту. Тортлы зачастую избирают Богов Добра в Саге о Копье и Верховных Владык в Эберроне. Среди нечеловеческих божеств, Морадин и Йондала больше всего относятся к тортлам.
Тортлы верят, что ночь и день следят за ними и остальными существами. Луна – это глаз ночи что следит за ними в темноте, и солнце такой же неусыпный глаз дня. Тортлы чувствуют умиротворение тогда, когда один или оба этих глаза взирают на него. Они начинают нервничать и переживать, когда ни одного шара не видно в небе. Тортлам больше всего некомфортно под землей, где ни солнце, ни луна не видны им.
Блаженны дни, когда оба светила видны на небе в одно время. Зачастую тотрлы выбирают такие дни чтобы отправится в путешествие по диким землям, или совершить иное опасное деяние.
---
!!!Искатели приключений в сердце
У тортлов есть поговорка: «Мы носим дома на спине.» Панцирь, который они носят, обеспечивает все необходимое им убежище. Вследствие чего, тортлы не чувствуют нужды оставаться в одном месте надолго.
Поселения тортлов в основном используются как собрание, где тортлы общаются друг с другом, делятся полезной информацией, и торгуют с путниками в безопасной численности. Тортлы не рассматривают эти поселения как места, достойные чтобы защищать их ценой своей жизни, и они покинут поселение, как только нужда в нем отпадет.
Большинству тортлов нравится наблюдать как живут другие существа и открывать новые обычаи и способы делать вещи. Желание размножаться не посещает тортла до самой старости, и тортл может проводить десятилетия вдали от родной земли, не чувствуя тоски по дому.
Тортлы принимают простые взгляды на мир. Это чудесное место, и тортлы созерцают его красоту в обыденном. Они живут ради шанса услышать мягкий порыв ветра меж пальмовых листьев, увидеть лягушку, квакающую на листе лилии в пруду, или постоять на переполненном человеческом рынке.
Тортлы любят изучать новые навыки. Они изготавливают собственные инструменты и оружие, и они хороши в строительстве и укреплениях. Они восхищаются произведениями других цивилизованных существ, в частности людей, и могут потеряться на многие годы в городе, изучая его архитектурные чудеса и обучаясь навыкам, которые они могут использовать, когда будут строить форты, чтобы содержать их потомство.
Хотя они проводят значительную часть своей жизни в изоляции, тортлы – социальные существа, которые любят формировать значимые дружеские отношения. Они не имеют врожденной неприязни к представителям других рас. На самом деле, тортлы часто ищут дружбу с не-тортлами, чтобы узнать новые обычаи и новые точки зрения.
---
!!!Имена тортлов
Тортлы предпочитают простые, гендерно-нейтральные имена состоящие не более чем из двух слогов. Если тортлу по какой-либо причине не нравится его имя он может сменить его. Тортл может сменить десяток имен за свою жизнь. У тортлов нет фамилий или семейных имен.
''Мужские и женские имена:'' Бака, Вабу, Гар, Гура, Даму, Зопа, Ини, Йог, Кве, Квег, Квотт, Келбук, Кинлек, Крулл, Лим, Лоп, Нортл, Нулка, Оло, Плокват, Санни, Тибор, Убо, Уок, Яппа
<<<
Ах, тритоны. представьте себе эльфов, которые несколько столетий прожили глубоко на дне моря, где ничто не мешало расти их высокомерию и самомнению. Но по крайней мере, тритоны провели это время, сражаясь с сахуагинами и с кем похуже, так что на них можно положиться в бою.
– Брего Стоунхарт, капитан корабля
<<<
Тритоны охраняют океанские глубины, строя маленькие поселения около глубоководных впадин, порталов в стихийные планы и других опасных мест, далеких от глаз народов суши. Признанные защитники океанских глубин, в последние годы благородные тритоны стали все более и более активными в мире на поверхности.
---
!!!Водные крестоносцы
Столетия назад, тритоны пришли в мир в ответ на растущую угрозу стихийного зла. Тритоны вели много войн против своих врагов в Плане Воды, гоня их в Затемнённые Глубины, куда они сбегали в высокое давление и кромешную тьму. Со временем, тритоны заметили, что их древние стихийные противники затихли. Экспедиции в глубины показали, что кракены, сахуагины и намного более худшие враги сбежали с Плана Воды на Материальный План.
Тритоны, ведомые чувством долга и ответственности, не позволили своим противникам убежать так легко. Великий конклав тритонов собрал добровольцев, владеющих оружием и магией, в экспедиционный корпус, чтобы они пришли в Материальный План и нашли своих врагов.
Эти тритоны распространились по океанам и основали протектораты, следящие за глубокими впадинами, порталами, подводными пещерами, и другими местами, где могут скрываться их враги. Они победили своих противников, которых нашли, а остальных заставили попрятаться, и теперь очень гордятся тем, в каком долгу у них все оказались.
Изгнав врагов в самые темные глубины моря, тритоны осели, следя за малейшими знаками их возвращения. Со временем тритоны расширили свое наблюдение за морским дном за пределы окрестностей своих первоначальных поселений и построили аванпосты для торговли с другими расами. Несмотря на это распространение, о них знают немногие. Их поселения так отдалены, что даже мерфолки и морские эльфы редко встречают их.
---
!!!Надменная знать
Как результат своей изоляции и недопонимания Материального Плана, тритоны производят впечатление надменных и высокомерных. Они рассматривают себя как хранители морей, и ждут, что другие существа будут относится к ним если не с глубоким почтением, то хотя бы с уважением.
Хотя подобное отношение и возмущает других, но в нем есть доля истины. Мало кто знает о великих победах тритонов над ужасными подводными угрозами. Тритоны снисходительны к такому невежеству и с радостью поясняют на сколько все перед ними в неоплатном долгу.
У тритонов также есть обыкновение появляться из своей изоляции с мыслью, что другие народы их поприветствуют как уважаемых союзников и наставников. Это опять же вызвано расстояниями. Ограниченное знание тритонов о мире оставляет их в неведении о королевствах, войнах и прочих трудностях мира на поверхности. Тритоны с готовностью рассматривают все это как мелочи, происходящие всего лишь на заднем плане по сравнению с ролью тритонов, как защитников мира.
---
!!!Непоколебимые борцы
Несмотря на свои отталкивающие манеры, в глубине души тритоны – доброжелательные существа, убежденные, что другие цивилизованные расы заслуживают их защиты. Их отношение может злить, но когда пиратские флоты рыскают по волнам, или пробуждается кракен, они одни из первых берутся за оружие, чтобы защитить других.
Тритоны с готовностью жертвуют собой ради общего блага. Они без сомнений будут сражаться и умирать за людей, мерфолков и других существ. Из–за своей замкнутости они не замечают историю других народов, но их терзает чувство вины за то, что они позволили злу из Плана Воды прийти на Материальный План и угрожать его жителям. Тритоны полагают, что это их долг чести, и они будут сражаться и умирать, чтобы оплатить его.
Время от времени их рвение и незнание мира вводят их в заблуждение. Тритоны, впервые сталкиваясь с другими существами, могут их недооценить, что делает тритонов уязвимыми для обмана. Имея сильные военные традиции, тритоны могут иногда слишком поспешно ввязываться в схватку.
---
!!!Чужаки на поверхности
Учитывая их изоляцию, большинство тритонов никогда не было на поверхности. Для них трудна мысль, что они не могут так же легко двигаться вверх и вниз, как в воде, а смена сезонов сбивает их с толку.
Тритоны также считают разнообразные социальные институты, королевства и прочие обычаи изумительными. Несмотря на всю свою гордую культуру, они становятся наивными в сухопутном мире. Типичный протекторат тритонов прочно систематизирован, организован и объединен вокруг общего дела. Тритона на поверхности легко сбивают с толку множество союзов, противостояний и мелких обид, которые мешают поверхностным народам объединиться.
В худшем случае высокомерие может мешать тритонам пытаться понять, каким образом устроен мир поверхности. Для тритона легко списать непонятные социальные нормы на варварство, слабость, или трусость поверхностных народов.
---
!!!Индивидуальность тритонов
Далекие от безупречности, эти заступники добра желают его окружающим, но другие их легко разочаровывают. Вы можете выбрать самостоятельно, определить броском кубика или переделать причуду из таблицы ниже. Используйте причуду как идею относительно того, как вы будете изображать своего персонажа.
| !к6 |!Причуда |
| 1 |Вы формулируете просьбы как приказы, которым вы ожидаете, что другие будут подчиняться. |
| 2 |Вы энергично восхваляете величие вашей цивилизации. |
| 3 |Вы изучали древний вариант Общего, и используете в вашей речи «Азъ», «есьм», «доколе» и т.д. |
| 4 |Вы предполагаете, что люди говорят вам правду о местных нравах и обычаях. |
| 5 |Поверхностный мир – поразительное место, и вы записываете все его детали в журнале. |
| 6 |Вы ошибочно полагаете, что народы поверхности знают историю вашего народа и преклоняются перед нею. |
---
!!!Имена тритонов
Имена тритонов обычно состоят из двух или трёх слогов. Мужские имена как правило заканчиваются гласным и буквой –с, а женские имена традиционно заканчиваются на –н. Тритоны используют свой домашний протекторат в качестве фамилии, добавляя гласную вместе с «–т» на конце названия протектората.
''Мужские имена тритонов:'' Водос, Делнис, Джимас, Зунис, Керос, Корус, Молос, Налос
''Женские имена тритонов:'' Белтин, Влэрин, Вуолин, Дьютин, Отанин, Филорин, Шелрин, Эрин
''Фамилии тритонов:'' Алорсат, Вууваксат, Пуманат.
<<<
Мы провели три месяца, выслеживая зеленого дракона прежде, чем определили лес, в котором он устроил убежище. В наш второй день в лесу, проснувшись, мы обнаружили в центре нашего лагеря голову дракона. Совелисс сказал мне, что, должно быть, этот лес принадлежит фирболгам, и они хотят показать, что нам здесь делать больше нечего. Он уверил меня, что, если мы задержимся, наши головы могут быть следующими.
– Гимбл, //Заметки Охотника за Сокровищами//
<<<
Племена фирболгов, уединившиеся в отдаленных лесных крепостях, предпочитают проводить свои дни в безмолвной гармонии с лесом. Будучи спровоцированными, фирболги демонстрируют грозные навыки владения оружием и магией друидов.
---
!!!Скромные стражи
Ничего фирболги не любят больше, чем спокойный день, проведенный в окружении деревьев в старом лесу. Они рассматривают леса как священные места, символизирующие душу мира, и памятники стойкости живого.
Будучи хранителями природы, фирболги живут за счет земли, стремясь соблюдать природный баланс. Их методы отражают бережливость и замечательную изобретательность в использовании природных ресурсов. На протяжении урожайного лета они откладывают лишние орехи, фрукты и ягоды. Когда наступает зима, они разбрасывают всё, что запасли, чтобы гарантировать, что лесные животные доживут до весны.
На взгляд фирболга, нет ничего хуже, чем жадность. Фирболги полагают, что мир остается здоровым только когда каждое существо берет только то, в чем нуждается. Материальные блага, особенно драгоценные камни и золото, мало для них значат. Какой от них толк, когда долгой зимой кончилась еда?
---
!!!Прирожденные друиды
У фирболгов есть склонность к магии друидов. Почтительность их культуры к природе, объединенная с их силой и проницательным умом, делает инстинктивное постижение этой магии частью их развития. Почти каждый фирболг знает несколько заклинаний, в основном для маскировки своего присутствие, и многие продолжают постигать природную магию.
Фирболги, которые становятся друидами, служат лидерами крепости. Перед тем как племя предпримет какое-либо действие, друиды взвешивают нужды своего племени и последствия, который это действие будет иметь для лес и остальной части мира природы. Племена фирболгов лучше будут голодать, чем перетруждать землю во время недорода.
---
!!!Незримые наблюдатели
Будучи хранителями природы, фирболги предпочитают не попадаться на глаза и не привлекать внимание. Они не пытаются подчинить себе природу, а скорее стремятся гарантировать ей процветание и выживание согласно её собственным законам.
Фирболги используют свою магию, чтобы сохранить свое присутствие в лесу в тайне. Такой подход позволяет им избегать политики и противоборства между эльфами, людьми и орками. Подобные события заботят фирболгов только когда они затрагивают лес.
Даже при угрозе вторжения, фирболги предпочитают воздействовать тихо и незаметно, предотвращая ущерб своим землям. Они используют свое волшебство, чтобы сделать лес непривлекательным для изучения, на время отводя ручьи, прогоняя дичь, крадя важные инструменты, и изменяя тропы, чтобы отряды охотников или лесорубов безнадежно заблудились. О присутствии фирболгов можно догадаться из-за отсутствия животных и странной тишины, как будто лес хочет избежать излишнего внимания. Чем быстрее путешественники решат идти дальше, тем лучше.
Если эта тактика проваливается, фирболги действуют более прямолинейно. Наблюдая за поселением, они решают, что делать дальше. Если чужаки выглядят миролюбиво, фирболги приходят к ним и вежливо просят их уйти, даже предлагая еду и другие припасы, чтобы поспособствовать их скорейшему отъезду.
Если они настаивают на том, чтобы остаться, уважая природу и беря только то, в чем нуждаются, и живя в гармонии с лесом, фирболги рассмотрят возможность подружиться с ними, если чужаки пообещают не вредить лесу. Если поселенцы явно демонстрируют недобрые намерения, фирболги прибегнут к грубой силе и магии для единственной сокрушающей атаки.
---
!!!Изгнанные искатели приключений
Будучи хранителями леса, очень немногие фирболги помышляют о том, чтобы покинуть свой дом или попробовать влиться в человеческое общество. Но у изгнанного фирболга, или у того, чей клан уничтожен, нет выбора. Большинство фирболгов – искателей приключений попадают в эту категорию.
Изгнанные фирболги никогда не смогут вернуться домой. Они совершили что–то непростительное, как правило что–то, что поставило под угрозу их родину, например, устроили лесной пожар или убили редкое, или красивое дикое животное. Эти фирболги – одиночки, которые блуждают по миру в надежде найти новое место, которое смогут назвать домом.
Осиротевшие фирболги это те, чей кланы или родина были уничтожены. Они становятся крестоносцами природы – стремятся отомстить за свою потерю и предотвратить дальнейшее уничтожение мира природы.
Изредка бывает, что клан поручает фирболгу важную миссию за пределами их дома. Эти фирболги чувствуют себя странниками в чужой стране, и обычно они хотят как можно быстрее закончить свою миссию и вернуться домой.
Таблица ниже может служить вдохновением для того, чтобы определить, почему персонаж фирболг покинул дом.
| !к8 |!Причина отправиться в приключения |
| 1 |Изгнан за убийство |
| 2 |Изгнан за серьезное разрушение домашней территории |
| 3 |Клан уничтожен вторгшимися гуманоидами |
| 4 |Клан уничтожен драконом или демоном |
| 5 |Отделился от племени и потерялся |
| 6 |Родина уничтожена стихийным бедствием |
| 7 |Личное задание, полученное как предзнаменование |
| 8 |Отправлен на задание лидерами племени |
---
!!!Имена фирболгов
Фирболги берут себе эльфийские имена, когда имеют дело с чужаками, хотя сама идея имен кажется им странной. Они знают животных и растения леса без формальных названий, а вместо этого узнают детей леса по их делам, привычкам, и другим действиям.
Таким же образом, говоря о своем племени, они просто называют его домом. Имея дело с другими расами, фирболги называют свои земли тем же названием, какое используют окружающие народы, как знак тактичности и гостеприимства, но в среде своих сородичей они говорят просто «дом».
Иногда фирболги принимают прозвища или имена, которые дают им чужаки, считая, что те, кому нужны имена, могут называть их вообще как угодно.
---
!!!Классы фирболгов
Большинство фирболгов – друиды, следопыты или воины. Среди их вида эти призвания передаются из поколения в поколение. Магическое наследие фирболгов также проявляет себя другими способами; те, кто становится бардами, оберегают знания клана, а фирболги чародеи защищают свои сообщества. Волшебники фирболгов возникают, когда клан начинает дружить с эльфами.
Плуты фирболгов это, как правило, скауты, которым дают задание следить за соседним народом, чтобы определить их намерения. Они наиболее распространены среди фирболгов, чьи дома граничат с поселениями людей.
Варвары среди фирболгов редки, за исключением кланов, которые постоянно находятся перед лицом угрозы со стороны злых гуманоидов и других захватчиков.
Клирики и паладины фирболгов обычно служат богам природы и на них взирают как на проводников воли богов.
Колдуны фирболгов редки, но некоторые кланы создают союзы и тайные договоры с влиятельными феями.
О фирболгах монахах почти никто ничего не слышал, хотя монастырь мог бы взять на воспитание маленького сироту из уничтоженного клана фирболгов.
Страна Фей является домом для многих причудливых народов, включая фэйри. Фэйри — это невысокий народец, но не настолько маленький как их друзья пикси или спрайты. Первые фэйри общались на Эльфийском, Гоблинском или Сильване, а встречи с людьми побудили многих из них изучить Общий.
Пропитанные магией Страны Фей, большинство фэйри выглядят как Маленькие эльфы с крыльями насекомых, но у каждого фэйри есть физическая особенность, которая выделяет его среди других. Совершит бросок по таблице ниже или выберите один из передоложенных вариантов, для определения вашей особенности. Вы также можете придумать свои собственные особенности, если ни один из приведенных ниже примеров не подходит вашему персонажу.
| !к8 |!Особенность |
| 1 |Ваши крылья похожи на птичьи. |
| 2 |У вас мерцающая разноцветная кожа. |
| 3 |У вас необыкновенно большие уши. |
| 4 |Вас постоянно окружает сверкающий туман. |
| 5 |У вас на голове маленький спектральный рог, похожий на рог единорога. |
| 6 |Ваши ноги похожи на лапки насекомого. |
| 7 |Вы пахнете свежими пирожными. |
| 8 |Вас окружает ощутимый, но безобидный холодок. |
Харенгоны родом из Страны Фей, где они общались на Сильване и воплощали в себе дух свободы и путешествий. Со временем эти кроликолюды перескочили в другие миры, принеся с собой изобилие Страны Фей, и по ходу дела изучая новые языки.
Харенгоны двуногие, с характерными кроличьими длинными лапами, на которых они и похожи, а так же мехом различных цветов. Они обладают острыми чувствами и мощными ногами зайцевых существ и наполнены энергией, как заведенная пружина. Харенгоны благословлены небольшой фейской удачей, и во время приключений им часто везёт оказаться в нескольких счастливых сантиметрах в стороне от опасностей.
<<<
Хобгоблины – несгибаемые солдаты, верно следующие строгой тактике и приказам. Я больше опасаюсь их менее предсказуемых разведчиков и шпионов.
– Воло, //Справочник Воло по монстрам//
<<<
Война – источник жизненной силы хобгоблинов. Её слава – мечта, которая вдохновляет их. Её ужасы не являются им в кошмарах. Трусость для хобгоблина страшнее смерти, поскольку они несут свои деяния при жизни в посмертие. Погибший героем – навеки герой.
Молодые хобгоблины начинают военную службу, как только научатся ходить, и отвечать на призыв на построение, как только они овладеют своим оружием. Каждый легион хобгоблинского сообщества всегда готов к войне.
---
!!!Брутальная цивилизованность
Хобгоблины придерживаются высоких норм воинской чести. Раса имеет долгую историю общих традиций, записанных и пересказываемых, чтобы сохранить эти знания для следующих поколений. Когда хобгоблины не ведут войну, они занимаются сельским хозяйством, строительством и практикуются в воинском и колдовском искусствах.
Эти признаки цивилизованного общества плохо скрывают ту жестокость, которую практикуют хобгоблины в отношении друг друга и доводят до совершенства в отношении других рас. Наказание за нарушение законов хобгоблинов быстро и беспощадно. Красота у хобгоблинов ассоциируется только с изображениями конфликтов и войны.
Железной хваткой их философия удерживает их сердца, делая хобгоблинов слепыми к достижениям других народов. У хобгоблинов не хватает уважения или терпения для искусства. Они оставляют в своей жизни мало места радости или отдыху, и поэтому у них нет запаса веры, чтобы воззвать к нему в отчаянном положении.
---
!!!Суровые боги
Хобгоблины поклоняются двум богам, уникальным для их расы, единственным оставшимся в живых из их пантеона, который был подкошен Маглубиетом так давно, что хобгоблины уже не помнят имена павших богов. Номог-Геая – старший из двух и чаще почитаемый. Он воспринимается как стойкий, хладнокровный и тиранический лидер, и хобгоблины полагают, что он ожидает такое же поведение от них. Баргривйек – бог долга, единства и дисциплины, и он, как думают, радуется проявлению этих принципов.
В историях, что хобгоблины рассказывают друг другу, Баргривйек служит заместителем командира Номог-Геаи. Номог-Геая предпочел бы, чтобы эту должность занял кто–то более похожий на него, но Баргривйек был единственным, кто у него остался после завоевания Маглубиетом. Хотя оба божества в конечном счете подчинены Маглубиету, великий бог позволяет им сохранить часть своего влияния на хобгоблинов, потому что их философия соответствует его собственной.
Хобгоблины не строят храмы своим богам, чтобы они не вызвали недовольство Маглубиета, но некоторые священники ухаживают за маленькими святилищами и рассказывают легенды о своих богах. Священники Номог-Геаи всегда используют его любимое оружие, длинный меч и ручной топор. Они ответственны за боевую подготовку, а также за обучение стратегии и тактике. Священники Баргривйека владеют его символом, цепом с покрашенным белой краской билом. Они служат как полиция в обществе хобгоблинов, вынося суждения о чести, разрешая споры и другими путями обеспечивая дисциплину.
---
!!!Кровавые синие носы
Хобгоблины иногда рождаются с ярко-красными или синими носами. Это считается признаком силы и потенциала. Сине- и красноносые хобгоблины получают привилегированную подготовку, и как следствие, они занимают более высокое положение в обществе хобгоблинов.
Носы всех хобгоблинов становятся более яркими, когда они разгневаны или взволнованы, так же, как щеки людей вспыхивают от эмоций.
---
!!!Больше о хобгоблинах
Справочник Воло по монстрам, Глава 1: Происхождение монстров, Гоблиноиды: Войско завоевателей, с. 45
<<<
Практика и учеба - для любителей. Истинная сила - это право, данное от рождения.
— Хеннет, отпрыск Тиамат
<<<
Золотые глаза вспыхивают, человек протягивает вперёд руку и высвобождает всепоглощающее пламя, что горит в его жилах. Пока адское пламя бушует вокруг его врагов, кожистые крылья раскрываются у него за спиной, и он взмывает в воздух.
Длинные волосы развеваются от магического ветра, полуэльф широко разводит руки в стороны и запрокидывает голову. Моментально подняв его над землёй, волны магической энергии проходят сквозь него и выплёскиваются в окружающее пространство громадной вспышкой молний.
Крадущийся за сталагмитом полурослик указывает пальцем на троглодита. Огненная струя устремляется из его пальца к существу. С усмешкой он прячется обратно за скалу, не подозревая, что дикая магия изменила цвет его кожи на ярко-синий.
Чародеи являются носителями магии, дарованной им при рождении их экзотической родословной, неким потусторонним влиянием или воздействием неизвестных вселенских сил. Никто не может обучиться чародейству, как, например, выучить язык, так же как никто не может обучить, как прожить легендарную жизнь. Никто не может избрать путь чародейства, сила сама выбирает носителя.
Когда, во время нужды, дело доходит до демонстрации своих способностей, чародеям это даётся легче по сравнению с другими персонажами. Их сила не только находится внутри них, но и, вероятно, требует определенных усилий, чтобы сдержать её. Каждый чародей рождается со своей ролью или сталкивается с ней по космической случайности. В отличие от других персонажей, которые должны активно учиться, развивать и исследовать свои таланты, чародеям их сила дается просто так.
Поскольку идея о том, что среди них путешествует магическое существо, многим не по душе, чародеи склонны порождать недоверие и подозрительность у тех, с кем они сталкиваются. Тем не менее, многим чародеям удается преодолеть эти предрассудки благодаря поступкам, которые приносят пользу их менее одаренным в магическом плане сверстникам.
---
!!Чистая магия
Магия является частью каждого чародея, наполняя тело, разум и дух скрытой силой, которая ждёт, когда её используют. Некоторые чародеи владеют магией, которая проистекает из древней родословной, связанной с магией драконов. Другие же несут в себе сырую, неконтролируемую силу, хаотичный шторм, который может выплеснуться самым неожиданным образом.
Проявление сил чародея крайне непредсказуемо. Некоторые драконьи родословные получают ровно одного чародея в каждом поколении, в других же родословных каждый индивид может являться чародеем. В большинстве случаев способность к чародейству возникает случайно. Некоторые чародеи не могут назвать источник своей силы, в то время как другие связывают его со странными событиями в своей жизни. Прикосновение демона, благословление дриады при рождении, или вода из мистического источника — всё это может разжечь искру чародейского дара. Это может быть дар божества магии, воздействие стихийных сил из Внутренних Планов, прикосновение к безумному хаосу Лимбо или понимание внутреннего устройства реальности.
Чародеи не используют книги заклинаний, на которые полагаются волшебники, и, в отличие от колдунов, не полагаются на высокого покровителя, даровавшего им заклятья. Научившись использовать и направлять свою собственную врождённую магию, они могут открыть для себя новые ошеломляющие способы высвобождения этой силы.
---
!!Необъяснимые силы
Чародеи довольно редко встречаются в мире, и совсем уж необычно встретить чародея, каким-либо образом не вовлечённого в приключения. Люди с магическими силами, текущими по их жилам, вскоре обнаруживают, что данные силы не могут постоянно дремать. Чародейская магия требует использования, и имеет тенденцию вырываться самым непредсказуемым образом, если её игнорировать. Зачастую, у чародеев туманные мотивы, толкающие их на приключения. Некоторые ищут более глубокого понимания магических сил, влияющих на них, или разгадок их таинственного происхождения. Другие же надеются найти способ избавления от своего дара, или раскрытия его полного потенциала. Вне зависимости от их целей, чародеи столь же полезны в отряде искателей приключений, как и волшебники. Хотя чародеи и не владеют множеством заклинаний, это с лихвой компенсируется большой гибкостью в использовании тех заклятий, что им известны.
---
!!Создание чародея
Самым важным аспектом при создании вашего чародея, является источник его силы. Вы в самом начале выбираете происхождение, которое может быть связано с драконьей родословной или влиянием дикой магии, но конкретный источник вашей силы определяется только вами. Возможно, это семейное проклятье, доставшееся вам от далёких предков? Или какое-нибудь экстраординарное событие оставило своё благословление, даровав врождённые способности к магии, или, может, располосовав вас шрамами?
Как вы ощущаете магические силы, струящиеся сквозь вас? Вы приняли их, попытались освоить или упиваетесь их непредсказуемой природой? Благословление это или проклятье? Искали ли вы их, или они сами нашли вас? Есть ли возможность отказаться от них, и поступили бы вы так, если бы могли? Что вы намерены делать с ними? Возможно, вы чувствуете, что были одарены этой силой для свершения какого то высшего предназначения. Или же, вы могли решить, что такая власть даёт вам право делать всё, что вздумается, и отбирать всё необходимое у тех, кто такой силы не имеет. Возможно, ваши силы связаны с могущественной фигурой, известной в этом мире — фейским существом, благословившим вас при рождении, драконом, который смешал вашу кровь с каплей своей, личем, который создал вас в качестве эксперимента, или божеством, которое избрало вас носителем этой силы.
Чародеев часто характеризуют события, связанные с проявлением их силы. Для тех, кто получил ее по праву рождения, ее появление - повод для праздника. К другим чародеям относятся как к нелюдям, изгоняемым из своих домов после внезапного, пугающего появления их способностей.
Игра персонажем-чародеем может быть настолько же приятной, насколько и сложной. В следующих разделах предлагаются предложения о том, как придать своему персонажу глубину.
---
!!!Источник магии
Некоторые чародеи понимают, откуда исходит их сила, основываясь на том, как проявляются их способности. Другие могут только догадываться, так как их силы появляются безо всякой причины.
Знает ли ваш персонаж источник своей магической силы? Связано ли это с каким-то дальним родственником, космическим событием или это просто случайность? Если ваш чародей не знает, откуда взялась его сила, ваш Мастер, когда это важно для сюжета компании, может использовать эту таблицу (или выбрать источник) и рассказать эту информацию вам.
| !к6 |!Источник |
| 1 |Ваша сила возникает из родословной вашей семьи. Вы связаны с каким-то могущественным существом, или вы унаследовали благословение или проклятие. |
| 2 |Вы – реинкарнация существа из другого плана существования. |
| 3 |Могущественная сущность пришла в мир. Его магия изменила вас. |
| 4 |Ваше рождение было предсказано в древнем тексте, предсказание также гласит, вы рождены, чтобы использовать свою силу для ужасных целей. |
| 5 |Вы являетесь продуктом поколений тщательного, селективного размножения. |
| 6 |Вы искусственно созданы алхимиком. |
---
!!!Реакция
Когда в мире появляется новый чародей, при рождении, либо позже, его сила проявляется, последствия этого события сильно зависят от того, как его свидетели реагируют на то, что они видели. Когда проявились силы вашего чародея, как на это отреагировал окружающий вас мир? Другие люди вас поддерживали, боялись или ни то ни другое?
| !к6 |!Реакция |
| 1 |Окружающие думают, что ваши силы – великое благо, и вы должны использовать их в служении своей общине. |
| 2 |Проявление ваших сил привело к разрушениям и даже смерти, и к вам относятся как к преступнику. |
| 3 |Ваши соседи ненавидят вас и боятся вашей силы, что заставляет их избегать вас. |
| 4 |На вас обратил внимание зловещий культ, который планирует использовать ваши способности. |
| 5 |Люди вокруг вас верят, что ваши силы – это проклятие, наложенное на вашу семью за прошлые преступления. |
| 6 |Считается, что ваши силы связаны с древним родом безумных королей, правление которых предположительно закончились кровавым восстанием более века назад. |
---
!!!Сверхъестественная метка
В обычное время чародей почти неотличим от обычного человека; только когда он начинает использовать свой дар, чародей раскрывают свою истинную природу. Тем не менее, у большинства чародеев есть малозаметная, но выдающая физическая особенность, которая отличает их от других людей.
Если у вашего чародея есть сверхъестественная метка, она может быть легко спрятана, или вы можете гордится ею, постоянно выставляя её на показ.
| !к6 |!Метки |
| 1 |У ваших глаз необычный цвет, например красный. |
| 2 |У вас есть дополнительный палец на одной ноге. |
| 3 |Одно ваше ухо заметно больше другого. |
| 4 |Ваши волосы растут с невероятной скоростью. |
| 5 |Вы постоянно морщите нос во время жевания. |
| 6 |Раз в день на вашей шее появляются красные пятна, и через час исчезают. |
---
!!!Признак чародея
Как хорошо известно в мире, некоторые чародеи лучше других контролируют свое колдовство. Иногда дикое проявление магии исходит от чародея, который сотворяет заклинание. Но даже когда заклинание проходит, как и планировалось, акт сотворения заклинания часто сопровождается неким признаком, который дает понять, откуда взялась эта магическая энергия.
Когда ваш персонаж-чародей накладывает заклинание, проявляются ли признаки чародея? Связан ли этот знак с вашим происхождением другим аспектом того, кто вы есть, или этот знак – случайное явление?
| !к6 |!Признак |
| 1 |Вы произносите вербальные компоненты ваших заклинаний гулким голосом титана. |
| 2 |На мгновение, после того как вы произнесете заклинание, окружающая вас область становится темной и мрачной. |
| 3 |Вы обильно потеете при произнесении заклинания и в течение нескольких секунд после этого. |
| 4 |Всякий раз, когда вы вызываете заклинание, ваши волосы и одежда кратковременно развеваются, словно на ветру. |
| 5 |Если вы стоите, когда произносите заклинание, вы поднимаетесь на пару десятков сантиметров в воздух и недолго левитируете. |
| 6 |Иллюзорное синее пламя появляется вокруг вашей головы, когда вы начинаете сотворять заклинание, а затем внезапно исчезает. |
[img class="centerme" [https://i.imgur.com/ruRD7P8.jpg]]
<<<
Geth's ancient heritage rose up from deep within him, spreading out from the core of his being. Some shifters manifested terrible claws, others massive fangs, still others astounding speed or heightened senses. Geth's gift from his lycanthrope ancestors was sheer toughness. Strength seeped into his bones and flooded his flesh. His skin hardened, and his hair became coarse like an animal's tough hide. A sense of invincibility spread through him. For the moment at least, he felt unstoppable!
— Don Bassingthwaite, //The Binding Stone //
<<<
Shifters are sometimes called the weretouched, as many believe they are the descendants of humans and lycanthropes. Whatever their origins, shifters have evolved into a unique race. They are humanoids with a bestial aspect; while they can't fully change shape, they can temporarily enhance their animalistic features-a state they call shifting.
As a shifter adventurer, you walk a path between the wilds and the civilized world. You are driven by primal instincts, the whispers of Wolf or Rat. When you embrace those voices, you transform. Do you see your shift-form as your true self, reveling in these moments of primal ascension? Or do you hate shifting, fearing that you might one day lose yourself to the beast within?
In creating a shifter, consider your roots and the spirit that drives you. What has set you on the path to adventure? Do you embrace the party as your pack, or are your companions just the means to an end?
---
!!!Shifter Origins
Shifters are relatively rare in the Five Nations; there are more changelings in Breland than there are shifters. The bulk of the shifter population of Khorvaire is based in the Towering Wood, the vast forest that stretches across the northwest. Over the last four decades, shifters have emerged from the deep woods to live in the farmlands of the Eldeen Reaches, shaping the culture of this new nation. Outside the Towering Wood, many shifters fled the violence and persecution of the Silver Crusade, leading to their scattering across the Five Nations. While the hysteria of the Silver Crusade has long since died down, there are still many who treat shifters with fear or suspicion. //They’re weretouched, more beast than human. They’re prone to violence—they can’t help it. Don’t they become dangerous when the moons are full? //
As a shifter character, you don’t have to be tied to a shifter community. You could’ve grown up in the Five Nations, serving as a soldier or working for a dragonmarked houses just as anyone else might have. But if you want deeper ties, consider the following options.
''Deep Forest''
The shifters of the Towering Wood, nomadic hunter-gatherers, follow the same traditions that have sustained their people for millennia. Their champions are druids, rangers, and barbarians, and they are attuned to the beast within. But they know almost nothing about the world beyond the wood and have little experience with artifice or the wonders of the dragonmarked houses. If you’re from such a tribe, what drove you to leave the woods? Are you following a druidic prophecy? Pursuing an ancient evil that’s escaped from the wood? Have you been exiled from your tribe, or are you simply driven by curiosity? Outlander and hermit are both logical backgrounds for such a character.
''Eldeen Reaches''
Shifters played a strong role in the rise of the Eldeen Reaches. They can be found in the Warden militia, and many have settled in the farmlands, integrating with the other races in the area. The Reaches are a young nation that broke free from Aundair during the Last War, and there’s considerable fear that Aundair may try to reclaim the region. As an Eldeen shifter, are you a proud Reacher? Do you stand up for your people and take an aggressive stance against Aundair? Are your actions in some way helping your family? Or have you turned your back on the Reaches? Any background can work for an Eldeen shifter, but folk hero and outlander are both strong options.
''Urban Pack ''
Due to the fear and prejudice of many strangers, shifters often form tight communities in the larger cities. Lower Northedge in Sharn holds most of the city’s shifters; as a child, you might have played hrazhak on the bridges or pissed on the shrine of Fathen the Martyr. Do you have ties to an extended family in a bad part of town, or are you a lone wolf? Did you serve in the Last War, and if so, was it a sign of devotion to your nation or were you just doing your job? Do you cling to any of the old traditions of the woods, or do you see stories of Grandmother Wolf as foolish superstition?
---
!!!The Beast Within
Your shifter subrace isn’t driven by genetics—two beasthide shifters can have a swiftstride child. Young shifters have the same general phenotype, but as a child you find your beast within; this sets your subrace, triggering physical and psychological changes. The tribes of the Towering Wood believe that these beasts are totem spirits; Moonspeaker Druids tell stories of Grandmother Wolf and Grandfather Rat, and shifter hunters may swear by Tiger’s Blood.
Your beast within is reflected by your subrace and shapes your personality and appearance. If your beast is the Tiger, you likely have feline features, which are exaggerated when you shift. However, the beast is ultimately a reflection of who you are; you can attribute your wild temper to your Boar nature, but it’s not a truly independent force like the quori spirits of the kalashtar.
Moonspeaker druids respect many spirits, but the following five are usually associated with the beast within:
*The ''Bear'' embodies strength and caution; in contrast to the Boar, the Bear pauses before taking rash action. Shifters tied to the Bear are typically beasthide.
*The ''Boar'' possesses great endurance and is celebrated for its honesty and lack of guile; however, it is also seen as being reckless and overly enthusiastic, often prone to rash action. Boar shifters are typically beasthide.
*The ''Rat'' is clever and stealthy. Lacking physical strength, Grandfather Rat uses wits to overcome his enemies. Rat shifters are usually swiftstride, but can also be wildhunt.
*The ''Tiger'' is known for grace and speed, seen as a valiant hunter. In contrast to those guided by the Wolf or Rat, those touched by Tiger tend to be loners. Tigers are usually swiftstride or wildhunt.
*The ''Wolf'' is considered wise and honorable, the pillar of a community and keeper of the druidic mysteries. Wolf shifters with a martial bent tend to be longtooth shifters, while druids guided by Grandmother Wolf are usually wildhunt.
In creating a shifter character, consider both the nature of your beast within and how you relate to it. If you’re a wildhunt shifter with lupine characteristics, do you think of yourself as being touched by Grandmother Wolf? Do you play up this aspect of your personality, or do you largely try to ignore it?
---
!!!Shifters and Religion
Shifter paladins and clerics are rare. Shifters have a natural tie to primal forces and are more likely to embrace these as opposed to the abstract religions of the east. While shifters can be found in all of the Eldeen druidic sects, the Moonspeakers are a sect tied specifically to shifter traditions; Moonspeakers usually follow the Circle of the Moon or the Circle of the Shepherd. Moonspeaker druids respect the totems associated with the beast within—Grandmother Wolf, Cousin Bear—but they don’t see these spirits as gods. These beasts guide shifters from within—they don’t shape the world itself.
The Silver Crusade is a festering wound that left most shifters feeling bitter and suspicious of the organized religions of the Five Nations. However, there are shifters who recognize that the Crusade was a tragedy caused by the failings of people rather than being the fault of the Flame itself; over the decades, there have been a number of shifter heroes who have embraced the Silver Flame and sought to form a bridge between their people and Flamekeep. There’s still much work to be done here—but your character could be the one called to do it.
In the Five Nations, a few shifters have abandoned the Moonspeaker traditions and instead taken up the Sovereign Host. The Hounds of Balinor are a shifter sect whose members believe that shifters are the chosen of Balinor and that the Sovereign of the Hunt strengthens them when they shift. Others embrace the Three Faces of the Wild—the worship of Arawai, Balinor, and the Devourer. A few have turned to the Blood of Vol, blending the idea of the divinity within with the beast within.
As often as not, however, shifters focus on their inner strength and instincts as opposed to seeking guidance from divine sources. Many city shifters are actively suspicious of clerics and paladins, especially followers of the Silver Flame.
---
!!!Shifters and Lycanthropes
Shifters and lycanthropes are clearly related. Both transform into a more bestial state. Shifters have affinities for bear, boar, rat, and wolf; could it be mere coincidence that these are the most common forms of lycanthrope? And yet, the differences between shifter and lycanthrope are vast. Being a shifter isn’t a condition that can be passed by a bite. Shifters have full control over their gifts, while lycanthropes struggle with them. The beast within may shape a shifter’s personality, but it doesn’t overwhelm it. By contrast, lycanthropy attempts to destroy the victim’s original personality and can turn the most virtuous hero into a bloodthirsty murderer. Wererats and werewolves are cruel killers . . . but Grandmother Wolf doesn’t encourage savagery, and Grandfather Rat doesn’t urge murder. And perhaps most important of all: shifters themselves can become lycanthropes. This isn’t in their blood; lycanthropy is a curse, and it can afflict them just like it can any other humanoid.
The Moonspeaker druids tell a tale of five shifter champions who ventured too deep into the Towering Woods. They hunted a great evil, but when they caught it, they were overwhelmed; its evil filled their hearts, and it sent them back to prey on their friends and families. If anyone survived their attacks, the evil would seep through the wound and poison their hearts as well. These, they say, were the first lycanthropes.
The Silver Crusade began when a dark power surged in the Towering Wood, amplifying the power of lycanthropy. The curse became more virulent. Victims fell prey to its power more quickly, guided by some dark power beyond the common evil of the curse. Within the Towering Woods, tribes of shifters fought their corrupted kin. Beyond it, the farmers of Aundair were tormented by raiding wolves and boars. When the templars responded, the beasts that were slain reverted to their natural forms, revealing that they were shifters. The word quickly spread: all shifters were weretouched, capable of turning into savage beasts. None could be trusted! Meanwhile, among the shifter tribes, scouts warned of atrocities committed by the foreign soldiers. In fact, the demagogues on both sides were wererats working to ensure that these possible allies would instead become bitter enemies . . . and the trick worked. Frightened templars and paranoid mobs slew many innocent shifters, and to this day the extremist sect known as the Pure Flame claims all shifters are servants of darkness.
The fact of the matter is that lycanthropy is a weapon; it spreads through violence and turns its victims into killers. Its origins may never be discovered, but the Moonspeaker tale is as logical as any. Lycanthropes and shifters are related in that the first lycanthropes were cursed shifters. The unknown force responsible was likely also behind the surge that caused the Silver Crusade—and it could rise again. One logical contender is the daelkyr known as Dyrrn the Corruptor. It’s said that Dyrrn created doppelgangers by twisting changelings; it could have used this same technique to create lycanthropes from shifters. Or it could have been the work of an overlord, an archfiend of the Age of Demons; some texts speak of the Wild Heart, an overlord who destroys civilizations and feeds on primal cruelty. Ultimately, it’s up to the DM to decide if the answer will be revealed, and if so, what it is. In battling the cults of the Dragon Below, could you face the original shifter champions corrupted by Dyrrn? Or might the schemes of the Lords of Dust unleash the Wild Heart?
While shifters and lycanthropes aren’t the same, the story and the stereotype is well established. Everyone calls the shifters “weretouched.” Beyond the Towering Woods, there are many shifters who indeed believe they are thin-blooded lycanthropes. And the wounds caused by the Silver Crusade and the Pure Flame will never completely heal. But despite the stereotype, the shifters of the Towering Woods fear and fight evil lycanthropes, and their tribes include Monster Slayer rangers who specialize in hunting werewolves. Shifters and lycanthropes resemble one another, but they are not the same—and shifters are just as vulnerable to the curse of lycanthropy as humans are.
---
!!!Shifters and Totems
The Totem Warrior barbarian and the Circle of the Shepherd druid are both strong choices for a shifter character. But how do the totem options overlap with your ties to the beast within? If you decide that you’re a beasthide shifter with a Bear spirit, can you take Wolf as your Totem Spirit feature? Of course you can—even as a Totem Warrior, you’re not bound to a single totemic beast. You could play up the idea that you feel a connection to multiple spirits. With your DM’s approval, you could even have your character develop physical traits tied to your second spirit; you’ve always been a big, bearlike warrior, but now you manifest lupine ears and fangs when you shift.
Another option is to rename your class features to match your beast within. There’s no reason you can’t take the Bear option for the Totem Spirit feature but call it “Boar” instead. There is no Rat option for a Totem Warrior, but you could take the Eagle option and call it Rat. Ultimately this is a question of story. If you want to highlight your tie to a single spirit and it makes sense, just change the names. But there’s nothing wrong with having a totem menagerie!
---
!!!Shifter names
Shifters have no language of their own and often live in blended communities. Their names typically overlap with the names of other cultures in their region. Many shifters prefer to keep their personal names for their friends and use "wandering names" with strangers. These are usually tied to a physical or personality trait.
''Shifter Names:'' Badger, Bear, Cat, Fang, Grace, Grim, Moon, Rain, Red, Scar, Stripe, Swift, Talon, Wolf
<<<
— Могла ли я думать, что где-то на свете есть подобная красота!.. — тихо выговорила Золотая Луна. Дневной переход выдался нелёгким, зато награда, ожидавшая в конце, превосходила всякое вероятие. С высокого утёса взглядам путников открылся овеянный легендами город Квалиност.
По углам города возносились, подобно сверкающим веретёнам, четыре высоких тонких шпиля, сложенных из белого камня, отделанного серебром. От шпиля к шпилю тянулись невесомые арки. Их некогда выковали искуснейшие мастера-гномы; каждая способна была выдержать вес марширующих армий, но казалось — сядет птица, и они рухнут. Арки обозначали границу города; Квалиност не прятался за стеной, но, наоборот, с любовью распахивал объятия лесу.
— Маргарет Уэйс и Трейси Хикмэн, //Драконы осенних сумерек //
<<<
Эльфы это волшебный народ, обладающий неземным изяществом, живущий в мире, но не являющийся его частью. Они живут в местах, наполненных воздушной красотой, в глубинах древних лесов или в серебряных жилищах, увенчанных сверкающими шпилями и переливающихся волшебным светом. Там лёгкие дуновения ветра разносят обрывки тихих мелодий и нежные ароматы. Эльфы любят природу и магию, музыку и поэзию, и всё прекрасное, что есть в мире.
---
!!!Стройные и изящные
Обладая неземным изяществом и тонкими чертами, эльфы кажутся людям и представителям других рас чересчур красивыми. В среднем, они немного ниже людей, их рост колеблется от 150 до 185 см. Они стройнее людей, и весят от 45 до 65 кг. Мужчины и женщины почти одинакового роста, и мужчины весят лишь незначительно больше.
Цвета кожи у эльфов включают в себя все человеческие оттенки, а также цвета с медным, бронзовым и голубовато-белым отливом. Волосы помимо человеческих цветов могут быть зелёными или синими, а глаза приобретать цвет жидкого золота или серебра. У эльфов не растут волосы на лице, и почти отсутствуют волосы на теле. Они предпочитают элегантную одежду ярких цветов и простые, но красивые украшения.
---
!!!Неподвластный времени взгляд
Эльфы способны жить более 700 лет, что даёт им более широкий взгляд на проблемы, беспокоящие короткоживущие расы. События чаще кажутся им забавными, чем волнующими, и ими чаще движет любопытство, чем жадность. В случае мелких происшествий они чаще проявляют равнодушие и остаются в стороне. В случае же преследования цели, выполнения задания или изучения нового навыка эльфы остаются собранными и целеустремлёнными. Они не торопятся заводить друзей или врагов, а прощают ещё медленнее. На мелкие оскорбления они отвечают пренебрежением, на крупные же — местью.
Подобно молодым ветвям дерева эльфы проявляют гибкость перед лицом опасности. Они верят в дипломатию и предпочитают с помощью компромисса уладить разногласие прежде чем оно перешло в насилие. Они способны отступить перед лицом вторжения вглубь своих лесов, уверенные, что просто смогут подождать, пока захватчики уйдут. Но если придёт нужда, эльфы способны проявить свою воинскую сторону, продемонстрировав владение мечом, луком и стратегией.
---
!!!Скрытые лесные королевства
Большинство эльфов живёт в маленьких лесных деревнях, спрятанных среди деревьев. Эльфы охотятся на дичь, собирают пищу и растят овощи. Их навыки и магия позволяют им прокормить себя без вырубки леса и вспахивания земли. Они талантливы в ремёслах, изготавливают качественную одежду и предметы искусства. Их контакты с другими народами обычно ограничены, но некоторые эльфы всё же преуспели в торговле,выменивая свои товары на металлы, которые эльфы не любят добывать сами.
Эльфы, встречающиеся за пределами родных земель, чаще всего оказываются путешествующими менестрелями, артистами или мудрецами. Людские дворяне соревнуются за услуги эльфа-наставника, способного обучить их детей фехтованию или магии.
---
!!!Исследования и приключения
Эльфы берутся за приключения из страсти к путешествиям. Благодаря большому сроку жизни, они могут посвятить столетия изучению и исследованию. Им не нравится темп человеческого общества, упорядоченный изо дня в день, но полностью меняющийся за десятилетие, и они предпочитают найти себе занятие, позволяющее им часто путешествовать, устанавливая свой собственный темп жизни. Эльфам также нравится оттачивать своё воинское мастерство, или добиваться ве ликой волшебной мощи, и приключения способствуют этому. Некоторые могут присоединиться к повстанцам, борющимся против угнетателей, а другие становятся борцами за моральные ценности.
---
!!!Эльфийские имена
Эльфы считаются детьми, пока они не объявят себя взрослыми, где-то вскоре после сотого дня рождения. До этого времени их называют детским именем.
Достигая зрелости, эльф выбирает себе новое, взрослое имя, хотя те, кто знал его под детским именем, могут продолжать пользоваться им. Имя каждого взрослого эльфа уникально, хотя может отражать имена уважаемых личностей или членов семьи. Мужские и женские имена различаются лишь незначительно, и чёткой границы тут нет. Также каждый эльф носит фамилию, обычно это сочетание нескольких эльфийских слов. Некоторые эльфы, путешествующие среди людей, переводят фамилию на Общий, другие сохраняют эльфийскую версию.
''Детские имена:'' Ара, Брин, Валь, Дель, Иннил, Лаэль, Мелла, Наиль, Наэрис, Раэль, Ринн, Сай, Силлин, Тиа, Фанн, Фаэн, Эрин
''Мужские взрослые имена:'' Адран, Арамиль, Араннис, Ауст, Аэлар, Бейро, Берриан, Варис, Галинндан, Ивеллиос, Иммераль, Каррик, Куарион, Лаусиан, Миндартис, Паэлиас, Перен, Риардон, Ролен, Совелисс, Тамиорн, Таривол, Терен, Хадарай, Химо, Хэйян, Эниалис, Эрдан, Эреван
''Женские взрослые имена:'' Адрие, Альтеа, Анастри- анна, Андрасте, Антинуа, Бетринна, Бирель, Вадания, Валанте, Джеленетт, Друсилиа, Йелениа, Каэлинн, Квеленна, Квиласи, Кейлет, Ксанафия, Лешанна, Лиа, Миали, Мэриэль, Найвара, Сариэль, Силакви, Теирастра, Тиа, Фелосиаль, Шава, Шанайра, Энна
''Фамилии (перевод на Общий):'' Амакиир (Сверкающий Цветок), Амастасия (Звёздный Цветок), Галанодель (Лунный Шёпот), Ильфелкиир (Сверкающий Бутон), Ксилосент (Золотой Лепесток), Лиадон (Серебряный Лист), Найло (Ночной Бриз), Сианодель (Лунный Ручей), Холимион (Алмазная Роса)
---
!!!Больше об эльфах
Том Морденкайнена о врагах, Глава 2: Эльфы, с. 35
<<<
У вас не получится вызвать ненависть или страх, или разбудить любовь или дружбу у кого-либо из змеиного народа. Они могут изобразить таковые, чтобы вам было комфортнее, но внутри они всегда холодно и спокойно рассчётливы.
– Эльминстер, //Справочник Воло по монстрам//
<<<
Змееподобные существа, известные как юань–ти – это все, что осталось от древней, пришедшей в упадок человеческой империи. Сотни лет назад темные боги обучили их как с помощью каннибализма и омерзительных ритуалов смешать свою плоть со змеями, чтобы создать кастовое общество гибридов, где наиболее схожие со змеями существа являются лидерами, а человекоподобные – шпионами и агентами в других странах.
---
!!!Преобразованные люди
Люди, которые превратились в юань–ти были представителями одной из самых первых человеческих цивилизаций. Они строили огромные храмы из камня и обрабатывали металлы, производя броню, инструменты и оружие. В своих церемониальных обрядах они почитали змею, как воплощение наиболее ценных качеств. Они разработали философию разделения эмоций и интеллектуальной деятельности, что позволило им сосредоточить всю свою энергию на личном развитии и расширении своих территорий. Они считали себя наиболее просвещенными из всех смертных в мире, и в своем высокомерии стремились стать еще величественнее.
Змеиные божества первобытного мира вняли молитвам этих людей и прошипели темные указания им на ухо. Люди запятнали собственные души, проводя человеческие жертвоприношения во имя богов, издеваясь над жертвами и пожирая их, и изменили собственные тела в колдовском ритуале, извиваясь в бассейнах, заполненных живыми змеями, смешивая человеческую плоть со змеиной, став подобием своих богов внешне, мысленно и эмоционально. Освободившись от оков человеческих тел, юань–ти использовали свои новые способности, чтобы завоевать новые земли и расширить границы своей империи.
---
!!!Одна раса, множество форм
Тела всех юань–ти это слияние человеческих и змеиных частей, но их соотношение варьируется индивидуально. После первоначального превращения людей их общество быстро разделилось на касты в зависимости от того, насколько полная была трансформация. Большинство Юань–ти можно разделить на три категории – отродья, проклинатели и чистокровные – мутировавшие стражи выводка и чрезвычайно редкие анафемы также имеют свое место в иерархии.
Все юань–ти могут скрещиваться. Самки обычно откладывают кладку яиц, которые хранятся в общем инкубаторе, хотя живорождение не является редкостью. Результатом спаривания юань–ти различных типов почти всегда являются яйца из которых вылупляются юань–ти более слабого родителя, так что большинство выбирают партнеров того же типа для поддержания силы их личной родословной.
Юань–ти отказались от своей человечности и считают, не змееподобных гуманоидов ущербными существами, которые недалеко ушли в своем развитии от обычных обезьян. Хотя некоторые чистокровные и способны спариваться с людьми, большинство из них считает это омерзительным и делают это только в случае крайней необходимости, когда нужно сохранить свою роль в качестве доверенного лица или советника в человеческом обществе. Очень редкое потомство такого союза всегда чистокровное, хотя признаки этого у человека могут появиться как и сразу при рождении, так и в течение нескольких лет после.
---
!!!Скрытая империя
Больше тысячи лет с момента падения их империи юань–ти остаются в своих скрытых цитаделях, в ожидании подходящего момента, чтобы нанести новый удар. Сегодня, когда их число сильно уменьшилось, а их враги гораздо сильнее, чем раньше, юань–ти понимают, что не могут прибегать к прямым атакам, чтобы вернуть себе достойное место в этом мире. Действуя из подземных руин своих зданий в чужих странах, агенты юань–ти внедряются в правительство противников, чтобы обнаружить слабые стороны предводителей врага, которые они смогут использовать. Юань–ти с нетерпением ждут того дня, когда их империя поднимется и распространится по всему миру, как яд по крови, как это было много лет назад.
Поскольку их численность очень мала, юань–ти понимают, что они уязвимы в открытом противостоянии. Вместо этого, их нынешние планы предполагают, что они никогда не будут править открыто в человеческом обществе, поэтому они набирают влияние, контролируя правителей противника и тех, кто к ним близок с помощью шантажа, наркотиков, магии и увертливых, замаскированных чистокровных юань–ти.
---
!!!Организованное общество
Цель каждого юань–ти – превратиться в идеальную комбинацию змеи и гуманоида. Эта парадигма отражена в кастовой системе общества юань–ти, в которой статус существа диктуется тем, на какой стадии трансформации оно находится.
Канонической формой общества юань–ти является пирамида, наверху которой располагаются отродья, проклинатели на среднем уровне, и чистокровные внизу. Отдельной частью являются анафемы, самые могущественные юань–ти из всех, и две касты с самым низким статусом: стражи выводка и рабы.
Чистокровные юань–ти самые многочисленные и самые человекоподобные, их выделяет одна или несколько присущих змеям особенностей, вроде разрезов зрачков или вкраплений чешуи на коже.
В городах юань–ти чистокровные живут спокойно, однако их желания всегда меркнут перед потребностями отродий и проклинателей.
Чистокровные могут легко сойти за человека, поэтому самая значительная их миссия – быть агентами юань–ти в остальном мире. Они живут инкогнито среди людей как дипломаты, агенты влияния и шпионы. Так как во время выполнения заданий некоторые из них получают значительную власть и влияние, они окружают роскошью свою жизнь в человеческих обличьях, и впоследствии бывают сильно возмущены потребностью вернуться домой, к жизни внизу кастовой системы.
---
!!!Бесстрастное зло
Во время их возвышения много лет назад, юань–ти освободили себя от ярма человеческих эмоций. Теперь они смотрят на мир с бесстрастной, прагматичной точки зрения. Интеллектуально и отстранено они понимают эмоциональные связи, и используют их для влияния на чужие чувства через взятки, любовь или угрозы. Как существа, лишенные эмоций, юань–ти проявляют это в жизни и тактическом планировании. В бою или в повседневной жизни юань–ти используют следующие принципы.
''Чужая жизнь – мелочь''
Юань–ти мало ценят жизни гуманоидов, даже жизни своих рабов и культистов. Они отравляют детей ради исполнения угрозы родителям или превращают одного члена семьи в стража выводка, чтоб наглядно показать остальной семье последствия сопротивления. Они могут воздерживаться от провокации чувств других, если это может негативно повлиять на планы юань–ти. Однако они достаточно хорошо понимают гуманоидную психологию, и знают, что могут пренебречь человеческой жизнью почти в любой ситуации.
Более того, в кастовой системе юань–ти жизнь вышестоящего ценится намного выше нижестоящих, и ожидается, что более слабые граждане сложат свои жизни во имя защиты вышестоящих.
''Выживание прежде всего''
Юань–ти предпочтут отступить или бежать из конфликта, если не верят, что у них есть реальные шансы на успех. Это не трусость, просто практичные юань– ти слишком высоко ценят собственные жизни, чтоб ими рисковать, когда шансы не в их пользу. Короткое отступление может быть попыткой занять лучшую тактическую позицию, найти союзников, или позволить юань–ти изучить оппонентов для создания лучшей тактики.
''Пленяй , не убивай''
Цель расы юань–ти – покорять и порабощать других, но они не признают тот тип зла, который призывает безжалостно убивать и изничтожать всех, кто выступает против них. Исходя из целей доминирования, юань–ти предпочтет захватить, а не убить потенциально полезных противников.
Юань–ти принуждают врагов к согласию при помощи промывки мозгов, очарований, пыток или превращения в стражей выводка. Тем, чью волю сломить не удается, все равно находится применение в виде жертвы богам или еды.
''Положись на обман''
Юань–ти не видят смысла в честном бою. Они незаметны от природы, и, если могут подкрасться незаметно, устроить засаду или убить во сне, они так и сделают, предпочтя эту тактику прямому столкновению. Чистокровный, служащий королевской семье как дегустатор, может отравить еду, и съев кусок объявить ее безопасной.
---
!!!Физические вариации
Не бывает двух одинаково выглядящих юань–ти. Как змеиная, так и человеческая части тела демонстрируют большое разнообразие форм и раскрасок. Так как внешний вид юань–ти в основном передается по наследству, в небольших поселениях юань–ти будут выглядеть похоже, а в больших городах большее смешение даст более широкий диапазон результатов.
| !к20 |!Особенность чистокровного | !к20 |!Цвет кожи |
| 1–3 |Клыки | 1–4 |Темно–коричневая |
| 4–5 |Раздвоенный язык | 5 |Зелено–коричневая |
| 6–9 |Чешуйчатые руки и кисти рук | 6–9 |Светло–коричневая |
| 10–11 |Чешуйчатое лицо | 10–15 |Умеренно–коричневая |
| 12–15 |Чешуйчатый торс | 16 |Бледно–коричневая |
| 16–18 |Змеиные глаза | 17–18 |Красно–коричневая |
| 19–20 |Бросьте дважды, перекидывая 19 и 20 | 19–20 |Желто–коричневая |
| !к100 |!Цвет чешуи | !к100 |!Цвет чешуи |
| 01–06 |Черный | 49–51 |Голубой и серый |
| 07–12 |Черный и коричневый | 52–54 |Голубой и желтый |
| 13–18 |Черный и зеленый | 55–60 |Коричневый |
| 19–23 |Черный и красный | 61–66 |Коричневый и зеленый |
| 24–26 |Черный и белый | 67–73 |Зеленый |
| 27–30 |Черный и желтый | 74–79 |Зеленый и каштановый |
| 31–36 |Черный, золотой и красный | 80–84 |Зеленый и белый |
| 37–42 |Черный, красный и белый | 85–90 |Зеленый и желтый |
| 43–45 |Голубой | 91–96 |Красный и каштановый |
| 46–48 |Голубой и черный | 97–00 |Альбинос |
| !к20 |!Узор чешуи | !к6 |!Цвет языка |
| 1–5 |Пёстрый | 1 |Черный |
| 6–7 |Беспорядочный | 2 |Синий |
| 8–10 |Сетчатый | 3 |Оранжевый |
| 11–15 |Крапчатый | 4 |Бледный |
| 16–20 |Полосатый | 5–6 |Красный |
| !к6 |!Цвет глаз |!к6 |!Цвет глаз |
| 1 |Голубой | 4 |Красный |
| 2 |Коричневый | 5 |Каштановый |
| 3 |Зеленый | 6 |Желтый |
---
!!!Отыгрыш юань – ти
Юань–ти лишены эмоций, однако чувствуют свое полное превосходство над гуманоидами таким же образом, как человек чувствует свое превосходство над курами или кроликами – как само собой разумеющийся факт, не подлежащий сомнению или подтверждению. Для юань–ти существует всего три категории существ: угрозы, юань–ти и мясо. Угрозы – это могущественные существа типа демонов, драконов или джиннов. К юань–ти относятся все существа их вида вне зависимости от касты; хотя соперничающий юань–ти может быть опасным, а слабый или мертвый может быть потенциальной едой, все же в первую очередь это всё равно представители истинного народа, заслуживающие определенного уважения. К мясу относится любое существо, не относящееся к угрозам или к юань–ти, возможно, полезное для каких–то специфических целей, но в ином отношении не заслуживающее беспокойства.
Большинство юань–ти считают ниже своего достоинства разговаривать с мясом. Только чистокровные, которые вращаются среди гуманоидов и посему вынуждены учиться общаться с ними культурно, практикуют взаимодействие с мясом. Значительная часть их обучения посвящается подавлению внутреннего раздражения необходимостью разговаривать с низшими существами, как если бы те были равными, или необходимостью почтительно обращаться с правителями гуманоидов как будто чистокровный – просто советник. Чистокровные–шпионы чувствуют что–то вроде легкого презрения к мясным существам, но могут принимать приятную личину и разговаривать с такими существами сладкоголосым тоном, скрывающим их истинные чувства.
---
!!!Имена юань – ти
Имена юань–ти имеют значения и передаются из поколения в поколение, хотя с годами варианты написания и интонации изменились.
Некоторые юань–ти добавляют больше шипящих к своим именам создавая преувеличенный шипящий звук, основываясь на личных предпочтениях или особенностях анатомии, облегчающих произнесение имени в таком виде. Это имя признается как вариант данного при рождении имени, а не как новое уникальное имя. Юань–ти может пользоваться как данным при рождении именем, так и измененным как описано выше именем, так и (что особенно распространено среди чистокровных) заимствованным у местного населения именем.
''Имена юань–ти:'' Асутали, Зиху, Исзаху, Итстли, Мануюа, Мезтли, Несалли, Отлех, Саисатал, Сзималли, Сисава, Ситлали, Соакош, Талаш, Теоши, Хесзатал, Хитотии, Шалкашлах, Эзтли, Яотал
---
!!!Больше о чистокровных юань-ти
Справочник Воло по монстрам, Глава 1: Происхождение монстров, Юань-ти: Люди-змеи, с. 91
<<<
Магия вызова этого выстрела создаёт хватающие, ядовитые колючие кусты, которые обвивают цель.
<<<
Существо, по которому попал выстрел, получает дополнительно 2к6 урона ядом, его скорость уменьшена на 2 м, и оно получает 2к6 рубящего урона когда впервые в ход перемещается без помощи телепортации.
Цель или любое существо, способное коснуться его, может действием совершить проверку Силы (Атлетика) против Сл спасброска вашего Арканного выстрела. При успехе эффект стрелы оканчивается. В противном случае кусты остаются на 1 минуту, либо пока вы снова не используете этот вариант.
После достижения вами 18 уровня в этом классе, дополнительный урон ядом и рубящий урон этого выстрела увеличивается до 4к6.
* Ваша скорость равна 0, и вы не получаете выгоды ни от каких бонусов к скорости.
* Броски атаки по вам совершаются с преимуществом.
* Вы совершаете броски атаки с помехой.
* Вы совершаете спасброски Ловкости с помехой .
Орден Истребителей призраков - старейший из орденов кровавых охотников, повторно открыл секреты магии крови и усовершенствовал их для борьбы с угрозой нежити. Истребители призраков изучают момент смерти, одержимые мистицизмом перехода на ту сторону и того, как нечестивые силы могут извратить его, чтобы заставить мёртвых вновь подняться. Обратив свои способности для уничтожения подобной мерзости, наиболее рьяные кровавые охотники разыскивают источники таких некротических энергий, намереваясь уничтожить их, где бы они ни возникли.
---
!!! [img[3.png]] Обряд рассвета
Вы изучаете Обряд рассвета в качестве дополнения к вашему умению Алый обряд.
//''Обряд рассвета.''// Ваш Алый обряд наносит урон излучением. Пока обряд активен, вы получаете следующие преимущества:
* Ваше оружие испускает яркий свет в пределах 4 м и тусклый свет в пределах ещё 4 м.
* Вы получаете сопротивление урону некротической энергией.
* Когда вы попадает по нежити атакой оружием, на котором активирован Обряд рассвета, вы добавляете дополнительную Кость Гемократии к урону этого обряда.
---
!!! [img[3.png]] Специалист по проклятиям
<<<
В вашем древнем ордене обучают продвинутому владению проклятиями крови.
<<<
Вы получаете одно дополнительное использование вашего умения Проклятие крови. Кроме того, ваши проклятия крови могут быть нацелены на любое существо, независимо от того, есть у него кровь или нет.
---
!!! [img[7.png]] Эфирная прогулка
В начале вашего хода, если вы дееспособны, вы можете магическим образом шагнуть в завесу между планами. Вы можете перемещаться сквозь других существ и объекты, как если бы они были труднопроходимой местностью, а также видеть и влиять на существ и объекты на Эфирном Плане. Вы получаете 1к10 урона силовым полем, если заканчиваете свой ход внутри объекта или существа.
Это умение длится количество раундов, равное вашему модификатору Интеллекта (минимум 1 раунд). Если вы находитесь внутри объекта, когда это умение заканчивается, вы немедленно перемещаетесь в ближайшее незанятое пространство, которое вы можете занять, и получаете урон силовым полем, равный десятикратному количеству пройденных метров.
Вы можете использовать Эфирную прогулку один раз. Начиная с 15 уровня вы можете использовать Эфирную прогулку дважды. Вы восстанавливаете все потраченные использования после завершения короткого или продолжительного отдыха.
---
!!! [img[11.png]] Клеймо сокрушения
<<<
Ваше Клеймо порицания обнажает часть сущности вашего врага, оставляя его уязвимым для вашего Алого обряда.
<<<
Когда вы попадает по заклеймённому существу атакой оружием, на котором активирован Алый обряд, вы добавляете дополнительную Кость Гемократии к урону этого обряда. Кроме того, если у заклеймённого существа есть особенность Бестелесное перемещение или схожая особенность, оно не может проходить сквозь существ или объекты.
---
!!! [img[15.png]] Проклятие крови: Экзорцизм
<<<
Вы отточили своё владение гемомантией, и стали способны вырывать злое влияние из ваших союзников, наказывая тех, кто проникает в их тело и разум.
<<<
Вы изучаете [[Проклятие крови: Экзорцизм]]. Оно не учитывается в общее количество известных вам проклятий.
---
!!! [img[18.png]] Обряд возрождения
<<<
Вы научились защищать свою угасающую жизнь обрядом крови.
<<<
Когда ваши хиты опускаются до 0, пока у вас есть активный Алый обряд, и вы не умираете сразу, вы вместо этого можете окончить все свои активные Алые обряды и опустить свои хиты до 1.
Принятие Охотничьей пагубы - это болезненный, травмирующий, а иногда и смертельный опыт. Те, кто выживает, находят себя безвозвратно измененными, совершенствованными. Некоторые находят этот опыт захватывающим и используют возможность изменять свое тело и способности с помощью комбинации гемомантии и порочной алхимии. Через несколько поколений экспериментов возник отколовшийся орден кровавых охотников, объединяющий тех, кто использует токсичные эликсиры, чтобы изменять свои возможности в бою, свою кровь и со временем стать чем-то большим, чем они были раньше. Они назвали себя Орденом Мутантов. Исследуя свои цели, чтобы узнать их сильные и слабые стороны, эти кровавые охотники могут изменить свою биологию, чтобы лучше подготовиться к предстоящему конфликту.
---
!!! [img[3.png]] Создание мутагенов
<<<
Вы освоили запретные алхимические формулы - известные как мутагены - которые могут временно изменить ваши умственные и физические способности.
<<<
Бонусным действием вы можете употребить один мутаген. Его эффекты, включая побочные, длятся до завершения следующего короткого или продолжительного отдыха, если не указано иначе. Вы можете действием вывести все мутагены из организма, прекращая действия их эффектов, включая побочные.
Мутагены рассчитаны на конкретную биологию персонажа, который их создал, и не действуют на других существ. Они также нестабильны по своей природе, и со временем теряют свою силу, становясь инертными, если не используются до завершения следующего короткого или продолжительного отдыха.
---
!!! [img[3.png]] Формулы
Количество мутагенов, которые вы можете изготовить по завершении отдыха, и количество известных вам формул увеличивается по мере получения вами уровней в этом классе, как показано в таблице ниже.
| !Уровень кровавого охотника | !Созданные мутагены | !Известные формулы |
| 3 | 1 | 4 |
| 7 | 2 | 5 |
| 11 | 2 | 6 |
| 15 | 3 | 7 |
| 18 | 3 | 8 |
Кроме того, когда вы изучаете новую формулу мутагена, вы можете выбрать одну из известных вами формул, и заменить ее новой формулой мутагена. Вы можете выбрать четыре формулы мутагенов для изучения из вариантов, описанных ниже, и вы можете изготовить один мутаген при завершении короткого или продолжительного отдыха.
<<tabs "[tag[Мутаген]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[7.png]] Странный метаболизм
<<<
Ваш организм приспосабливается к токсинам и ядам, игнорируя их губительное воздействие.
<<<
Вы получаете иммунитет к урону ядом и состоянию [[отравленный|Отравленный]].
Кроме того, вы можете спровоцировать всплеск адреналина, чтобы временно противостоять негативному воздействию мутагена. Бонусным действием вы можете начать игнорировать побочный эффект мутагена, воздействующего на вас, на 1 минуту. После того, как вы используете это умение, вы не можете сделать этого снова, пока не завершите продолжительный отдых.
---
!!! [img[11.png]] Клеймо аксиомы
<<<
Ваша мутагенная гемомантия позволяет Клейму порицания раскрывать истинную природу врага.
<<<
Любые иллюзии или невидимость, действующие на существо, после того как вы клеймите его, заканчиваются, и существо не может получить какую-либо пользу от таких иллюзий или невидимости, пока заклеймено. Если существо, заклеймённое вами, находится в изменённой форме (с помощью заклинания //превращение//, особенности Перевёртыш, умения Дикий облик и подобных эффектов), оно должно преуспеть в спасброске Мудрости, иначе вернётся к своей истинной форме и будет [[ошеломлено|Ошеломлённый]] до конца вашего следующего хода. Каждый раз, когда заклеймённое существо пытается изменить форму, оно должно преуспеть в спасброске Мудрости, иначе вернётся к своей истинной форме и будет [[ошеломлено|Ошеломлённый]] до конца вашего следующего хода.
---
!!! [img[15.png]] Проклятие крови: Разъедание
<<<
Ваше кровавое проклятие может поразить тело существа ужасными токсинами.
<<<
Вы изучаете [[Проклятие крови: Разъедание]]. Оно не учитывается в общее количество известных вам проклятий.
---
!!! [img[18.png]] Высшая мутация
<<<
Ваше тело приспособилось вырабатывать мутагены естественным образом в нужный момент.
<<<
Бонусным действием вы можете выбрать один мутаген, который в данный момент влияет на вас. Его эффекты, включая побочные, оканчиваются, а вы можете сразу же вместо него активировать другой известный вам мутаген.
Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум 1). Вы восстанавливаете все потраченные использования этого умения после завершения продолжительного отдыха.
Вступившие в Орде Нечестивых душ видели пределы возможностей гемократии в борьбе с самыми древними и жестокими извергами и кошмарами мира. Не имея возможности бороться с созданиями подобной силы - существами, способными бесследно исчезнуть среди аристократии или подчинить разум самого стойкого бойца одним лишь взглядом - этот орден доверился непреодолимому и погрузился в тот же колодец развращающих арканных знаний, заключая договоры с меньшим злом, чтобы бороться с большим. Хоть они, возможно, и продали часть себя, члены этого ордена считают, что полученнаяя сила перевешивает уплаченную цену, ведь даже дьяволы вздрагивают, когда узнают, что привлекли внимание Ордена Нечестивых душ.
---
!!! [img[3.png]] Магия договора
<<<
Вы дополняете свои боевые техники способностью сотворять заклинания.
<<<
| !Ур. | !ИЗаг | !ИЗакл | !ЯЗ | !УЯ |
| !3 | 2 | 2 | 1 | 1 |
| !4 | 2 | 2 | 1 | 1 |
| !5 | 2 | 3 | 1 | 1 |
| !6 | 2 | 3 | 2 | 1 |
| !7 | 2 | 4 | 2 | 2 |
| !8 | 2 | 4 | 2 | 2 |
| !9 | 2 | 5 | 2 | 2 |
| !10 | 3 | 5 | 2 | 2 |
| !11 | 3 | 6 | 2 | 2 |
| !12 | 3 | 6 | 2 | 2 |
| !13 | 3 | 7 | 2 | 3 |
| !14 | 3 | 7 | 2 | 3 |
| !15 | 3 | 8 | 2 | 3 |
| !16 | 3 | 8 | 2 | 3 |
| !17 | 3 | 9 | 2 | 3 |
| !18 | 3 | 9 | 2 | 3 |
| !19 | 3 | 10 | 2 | 4 |
| !20 | 3 | 11 | 2 | 4 |
//Ур. - Уровень, ИЗаг - Известные заговоры, ИЗакл - Известные заклинания, ЯЗ - Ячейки заклинаний, УЯ - Уровень ячеек//
''Заговоры (заклинания 0 уровня)''
Вы известны ещё два заговора на ваш выбор из списка заклинаний колдуна. Вы узнаёте ещё один заговор колдуна на 10 уровне.
''Ячейки заклинаний''
Таблица выше показывает, какое количество ячеек для сотворения заклинаний у вас есть, а также уровень этих ячеек — все ваши ячейки заклинаний одного уровня. Для сотворения одного из заклинаний колдуна 1 уровня и выше вы должны потратить ячейку заклинаний. Вы восстанавливаете все потраченные ячейки после завершения продолжительного отдыха.
''Известные заклинания первого и более высоких уровней''
Вам известны два заклинания 1 уровня на ваш выбор из списка заклинаний колдуна.
Колонка «ИЗакл (известные заклинания)» показывает, когда вы сможете выучить новые заклинания. Уровень заклинаний не должен превышать уровень самой высокой имеющейся у вас ячейки заклинаний колдуна.
''Заклинательная гибкость''
Каждый раз, когда вы завершаете продолжительный отдых, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний колдуна того же уровня.
Кроме того, когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний колдуна, с уровнем, не превышающим уровень ячеек заклинаний колдуна.
''Базовая характеристика заклинаний''
Интеллект является базовой характеристикой для сотворения ваших заклинаний колдуна.
Вы используете Интеллект в случаях, когда заклинание колдуна ссылается на базовую характеристику. Кроме того, вы используете Интеллект при определении Сл спасбросков от ваших заклинаний колдуна, и при броске атаки заклинаниями.
```
Сл спасброска = 8 + бонус мастерства + модификатор Интеллекта
Модификатор броска атаки = бонус мастерства + модификатор Интеллекта
```
''Фокусировка заклинания''
Вы можете использовать арканную фокусировку в качестве заклинательной фокусировки для заклинаний колдуна.
---
!!! [img[3.png]] Мистический ритуал
Вы можете восполнить запасы вашей магии договора, потратив 30 минут на проведение особого мистического ритуала. Этот ритуал может быть проведён частью отдыха, а по его окончанию вы восстанавливаете все потраченные ячейки заклинаний, полученные вами от умения Магия договора.
Содержание и метод проведения ритуала могут сильно варьироваться. Ритуалом может быть жертвоприношение, медитация с целью связаться с космосом, выполнение особого условия договора, прямое общение с покровителем или что-то другое. Решите, как будет выглядеть ваш мистический ритуал, основываясь на вашем покровителе и характере договора.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[3.png]] Потусторонний покровитель
Вы заключили сделку с потусторонним существом на ваш выбор: Архифея, Ведьмовской клинок, Великий Древний, Владыка глубин, Гений, Исчадие, Небожитель или Нежить, каждое из которых описано в [[потусторонних покровителях колдуна|Потусторонние покровители]]. Ваш выбор улучшит некоторые из ваших умений ордена.
---
!!! [img[3.png]] Ритуальная фокусировка
<<<
Ваше оружие становится основой вашего договора с выбранным темным покровителем.
<<<
Вы можете использовать оружие, на котором активирован ваш Алый обряд, в качестве заклинательной фокусировки для заклинаний колдуна. Кроме того, вы получаете следующее преимущество:
//''Архифея.''// Когда вы наносите урон существу оружием, на котором активирован Алый обряд, оно подсвечивается слабым светом до конца вашего следующего хода. Пока оно подсвечено таким образом, существо не получает преимуществ от [[невидимости|Невидимый]] и от [[укрытия|Укрытие]] на половину или на три четверти.
//''Ведьмовской клинок.''// Когда вы успешно накладываете на существо Проклятие крови, следующая ваша атака по нему, пока проклятие действует, наносит дополнительный урон, равный вашему бонусу мастерства.
//''Великий Древний.''// Каждый раз, когда вы совершаете критическое попадание по существу, это существо и любые существа на ваш выбор в пределах 2 м от него становятся [[испуганными|Испуганный]] вами до конца вашего следующего хода.
//''Владыка глубин.''// Вы можете дышать под водой. Кроме того, раз в ход, когда вы наносите урон существу оружием, на котором активирован Алый обряд, вы можете уменьшить его скорость на 2 м до начала вашего следующего хода.
//''Гений.''// Бонусным действием вы можете потратить одно использование Проклятия крови и получить скорость полёта 6 м на количество раундов равное вашему модификатору Интеллекта (минимум 1 раунд).
//''Исчадие.''// Если при броске урона Обряда пламени на Кости Гемомантии выпало «1» или «2», вы можете перебросить эту кость и выбрать один из двух результатов.
//''Небожитель.''// Бонусным действием вы можете потратить одно использование Проклятия крови и восстановить одному видимому вами существу в пределах 12 м от вас хиты в количестве равном сумме одного броска Кости Гемомантии и вашего модификатора Интеллекта (минимум 1).
//''Нежить.''// Каждый раз, когда вы получаете урон некротической энергией, вы можете реакцией уменьшить этот урон вдвое. Кроме того, пока у вас активирован любой Алый обряд, ваша внешность меняется, отражая некоторые аспекты вашего покровителя.
---
!!! [img[7.png]] Мистическое исступление
Когда вы действием сотворяете заговор, вы можете бонусным действием совершить одну атаку оружием.
---
!!! [img[7.png]] Раскрытый арканум
<<<
Ваш тёмный покровитель даёт вам возможость сотворять опасное арканное заклинание, определённое вашим договором.
<<<
Вы можете сотворить одно заклинание в зависимости от выбранного вами покровителя. Вы сотворяете его используя любую ячейку заклинаний магии договора, и не можете сделать этого снова, пока не завершите продолжительный отдых.
//''Архифея.''// Вы можете сотворить заклинание //размытый образ//.
//''Ведьмовской клинок.''// Вы можете сотворить заклинание //клеймящая кара//.
//''Великий Древний.''// Вы можете сотворить заклинание //обнаружение мыслей//.
//''Владыка глубин.''// Вы можете сотворить заклинание //порыв ветра//.
//''Гений.''// Вы можете сотворить заклинание //воображаемая сила//.
//''Исчадие.''// Вы можете сотворить заклинание //палящий луч//.
//''Небожитель.''// Вы можете сотворить заклинание //малое восстановление//.
//''Нежить.''// Вы можете сотворить заклинание //глухота/слепота//.
---
!!! [img[11.png]] Клеймо иссушающего шрама
<<<
Ваше Клеймо порицания теперь оставляет тёмные магические шрамы на вашей цели, делая её уязвимой для вашей магии.
<<<
Заклеймённое вами существо совершает спасброски против ваших заклинаний колдуна с помехой.
---
!!! [img[15.png]] Взломанный арканум
<<<
Ваш тёмный покровитель даёт вам возможость сотворять дополнительное арканное заклинание, определённое вашим договором.
<<<
Вы можете сотворить одно заклинание в зависимости от выбранного вами покровителя. Вы сотворяете его используя любую ячейку заклинаний магии договора, и не можете сделать этого снова, пока не завершите продолжительный отдых.
//''Архифея.''// Вы можете сотворить заклинание //замедление//.
//''Ведьмовской клинок.''// Вы можете сотворить заклинание //мерцание//.
//''Великий Древний.''// Вы можете сотворить заклинание //ускорение//.
//''Владыка глубин.''// Вы можете сотворить заклинание //молния//.
//''Гений.''// Вы можете сотворить заклинание //защита от энергии//.
//''Исчадие.''// Вы можете сотворить заклинание //огненный шар//.
//''Небожитель.''// Вы можете сотворить заклинание //возрождение//.
//''Нежить.''// Вы можете сотворить заклинание //разговор с мёртвыми//.
---
!!! [img[18.png]] Проклятие крови: Душегуб
Вы изучаете [[Проклятие крови: Душегуб]]. Оно не учитывается в общее количество известных вам проклятий.
Из множества ужасных проклятий, что терзают мир, лишь немногие столь же древни и страшны, как ликантропия. Передаваясь через кровь, эта болезнь прорастает в организме, наделяя хозяина невообразимой силой и жаждой насилия злобного зверя. Орден Оборотней — это гордый орден кровавых охотников, которые проходят «Укрощение», церемониальное принятие ликантропии от старшего члена ордена. Эти охотники затем используют свои способности, чтобы подчинить силу монстра, которого они скрывают внутри, не теряя в нём себя. Через интенсивное оттачивание собственной силы воли в сочетании с секретами ритуалов кровавой магии ордена эти охотники учатся контролировать и высвобождать свою гибридную форму на короткие промежутки времени. Повышенная физическая сила, неестественная устойчивость и острые как бритва когти делают этих воинов ужасным врагом для любого зла, с которым пересекаются их пути. Тем не менее, никакая подготовка не совершенна, и без осторожности и полной сосредоточенности, даже величайшие из кровавых охотников могут временно потерять контроль из-за жажды крови.
Вступающие в Орден Оборотней выбирают этот путь с пониманием ужасного бремени и трудностей, что приносит их выбор. Большинство из тех, кто принимает это проклятие, становятся озлобленными, бешеными, даже жестокими, но кровавые охотники принимают дары своего внутреннего зверя, сохраняя при этом контроль через интенсивное обучение и магию крови. Эти факторы позволяют членам Ордена Оборотней предотвратить распространение проклятья через их кровь, если они пожелают того. Одним из самых строжайших запретов является заражение кого-либо без одобрения ордена.
Излечение члена Ордена Оборотней от проклятия ликантропии становится страшным позором для него самого, ордена, и тех, кто всё ещё несет в себе проклятие. Известны записи о членах ордена, очищенных против их воли, но эти братья и сёстры легко с готовностью возвращаются в орден, вновь проходя «Укрощение», снова принимая в себя проклятье и восстанавливая свою честь.
Ликантропия проявляется во многих формах. Каждая версия проклятия привязана к определенному виду зверя: волк, медведь, тигр, кабан и крыса - наиболее известные разновидности. Вид проклятия определяет облик зверя в гибридной форме, но особенности, которыми проклятье наделяет своего носителя, остаются относительно одинаковыми.
---
!!! [img[3.png]] Гибридная форма
<<<
Вы начали учиться контролировать проклятие ликантропии, которое теперь живет в вашей крови.
<<<
Бонусным действием вы можете обратиться в свою гибридную форму на 1 час. Вы можете говорить, использовать снаряжение и носить доспехи в этой форме. Бонусным действием вы можете преждевременно вернуться к своей нормальной форме. Вы автоматически возвращаетесь к своей нормальной форме, если [[теряете сознание|Бессознательный]] или умираете. Это умение заменяет правила для ликантропии из «Бестиария».
После использования этого умения вы должны завершить короткий или продолжительный отдых, прежде чем сможете использовать его снова. В гибридной форме вы получаете следующие преимущества и недостатки:
//''Дикая мощь.''// Вы совершаете проверки и спасброски Силы с преимуществом, а также получаете бонус +1 к броскам урона рукопашных атак. Этот бонус увеличивается на 1 на 11 (+2) и 18 уровнях (+3).
//''Крепкая шкура.''// Вы получаете сопротивление к дробящему, колющему и рубящему урону от немагического оружия и оружия, не покрытого серебром. Пока вы не носите тяжёлые доспехи, вы получаете бонус +1 к КД.
//''Удары хищника.''// Вы можете использовать своё умение Алый обряд на ваши безоружные удары, который для этого считаются одним оружием. Вы можете использовать Ловкость вместо Силы для бросков атаки и урона ваших безоружных ударов, которые наносят 1к6 дробящего или рубящего урона (на ваш выбор). Этот урон увеличивается до 1к8 на 11 уровне.
Кроме того, когда вы совершаете действием [[Атака]] безоружную атаку, вы можете частью этого действия дополнительно совершить ещё одну безоружную атаку. Вы не можете совершить более одной дополнительной атаки частью действия [[Атака]], в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).
//''Кровожадность.''// Если в начале вашего хода ваши хиты не превышают половины вашего максимума хитов, вы должны преуспеть в спасброске Мудрости со Сл 8, иначе переместитесь в сторону ближайшего к вам существа и совершите действие Атака, выбрав целью это существо. Если вы концентрируетесь на заклинании или находитесь под эффектом, который не даёт вам поддерживать концентрацию (например, Ярость варвара), вы автоматически проваливаете этот спасбросок.
Вы сами выбираете, будете ли вы использовать умение Дополнительная атака для этой кровожадной атаки. Если существует более одной возможной цели, вы должны совершить бросок кости для случайного определения цели. После совершения этой атаки, вы восстанавливаете контроль над собой.
---
!!! [img[3.png]] Обострённые чувства
<<<
Вы переняли улучшенные чувства прирождённого хищника.
<<<
Вы совершаете проверки Мудрости (Внимательность), которые полагаются на слух или обоняние, с преимуществом.
---
!!! [img[7.png]] Мастерство преследователя
Ваша скорость увеличивается на 2 м. Вы также можете добавить 3 м к дальности своего прыжка и 1 м к высоте прыжка. Кроме того, в Гибридной форме вы получаете следующее дополнительное преимущество:
//''Улучшенные удары хищника.''// Вы получаете бонус +1 к броскам атаки безоружных атак. Этот бонус увеличивается на 1 на 11 (+2) и 18 уровнях (+3). Кроме того, пока на ваших безоружных ударах активен Алый обряд и вы находитесь в Гибридной форме, ваши безоружные удары считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
---
!!! [img[11.png]] Развитая трансформация
<<<
Вы научились лучше высвобождать и контролировать зверя внутри.
<<<
Теперь вы можете обратиться в Гибридную форму дважды, восстанавливая потраченные использования после завершения короткого или продолжительного отдыха. Кроме того, в Гибридной форме вы получаете следующее дополнительное преимущество:
//''Регенерация оборотня.''// В начале каждого своего хода, если у вас есть хотя бы 1 хит и их не больше половины от вашего максимума хитов, вы восстанавливаете количество хитов, равное 1 + ваш мод. Телосложения (минимум 1). Вы получаете эти хиты до совершения спасброска против Кровожадности.
---
!!! [img[15.png]] Клеймо ненасытности
В Гибридной форме вы совершаете с преимуществом спасброски против Кровожадности. Кроме того, ваше Клеймо порицания теперь связывает вашего врага с вашей свирепостью охотника. В Гибридной форме ваши атаки против существ, заклеймённых вами, совершаются с преимуществом.
---
!!! [img[18.png]] Мастерская трансформация
<<<
Вы побороли своего внутреннего хищника и овладели им.
<<<
Вы можете использовать умение Гибридная форма неограниченное количество раз, и ваша Гибридная форма теперь длится, пока вы преждеврменно не вернётесь к своей нормально форме, [[потеряете сознание|Бессознательный]] или умрёте.
Вы также изучаете [[Проклятие крови: Вой]]. Оно не учитывается в общее количество известных вам проклятий.
Магия книг — именно так многие называют волшебство. Это название вполне уместно, если учитывать, сколько времени волшебники проводят с книгами, описывая теории о природе магии. Очень редко можно встретить волшебника, странствующего без книг и свитков, торчащих из сумок. Сами же волшебники готовы пойти на многое, чтобы дотянуться до собрания древних знаний.
Среди волшебников Орден Писарей считается наиболее «книжным». Он выглядит по-разному в различных мирах, однако его главная миссия остается неизменной: записывать магические открытия, чтобы магическое искусство могло процветать. Хотя все волшебники ценят книги заклинаний, писари магически пробуждают свои книги заклинаний, превращая их в верных спутников. Любые волшебники изучают книги, но только волшебники-писари говорят с ними!
---
!!! [img[2.png]] Волшебное перо
Бонусным действием вы можете магическим образом создать Крошечное перо в своей свободной руке. Это перо обладает следующими свойствами:
* Перо не требует чернил. Когда вы пишете им, перо само создает чернила выбранного вами цвета на поверхности письма.
* Время, которое вы должны потратить, чтобы скопировать заклинание в свою книгу заклинаний, равно 2 минутам за каждый уровень заклинания, если вы используете это перо для записи заклинания.
* Вы можете стереть всё, что вы писали этим пером, если вы взмахнёте пером над текстом, потратив бонусное действие, при условии, что текст находится в пределах 1 м от вас.
Это перо исчезает, если вы используете это умение повторно или умираете.
---
!!! [img[2.png]] Пробуждённая книга заклинаний
<<<
Используя специально подготовленные чернила вместе с древними практиками, передающимися в ордене, вы пробуждаете в своей книге заклинаний магическое сознание.
<<<
Пока вы держите в руках эту книгу, она даёт вам следующие преимущества:
* Вы можете использовать свою книгу в качестве магической фокусировки для ваших заклинаний волшебника.
* Когда вы сотворяете заклинание волшебника, используя ячейку заклинания, вы можете временно изменить вид урона этого заклинания на вид урона другого заклинания, которое записано в вашей книге заклинаний, которая магическим образом изменяет формулу заклинания для этого сотворения. Второе заклинание должно быть того же уровня, что и ячейка заклинания, которую вы используете.
* Когда вы сотворяете заклинание волшебника в качестве ритуала, вы можете использовать нормальное время сотворения заклинания, не добавляя 10 минут. Вы не можете использовать это преимущество повторно, пока не завершите продолжительный отдых.
При необходимости вы можете заменить книгу во время короткого отдыха, используя волшебное перо для нанесения магической печати на пустой книге или магической книге заклинаний, на которую вы настроены. По завершению отдыха сознание вашей книги заклинаний призывается в новую книгу, после чего оно превращает новую книгу в вашу книгу заклинаний со всеми заклинаниями в ней. Если ваша старая книга заклинаний всё еще существует, заклинания исчезают с её страниц.
---
!!! [img[6.png]] Проявление разума
<<<
Вы способны вызывать силу разума вашей пробуждённой книги заклинаний.
<<<
Бонусным действием, пока книга находится при вас, вы можете проявить разум книги заклинаний в виде Крошечного призрачного объекта, парящего в незанятом пространстве по вашему выбору в пределах 12 м от вас. Это проявление нематериально и не занимает само пространство. Оно излучает тусклый свет в радиусе 2 м и выглядит как призрачная книга, поток текста или как учёный из прошлого (на ваш выбор).
Пока разум проявлен, он может слышать и видеть, а также обладает ночным зрением в радиусе 20 м. Разум может телепатически делиться с вами тем, что он видит и слышит (действие не требуется).
Каждый раз, когда вы в свой ход сотворяете заклинание волшебника, вы можете сотворить его таким образом, словно вы находитесь в месте, где располагается проявление разума, и используете его чувства. Вы можете делать это количество раз, равное вашему бонусу мастерства, и восстанавливаете все потраченные использования после завершения продолжительного отдыха.
Бонусным действием вы можете приказать проявлению разума переместиться на расстояние до 36 м в незанятое пространство, которое можете видеть либо вы, либо проявление. Оно может проходить сквозь существ, но не объекты.
Проявление разума прерывается, если оно находится на расстоянии более 100 м от вас, если на него сотворяют заклинание //рассеивание магии//, если пробуждённая книга заклинаний будет уничтожена, если вы умираете или если вы освобождаете проявление бонусным действием.
После того, как вы проявляете разум, вы не можете сделать это вновь, пока не завершите продолжительный отдых или не потратите ячейку заклинаний любого уровня на повторное использование этого умения.
---
!!! [img[10.png]] Мастер скриптория
Каждый раз, когда вы завершаете продолжительный отдых, вы можете создать один магический свиток, прикоснувшись волшебным пером к пустому листу бумаги или пергамента, что скопирует одно ваше заклинание из пробуждённой книги заклинаний на этот свиток. Книга заклинаний должна быть в пределах 1 м от вас, когда вы создаёте свиток.
Выбранное заклинание должно быть 1 или 2 уровня, а его время сотворения должно равняться 1 действию. Как только заклинание оказывается на свитке, сила этого заклинания увеличивается, и оно считается на 1 уровень выше изначального. Действием вы можете сотворить заклинание из этого свитка, просто прочитав его. Свиток непонятен никому, кроме вас. Заклинание исчезает со свитка, когда вы сотворяете его или когда заканчиваете следующий продолжительный отдых.
Вы также очень искусны в [[создании свитков заклинаний|Создание свитка заклинания]]. Золото и время, необходимое на создание таких свитков заклинаний, снижается вдвое, если вы используете ваше волшебное перо.
---
!!! [img[14.png]] Единство со словом
<<<
Ваша связь с пробуждённой книгой заклинаний настолько сильна, что ваша душа переплелась с ней.
<<<
Пока ваша книга заклинаний при вас, вы совершаете все проверки Интеллекта (Магия) с преимуществом, так как книга заклинаний помогает вам вспоминать сведения о магии.
Кроме того, если вы получаете урон, пока разум вашей книги заклинаний проявлен, вы можете реакцией освободить разум книги и избежать всего этого урона благодаря магии книги. После этого совершите бросок 3к6. Из книги заклинаний временно исчезают заклинания по вашему выбору, суммарный уровень которых должен быть равен результату броска или выше. Например, если вы получили значение 9, то из книги исчезают заклинания, чей суммарный уровень не менее 9, то есть вы можете потерять одно заклинание 9 уровня, три заклинания 3 уровня или любую другую комбинацию. Если в книге недостаточно заклинаний, чтобы покрыть эту стоимость, ваши хиты опускаются до 0.
Кроме того, вы теряете способность сотворять исчезнувшие заклинания, пока не завершите 1к6 продолжительных отдыхов, даже при условии, что вы найдёте их в свитках или другой книге заклинаний. После завершения необходимого количество отдыхов заклинания вновь появляются в вашей книге заклинаний.
Вы не можете использовать эту реакцию повторно, пока не завершите продолжительный отдых.
<<tabs "[tag[Орден кровавых охотников]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
<<<
Дух орла превращает вас в хищника, с лёгкостью кружащегося по полю боя.
<<<
Пока вы пребываете в ярости и не носите тяжёлых доспехов, вы можете совершать Рывок бонусным действием, а другие существа совершают провоцированные атаки по вам с помехой.
[img width=500 class="centerme" [https://i.imgur.com/x08ZfId.png]]
<<tabs "[tag[Орк - описание]]" "Описание орков" "$:/state/tab1">>
Распространённое в мирах D&D оружие обладает широким разнообразием форм и размеров и сгруппировано в несколько изолированных друг от друга категорий.
---
!!!Таблицы оружия
[[Актуальные таблицы оружия|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=930715601]]
---
!!!Виды оружия
<<tabs "[tag[Виды оружия]]" "По владению" "$:/state/tab1">>
---
!!!Характеристики оружия
<<tabs "[tag[Характеристики оружия]]" "Основные параметры" "$:/state/tab1">>
---
!!!Импровизированное оружие
Иногда при персонажах нет оружия, и им приходится атаковать тем, что окажется под рукой. В импровизированное оружие входят все предметы, которые можно держать одной или двумя руками, такие как разбитая бутылка, ножка от стола, сковорода, колесо от телеги, или мёртвый гоблин.
Во многих случаях импровизированное оружие подобно настоящему оружию, и потому может использоваться как оно. Например, ножка от стола похожа на дубинку. Если Мастер позволит, персонаж, владеющий оружием, может использовать похожий предмет как это оружие и потому использовать бонус мастерства.
Предмет, не похожий на оружие, причиняет урон 1к4 (Мастер назначает вид урона в зависимости от используемого предмета). Если персонаж использует метательное или стрелковое оружие для совершения рукопашной атаки или метает рукопашное оружие, у которого не указана дальность, оно причиняет урон 1к4. У импровизированного метательного оружия дальность равна 4 м.
<<<
Вы вплетаете магию некромантии в ваш выстрел.
<<<
Существо, по которому попал выстрел, получает дополнительно 2к6 урона некротической энергией. Цель должна преуспеть в спасброске Телосложения, иначе урон, наносимый её атаками оружием, уменьшается вдвое до начала вашего следующего хода.
После достижения вами 18 уровня в этом классе, дополнительный урон этого выстрела увеличивается до 4к6.
* Вы ничего не видите.
* Вы автоматически проваливаете все проверки характеристик, связанные со зрением.
* Броски атаки по вам совершаются с преимуществом.
* Вы совершаете броски атаки с помехой.
* Ваша скорость уменьшается вдвое.
!!!Отсутствие D&D > Плохое D&D
"""
Игра в D&D представляет собой совместное ролевое повествование. Не всем это дается легко, особенно совместная часть.
Если вы, находясь за игровым столом, по какой-либо причине не получаете удовольствие от игры, то вы зря тратите свое время, время других Игроков и Мастера, и занимаете место, на которое претендуют другие желающие поиграть. Из этой ситуации есть три выхода: прекратить играть, сменить группу или обратиться к Мастеру, который поможет прийти к общему решению, либо посоветует прибегнуть к первым двум вариантам.
То же относится и к тем, кто не интересуется вовлечением в игровой процесс, а убивает время за столом по иной причине.
"""
---
!!!В чужой монастырь…
"""
Другие Мастера в своих играх не обязаны следовать моим правилам. Большинство Мастеров не будут против обсудить введение / изменение правил между сессиями, как и я не буду против вашего желания поделиться с ними этими правками.
"""
---
!!!Несоблюдение правил
"""
Отказ соблюдать правила равноценен отказу принимать участие в кампании (это не означает, что правила неоспоримы).
Многочисленные нарушения могут караться: унизительным предупреждением, разъяснительной беседой, киком из кампании, баном на все последующие кампании.
"""
---
!!!Спорные ситуации
"""
Правила не высечены на камне и не написаны кровью, они динамичны и могут меняться на ходу. Правила являются не законом, а инструментом, используемым Мастером для ускорения решения спорных ситуаций.
Каждое правило оспоримо, как и решения, принимаемые Игроками или Мастером.
При возникновении какой-либо проблемы, спорной ситуации или вопроса стоит в первую очередь обратиться к Мастеру.
//''Цена''//. Стоимость Маленького и Среднего оружия в серебряных монетах (см).
---
//''Урон''//. Кость урона оружия и вид наносимого им урона: «Д» для дробящего, «К» для колющего, или «Р» для рубящего. Некоторое оружие наносит урон разных видов. В ситуации, где важен вид урона, его выбирает совершающее атаку существо.
Если оружие наносит два вида урона, то весь урон принадлежит обоим видам. Следовательно, существо должно обладать иммунитетом к обоим видам урона, чтобы проигнорировать урон, наносимый этим оружием.
---
//''Критический диапазон''//. Указывает диапазон значений на кости броска атаки, при выпадении которых атаки этим оружием совершают критическое попадание. Если значения не указано, то атака оружием совершает критическое попадание при выпадении «20».
---
//''Дальность.''// Подразумевает под собой эффективную (нормальную) дальность оружия. Максимальная дальность метательного оружия равна утроенному значению дальности. Стрелковое оружие может стрелять на расстояние равное пятикратному значению дальности.
Бросок дальнобойной атаки на дистанцию превышающую эффективную дальность совершается с помехой. Атаки, совершённые по цели, находящейся за пределами максимальной дальности оружия, автоматически промахиваются.
Если у оружия, не являющегося метательным или стрелковым, указана дальность, это означает, что им можно совершать дальнобойные атаки, метая его. Вы используете для бросков атаки и урона тот же модификатор характеристики, что и при совершении рукопашной атаки этим оружием.
---
//''Вес''//. Вес Средней версии оружия. Уменьшите это значение вдвое для Маленького оружия.
<div class="tc-table-of-contents">
<<toc-selective-expandable "Основные правила">>
</div>
У вас, как у ааракокры, есть некоторые общие особенности с вашим народом. Начиная с 1 уровня вы можете летать, что исключительно эффективно при одних обстоятельствах и чрезвычайно опасно при других. Игра за ааракокра требует специального разрешения от Мастера.
|!Особенность |!Описание |
|^Возраст |^Ааракокры достигают зрелости к 15 годам. Обычно ааракокры не живут дольше 60 лет. |
|^Размер |^Рост ааракокр около 1.5 м. Их тела стройные и лёгкие, а вес может быть в диапазоне от 35 до 45 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2. |
|^Житель Плана Воздуха |^Ваше тело адаптировалось к сильным и порывистым ветрам Стихийного Плана Воздуха. Пока вы находитесь на Плане Воздуха, скорость полёта, которую вы получаете от особенности "Крылья", удваивается. |
|^Когти |^У вас есть когти, которыми вы можете совершать безоружные атаки. Когда вы атакуете ими, вы наносите 1к6 + ваш мод. Силы рубящего урона, вместо обычного для безоружной атаки дробящего урона. |
|^Крылья |^Ваши крылья достаточно сильны для того, чтобы поддерживать вас в воздухе. Вы можете летать со скоростью равной вашей скорости ходьбы. Чтобы использовать эту скорость, вы не должны носить средние или тяжёлые доспехи и щиты. Силы ваших крыльев достаточно только для подъёма одного существа размером меньше вашего. Ваши доспехи должны быть специально подогнаны под ваши крылья. Подгонка доспеха требует двух часов работы опытного ремесленника и оплату в размере четверти стоимости доспеха. |
|^Обитатель пиков |^Вы акклиматизированы к большой высоте, включая высоту более 5 км. Вы также адаптированы к сильному ветру, как описано в 5 главе //Руководства Мастера.// |
|^Языки |^Вы разговариваете, читаете и пишете на Общем, Ауране и языке Ааракокр. |
!!!Разновидности
Ааракокра условно разделяют на два вида, основываясь на том, каким образом они были ёвзращены в своём племени. Храбрые сердцем ааракокра выступают защитниками племени, в то время как воплощающие мудрость ааракокра занимают роли шаманов и охотников. Выберите один из этих видов.
<<tabs "[tag[Разновидности ааракокр]]" "Воплощающий мудрость ааракокра" "$:/state/tab1">>
Ваш персонаж аасимар обладает следующими расовыми особенностями.
|!Особенность |!Описание |
|^Возраст |^Аасимары взрослеют как и люди, но они могут прожить до 160 лет. |
|^Размер |^Ваш размер — Средний или Маленький. Вы выбираете размер при выборе этой расы. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2. |
|^Исцеляющие руки |^Действием вы можете коснуться существа и совершить бросок костей к4 в количестве, равном вашему бонусу мастерства. Существо восстанавливает количество хитов, равное результату броска. Вы не можете использовать эту особенность снова, пока не завершите продолжительный отдых. |
|^Небесное сопротивление |^У вас есть сопротивление урону некротической энергией и урону излучением. |
|^Несущий свет |^Вам известен заговор //свет//. Базовой характеристикой для сотворения этого заговора является Харизма. |
|^Сумеречное зрение |^Благословленное светлым духом, ваше зрение может легко адаптироваться к нехватке света. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы можете разговаривать, читать и писать на Общем и Небесном языках. |
!!!Разновидности
Существует три разновидности аасимаров: аасимар–защитник, аасимар–каратель и павший аасимар. Выберите одну из них для своего персонажа.
<<tabs "[tag[Разновидности аасимаров]]" "Аасимар-защитник" "$:/state/tab1">>
Ваш персонаж гит обладает рядом врождённых способностей, являющихся частью его природы.
|!Особенность |!Описание |
|^Возраст |^Гиты достигают совершеннолетия в позднем подростковом возрасте и живут около века. |
|^Размер |^Гиты выше и стройнее людей, их рост может достигать 190 см. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Псионика |^Вам известен заговор //волшебная рука//, при этом рука невидима, когда вы сотворяете заговор от данной особенности. При достижении 3 уровня вы можете один раз сотворить заклинание //прыжок//. Вы должны завершить продолжительный отдых, чтобы сотворить это заклинание с помощью данной особенности ещё раз. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Интеллект. Заклинания, сотворяемые с помощью данной особенности, не требуют материальных компонентов. |
|^Языки |^Вы можете разговаривать, читать и писать на Общем и Гитском языках. |
!!!Разновидности
Гиты делятся на два вида: гитцераи и гитъянки. Выберите один из них.
<<tabs "[tag[Разновидности гитов]]" "Гитцераи" "$:/state/tab1">>
Ваш персонаж гном обладает следующими особенностями, общими для всех гномов.
|!Особенность |!Описание |
|^Возраст |^Гномы взрослеют с той же скоростью, что и люди, и вероятнее всего к 40 годам переходят к спокойной взрослой жизни. Они способны прожить от 350 до почти 500 лет. |
|^Размер |^Рост гномов варьируется между 90 и 120 см, а средний вес составляет 20 кг. Ваш размер — Маленький. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 2. |
|^Гномьи изобретения |^Вы владеете экзотическим "гномьим" оружием, если владеете воинским оружием того же вида.|
|^Гномья хитрость |^Вы совершаете с преимуществом спасброски Интеллекта, Мудрости и Харизмы от заклинаний. |
|^Пронырливость |^Вы можете проходить сквозь пространство, занятое существами, чей размер больше вашего. |
|^Сумеречное зрение |^Привыкнув к жизни под землёй, вы обладаете превосходным зрением при тусклом освещении. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Гномьем языках. Гномий язык, использующий дварфский алфавит, хорошо известен благодаря техническим трактатам и каталогам знаний об окружающем мире. |
!!!Разновидности
В мирах D&D встречаются три вида гномов — скальные, лесные и глубинные гномы. Выберите один из этих видов.
<<tabs "[tag[Разновидности гномов]]" "Глубинный гном" "$:/state/tab1">>
Ваш персонаж гоблин обладает следующими расовыми особенностями.
|!Особенность |!Описание |
|^Возраст |^Гоблины достигают зрелости к 8 годам, и живут до 60 лет. |
|^Размер |^Рост гоблинов варьируется между 90 и 120 см, а вес от 20 до 40 кг. Ваш размер — Маленький. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2, а значение Телосложения увеличивается на 1. |
|^Наследие фей |^Вы совершает спасброски с целью избежания или окончания состояния [[Очарованный]] на себе с преимуществом. |
|^Пронырливость |^Вы можете проходить сквозь пространство, занятое существами, чей размер больше вашего. |
|^Разъяренная мелкота |^Когда вы наносите существу урон атакой или заклинанием, и размер существа больше чем ваш, вы можете этой атакой или заклинанием нанести существу дополнительный урон, равный вашему бонусу мастерства. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Сумеречное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Шустрый побег |^Вы можете использовать действие [[Отход]] или [[Засада]] в качестве бонусного действия в каждый ваш ход. |
|^Языки |^Вы можете разговаривать, читать и писать на Общем и Гоблинском языках. |
Голиафы разделяют несколько общих особенностей.
|!Особенность |!Описание |
|^Возраст |^Продолжительность жизни голиафов сопоставима с человеческой. Они достигают зрелости во второй половине своего второго десятка, и обычно живут меньше века. |
|^Размер |^Голиафы ростом от 210 до 250 см и весят от 120 до 180 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2, а значение Телосложения увеличивается на 1. |
|^Выносливость камня |^Вы можете сосредоточиться, чтобы иногда не обращать внимание на рану. Когда вы получаете урон, вы можете реакцией совершить бросок к12. Добавьте ваш модификатор Телосложения к выпавшему числу и уменьшите общее количество урона на получившийся результат. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Мощное телосложение |^Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом. |
|^Прирождённый атлет |^Вы владеете навыком Атлетика. |
|^Рожденный в горах |^У вас есть сопротивление к урону холодом. Вы привычны к большой высоте, включая высоту больше 5 км. |
|^Языки |^Вы можете разговаривать, читать и писать на Общем и Великаньем языках. |
Ваш персонаж дампир обладает следующими особенностями.
|!Особенность |!Описание |
|^Размер |^Ваш размер - Средний или Маленький на ваш выбор. |
|~|^Если вы заменяете свою расу происхождением, вы сохраняете свой размер. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение одной из характеристик на ваш выбор увеличивается на 2, а значение одной другой характеристики на ваш выбор увеличиваются на 1. Либо значение трёх разных характеристик на ваш выбор увеличивается на 1. Какие бы вы значения ни решили увеличить, ни одно из них не может быть поднято выше 20. |
|~|^Если вы заменяете свою расу происхождением, замените старую особенность "Увеличение характеристик" на эту. |
|^Наследие рода |^Если вы заменяете свою расу происхождением, вы можете сохранить следующие элементы своей расы: любые, полученные от расы, владения навыками, а также скорости карабканья, полёта или плавания. |
|~|^Если вы не сохраняете ни один из этих элементов или выбираете происхождение при создании персонажа, вы получаете владение двумя навыками на ваш выбор. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Паучье лазание |^Ваша скорость карабканья равна вашей скорости ходьбы. При достижении 3 уровня вы можете по вертикальным поверхностям, а также вверх ногами по потолку, оставляя руки свободными. |
|^Природа бессмертного |^Вам не нужно дышать. |
|^Укус вампира |^Укус ваших клыков считается простым рукопашным оружием, которым вы владеете. Оно наносит 1к4 колющего урона, а вы добавляете свой модификатор Телосложения вместо Силы к броскам атаки и урона этим оружием. Если вы потеряли половину от своего максимум хитов, вы совершаете атаки этим укусом с преимуществом. |
|~|^Когда вы попадаете атакой укусом по существу, не являющемуся нежитью или конструктом, вы можете усилить себя одним из следующих способов по вашему выбору: |
|~|^• Вы восстанавливаете хиты в количестве, равном нанесённому укусом колющему урону. |
|~|^• Вы получаете бонус к своей следующей проверке характеристик или броску атаки равный нанесённому укусом колющему урону. |
|~|^Вы можете усилить себя таким образом количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Языки |^Вы можете говорить, читать и писать на Общем и ещё на одном языке, который вы и ваш Мастер сочтёте подходящим для персонажа. |
|~|^Если вы заменяете свою расу происхождением, вы сохраняете свои владения языками и не получаете новых. |
Ваш персонаж дварф обладает рядом врождённых способностей, являющихся частью его природы.
|!Особенность |!Описание |
|^Возраст |^Дварфы взрослеют с той же скоростью, что и люди, но считаются юными, пока не достигнут пятидесятилетнего возраста. В среднем, они живут свыше 350 лет. |
|^Размер |^Рост дварфов находится между 120 и 150 см, и весят они около 70 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 2. |
|^Владение инструментами |^Вы владеете одним видом ремесленных инструментов на ваш выбор: инструменты кузнеца, пивовара или каменщика. |
|^Дварфская боевая тренировка |^Вы владеете простым и воинским дробящим оружием и топорами, а также экзотическим "дварфским" оружием, если владеете воинским оружием того же вида. |
|^Дварфская выносливость |^Вы владеете навыком Выносливость. |
|^Дварфская устойчивость |^Вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом. |
|^Знание камня |^Если вы совершаете проверку Интеллекта (История), связанную с происхождением работы по камню, вы считаетесь владеющим навыком История, и добавляете к проверке удвоенный бонус мастерства вместо обычного. |
|^Сумеречное зрение |^Привыкнув к жизни под землёй, вы отлично видите в условиях слабого освещения. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы разговариваете, читаете и пишете на Общем и Дварфском языках. Дварфский язык состоит из твёрдых согласных и гортанных звуков, и этот акцент будет присутствовать в любом языке, на котором дварф будет говорить. |
!!!Разновидности
Три основных вида дварфов населяют миры D&D: горные дварфы, холмовые дварфы и дуэргары. Выберите один из этих видов.
<<tabs "[tag[Разновидности дварфов]]" "Горный дварф" "$:/state/tab1">>
Ваш персонаж дженази обладает следующими особенностями, общими для всех дженази.
|!Особенность |!Описание |
|^Возраст |^Дженази взрослеют приблизительно с той же скоростью, как и люди, и достигают зрелости в позднем подростковом возрасте. Они живут несколько дольше людей — около 150 лет. Когда дженази умирает, его тело разлагается с той же скоростью, что и человеческое, но при этом оно распадается на элементы, связанные с происхождением дженази. Дженази воздуха расстворяются в воздухе, дженази земли рассыпаются в виде грязи и камней, дженази огня обращаются в пепел и гарь, а дженази воды растекаются лужицами воды. |
|^Размер |^Дженази столь же разнообразны, как и их смертные родители. Ваш размер — Средний или Маленький. Вы выбираете размер при выборе этой расы. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Первичном языках. Первичный — гортанный язык, заполненный резкими слогами и твёрдыми согласными. |
!!!Разновидности
В мирах D&D встречаются четыре вида дженази — дженази воды, дженази воздуха, дженази земли и дженази огня. Выберите один из этих видов.
<<tabs "[tag[Разновидности дженази]]" "Дженази воды" "$:/state/tab1">>
Ваше драконье наследие проявляется в ряде особенностей, общих для всех драконорождённых.
|!Особенность |!Описание |
|^Возраст |^Юные драконорождённые растут быстро. Они начинают ходить через час после вылупления, к трём годам достигают роста и сложения 10-летнего человека, и становятся взрослыми в 15. Живут они примерно до 80 лет. |
|^Размер |^Драконорождённые выше и тяжелее людей, их рост около 2 м и вес около 120 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2. |
|^Драконье наследие |^Вы обладаете драконьим наследием. Выберите одну группу драконов из предложенных ниже - металлические, самоцветные или цветные. Вид урона вашего Оружия дыхания, сопротивление к урону, увеличение характеристик и одна уникальная особенность определяются выбранной группой и видом дракона. |
|^Оружие дыхания |^Когда вы совершаете действие [[Атака]], вы можете заменить одну из ваших атак выдохом магической энергии 3-метровым конусом или 6-метровой линией шириной 1 м (на ваш выбор). Все существа в области выдоха должны совершить спасбросок Ловкости (Сл = 8 + ваш мод. Телосложения + ваш бонус мастерства). Существа получают 1к10 урона в случае проваленного спасброска, или половину этого урона, если спасбросок был успешен. Ваше Драконье наследние определяет вид урона вашего выдоха. Урон оружия дыхания увеличивается на 1к10, когда вы достигаете 5 уровня (2к10), 11 уровня (3к10) и 17 уровня (4к10). Вы можете использовать Оружие дыхания количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Драконьем языках. Драконий язык считается одним из старейших и часто используется во время изучения магии. Этот язык звучит грубо для большинства других существ, и содержит много твёрдых согласных и шипящих звуков. |
---
!!!Драконье наследие
<<tabs "[tag[Драконье наследие]]" "" "$:/state/tab1">>
---
!!!Разновидности
В мирах D&D встречаются четыре вида драконорождённых — закалённые драконорождённые, мглистые драконорождённые, странствующие драконорождённые и устрашающие драконорождённые. Выберите один из этих видов.
<<tabs "[tag[Разновидности драконорождённых]]" "Закалённый драконорождённый" "$:/state/tab1">>
Ваш персонаж кенку обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Кенку имеют более короткую жизнь, чем люди. Они достигают зрелости к 12 годам, и могут дожить до 60 лет. |
|^Размер |^Кенку примерно 150 см в высоту и весят от 40 до 60 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значения вашей Ловкости и Мудрости увеличиваются на 1. |
|^Имитирование |^Вы можете подражать звукам, которые вы слышали, включая голоса. Существо, которое слышит звуки, которые вы издаете, может определить что это имитация при успешной проверке Мудрости (Проницательность), против вашей проверки Харизмы (Обман). |
|^Память кенку |^Когда вы совершаете проверку навыка, которым вы владеете, вы можете совершить его с преимуществом. Вы можете принять решение об использовании этой особенности после объявления результата броска, но до вступления его эффекта в силу. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Языки |^Вы можете читать и писать на Общем и Ауране (воздушный диалект Первичного). |
!!!Разновидности
В мирах D&D встречаются три вида кенку — кенку покражи, кенку савана и кенку страды. Выберите один из этих видов.
<<tabs "[tag[Разновидности кенку]]" "Кенку покражи" "$:/state/tab1">>
Ваш персонаж кобольд обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Кобольды достигают зрелости к 6 годам, и могут дожить до 120 лет, но редко умирают от старости. |
|^Размер |^Рост кобольдов варьируется между 60 и 90 см, а вес от 12 до 20 кг. Ваш размер — Маленький. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2, а значение Интеллекта или Харизмы на ваш выбор увеличивается на 1. |
|^Копатель |^Вы можете действием, удерживая кирку или лопату, наделить себя скоростью копания 2 м. С помощью этой скорости вы можете перемещаться сквозь немагическую и необработанную землю. Используяю эту скорость, вы оставляете за собой туннель, достаточный для беспрепятственного перемещения Маленьких или меньших существ. |
|^Мимолётная отвага |^Когда вы успешно совершаете спасбросок, ваш следующий спасброск или атака до конца вашего следующего хода совершается с преимуществом. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Опытный ловчий |^Вы владеете воровскими инструментами. Если вы совершаете проверку, связанную с установкой ловушки, вы добавляете к проверке удвоенный бонус мастерства вместо обычного. |
|^Пронырливость |^Вы можете проходить сквозь пространство, занятое существами, чей размер больше вашего. |
|^Центр внимания |^Бонусным действием вы можете отвлечь находящихся поблизости противников. Это может быть осуществлено мольбами о пощади, яростным визжанием, заносчивым бахвальством или другими подобными способами. До конца вашего следующего хода ваши союзники совершают свои броски атаки с преимуществом по враждебным существам, которые находятся в пределах 2 м от вас и могут видеть и слышать вас. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Чувствительность к солнечному свету |^Вы совершаете броски атаки и проверки Мудрости (Внимательность), которые полагаются на зрение, с помехой, когда вы, цель вашей атаки или то, что вы пытаетесь увидеть, находится под прямым солнечным светом. Вы можете отказаться от этой особенности, заменив свое Ночное зрение на [[Сумеречное зрение|Зрение и свет]]. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Драконьем языках. Драконий язык считается одним из старейших и часто используется во время изучения магии. Этот язык звучит грубо для большинства других существ, и содержит много твёрдых согласных и шипящих звуков. |
Ваш персонаж кованый обладает следующими расовыми особенностями.
|!Особенность |!Описание |
|^Возраст |^Типичному кованому от 2 до 30 лет. Максимальный срок жизни кованого остаётся загадкой; пока что кованые не показывали признаков износа с возрастом. |
|^Размер |^Рост кованых колеблется от 180 до 210 см, а вес от 125 до 150 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 2, а значение другой характеристики на ваш выбор увеличивается на 1. |
|^Искусственная устойчивость |^Создатель наделил вас выдающейся стойкостью, которая выражается в следующих преимуществах: |
|~|^• Вас не нужно есть, пить и дышать. |
|~|^• Вам не нужно спать, и вас невозможно усыпить. |
|~|^• Вы иммунны к магическому старению. |
|~|^• Вы имунны к болезням. |
|~|^• Вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом. |
|^Комплексная защита |^Ваше тело обладает встроенными уровнями защиты, которые можно улучшить с помощью доспехов: |
|~|^• Вы получаете бонус +1 к КД. |
|~|^• Вы можете надеть только те доспехи, которыми владеете. Чтобы надеть доспех, вы должны встроить его в своё тело, что занимает 1 час. Вы также должны потратить 1 час, если захотите снять его. Вы можете делать это частью отдыха. |
|~|^• Пока вы живы, ваш доспех нельзя снять с вас против вашей воли. |
|^Покой часового |^Во время ночлега, вы вместо сна должны провести не меньше шести часов в неактивном, неподвижном состоянии, вместо сна. В этом состоянии вы кажетесь безжизненным, но всё ещё находитесь в сознании и способны видеть и слышать. |
|^Языки |^Вы можете разговаривать, читать и писать на Общем языке. |
Ваш персонаж человек обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Люди становятся взрослыми в районе 20 лет, и живут менее столетия. |
|^Размер |^Люди сильно различаются по размерам. Некоторые с трудом достигают 150 см, тогда как другие имеют рост, превосходящий 195 см. Вне зависимости от роста, ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение одной вашей характеристики на ваш выбор увеличивается на 1. |
|^Решительность |^Когда вы совершаете бросок атаки, спасбросок или проверку характеристик, вы можете сделать это с преимуществом. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Языки |^Вы можете говорить, читать и писать на Общем и ещё одном языке на ваш выбор. |
!!!Разновидности
Сложно делать какие-либо обобщения относительно людей, также как и разделять их на виды. Условно людей принято различать по их складу ума и способности либо к разностороннему мышлению (человек-эрудит), либо к оттачиванию узкого набора навыков (человек-специалист). Кроме того, отдельно выделяют полулюдей - полудварфов, полуорков и полуэльфов. Калаштары же - прямые потомки людей, созданные из связи с духами с Плана Снов. Выберите один из этих видов.
<<tabs "[[Человек-специалист]][[Человек-эрудит]][[Полудварф]][[Полуорк]][[Полуэльф]][[Калаштар]]" "$:/state/tab1">>
Ваш персонаж людоящер обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Людоящеры достигают зрелости к 14 годам, и редко живут больше 60 лет. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 2. |
|^Природная броня |^Ваше тело покрыто жесткой чешуйчатой шкурой. Пока вы не носите доспехов, ваш КД равен 13 + ваш мод. Ловкости. Вы можете использовать КД своей природной брони, если доспехи, которые вы носите, дают вам более низкий КД. При использовании природной брони, эффект от щита применяется как обычно.|
|^Умелый ремесленник |^Частью короткого отдыха, вы можете собрать кости и шкуру убитого зверя, конструкта, дракона, монстра или растения размером от Маленького и больше, чтобы создать один из следующих предметов: средний щит, бумеранг, болас, дубинка, короткое копье, 1к4 дротиков, 2к4 стрел или игл для духовой трубки. Чтобы использовать эту черту, вам нужно лезвие, такое как кинжал, или подходящие инструменты ремесленника, такие как инструменты кожевника. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Драконьем языках. Драконий язык считается одним из старейших и часто используется во время изучения магии. Этот язык звучит грубо для большинства других существ, и содержит много твёрдых согласных и шипящих звуков. |
!!!Разновидности
В мирах D&D встречаются три вида людоящеров — людоящеры-аспиды, людоящеры-острозубы и людоящеры-чернобрюхи. Выберите один из этих видов.
<<tabs "[tag[Разновидности людоящеров]]" "Людоящер-аспид" "$:/state/tab1">>
Ваш персонаж медвежатник обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Медвежатники достигают зрелости к 16 годам, и живут до 80 лет. |
|^Размер |^Рост медвежатников варьируется между 180 и 240 см, а вес от 100 до 160 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2, а значение Ловкости увеличивается на 1. |
|^Внезапное нападение |^Когда вы попадаете по существу атакой, вы можете нанести ему дополнительно 2к6 урона, если оно ещё не совершало свой ход в этом бою. |
|^Длинные конечности |^Когда вы совершаете рукопашную атаку в свой ход, ваша досягаемость для неё на 1 м больше, чем обычно. |
|^Мощное телосложение |^Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом. |
|^Наследие фей |^Вы совершает спасброски с целью избежания или окончания состояния [[Очарованный]] на себе с преимуществом. |
|^Скрытность |^Вы владеете навыком Скрытность. Кроме того, вы можете перемещаться через пространство, достаточное для существа размером на одну категорию меньше вашего, не [[протискиваясь|Протискивание в меньшее пространство]]. |
|^Сумеречное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Гоблинском языках. |
Ваш персонаж орк обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Орки достигают зрелости к 12 годам, и живут до 50 лет. |
|^Размер |^Рост орков варьируется между 180 и 210 см, а вес от 100 до 130 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значения вашей Силы и Телосложения увеличиваются на 1. |
|^Мощное телосложение |^Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом. |
|^Непоколебимая стойкость |^Если ваши хиты опустились до нуля, но вы при этом не убиты, ваши хиты вместо этого опускаются до 1. Вы не можете использовать эту способность снова, пока не завершите продолжительный отдых. |
|^Прилив адреналина |^Вы можете совершить действие Рывок бонусным действием. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. Каждый раз, когда вы используете эту особенность, вы получаете временные хиты в количестве, равном вашему бонусу мастерства. |
|^Сумеречное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Орочьем языках. |
!!!Разновидности
В мирах D&D встречаются два вида орков — горные орки и серые орки. Выберите один из этих видов.
<<tabs "[tag[Разновидности орков]]" "Горный орк" "$:/state/tab1">>
Ваш персонаж перевёртыш обладает следующими расовыми особенностями.
|!Особенность |!Описание |
|^Возраст |^Перевёртыши взрослеют немного быстрее людей, но живет примерно столько же - столетие или меньше. Хоть перевёртыши и способны скрывать свой возраст, меняя внешность, старение влияет на них также, как и на людей. |
|^Размер |^Рост перевёртышей колеблется от 155 до 185 см, а вес от 55 до 80 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2, а значение другой характеристики на ваш выбор увеличивается на 1. |
|^Инстинкты перевёртыша |^Вы владеете на ваш выбор двумя из следующих навыков: Выступление, Запугивание, Обман, Проницательность и Убеждение. |
|^Перевёртыш |^Вы можете действием изменить свою внешность и голос. Вы определяете характер изменений, включая ваш окрас, длину волос и пол. Вы также можете изменить свой рост и вес, но не настолько, чтобы это повлияло на вашу размерную категорию. Вы можете выглядеть представителем другой расы, но ваши игровые особенности не изменяются. Вы не можете копировать внешность существа, которого вы никогда не видели. Форма, которую вы принимаете, должна обладать таким же базовым расположением конечностей, что и вы. Ваша одежда и экипировка не изменяются этой особенностью. Вы остаётесь в новой форме, пока не используете действие, чтобы вернуться в свою истинную форму или пока не умрёте. |
|^Языки |^Вы можете разговаривать, читать и писать на Общем и двух других языках на ваш выбор. |
Ваш персонаж перерождённый обладает следующими особенностями.
|!Особенность |!Описание |
|^Размер |^Ваш размер - Средний или Маленький на ваш выбор. |
|~|^Если вы заменяете свою расу происхождением, вы сохраняете свой размер. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение одной из характеристик на ваш выбор увеличивается на 2, а значение одной другой характеристики на ваш выбор увеличиваются на 1. Либо значение трёх разных характеристик на ваш выбор увеличивается на 1. Какие бы вы значения ни решили увеличить, ни одно из них не может быть поднято выше 20. |
|~|^Если вы заменяете свою расу происхождением, замените старую особенность "Увеличение характеристик" на эту. |
|^Знания из прошлой жизни |^Вы кратковременно вспоминаете отрывки прошлого, возможно, блеклые воспоминания давней или прежней жизни. Когда вы совершаете проверку характеристики, использующую навык, вы можете совершить бросок к6 сразу после броска к20, и добавить выпавшее значение к результату проверки. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Наследие рода |^Если вы заменяете свою расу происхождением, вы можете сохранить следующие элементы своей расы: любые, полученные от расы, владения навыками, а также скорости карабканья, полёта или плавания. |
|~|^Если вы не сохраняете ни один из этих элементов или выбираете происхождение при создании персонажа, вы получаете владение двумя навыками на ваш выбор. |
|^Природа бессмертного |^Вы избежали смерти, и этот факт представлен следующими преимуществами: |
|~|^• Вас не нужно есть, пить и дышать. |
|~|^• Вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом. |
|~|^• Вы совершаете спасброски от смерти с преимуществом. |
|^Языки |^Вы можете говорить, читать и писать на Общем и ещё на одном языке, который вы и ваш Мастер сочтёте подходящим для персонажа. |
|~|^Если вы заменяете свою расу происхождением, вы сохраняете свои владения языками и не получаете новых. |
Ваш персонаж полурослик обладает следующими особенностями, общими для всех полуросликов.
|!Особенность |!Описание |
|^Возраст |^Полурослики достигают зрелости к 20 годам, и обычно живут до середины своего второго столетия. |
|^Размер |^Рост полуросликов варьируется между 90 и 120 см, а средний вес составляет 20 кг. Ваш размер — Маленький. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2. |
|^Везение |^Если при броске атаки, проверке характеристики или спасброске у вас выпало «1», вы можете перебросить кость, и должны использовать новый результат. |
|^Прирождённый метатель |^Вы весьма недурно кидаете каштаны. Вы владеете пращой и экзотическим "полуросликовым" оружием, если владеете воинским оружием того же вида. Кроме того, вы считаетесь владеющим импровизированным оружием, если метаете его, а дальность его метания увеличивается вдвое. |
|^Пронырливость |^Вы можете проходить сквозь пространство, занятое существами, чей размер больше вашего. |
|^Храбрость |^Вы совершает спасброски с целью избежания или окончания состояния [[Испуганный]] на себе с преимуществом |
|^Языки |^Вы можете говорить, читать и писать на Общем и языке Полуросликов. |
!!!Разновидности
В мирах D&D встречаются четыре вида полуросликов — долговязые, легконогие, коренастые и призрачные полурослики. Выберите один из этих видов.
<<tabs "[tag[Разновидности полуросликов]]" "Долговязый полурослик" "$:/state/tab1">>
Ваш персонаж табакси обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Табакси имеют такую же продолжительность жизни, что и люди. |
|^Размер |^Ваш размер — Средний или Маленький. Вы выбираете размер при выборе этой расы. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2, а значение Харизмы увеличивается на 1. |
|^Кошачье проворство |^Ваши рефлексы и проворство позволяют вам двигаться с большой скоростью. Когда вы перемещаетесь в бою в свой ход, вы можете удвоить свою скорость до конца хода. Использовав эту особенность, вы не можете использовать ее снова, до тех пор пока вы не переместитесь на 0 м за один из ваших ходов. |
|^Кошачьи когти |^Используя свои когти, вы можете карабкаться со скоростью равной вашей скорости ходьбы. Кроме того, вы можете совершать когтями безоружные атаки. Когда вы атакуете ими, вы наносите 1к6 + ваш мод. Силы рубящего урона, вместо обычного для безоружной атаки дробящего урона. |
|^Кошачьи таланты |^Вы владеете навыками Внимательность и Скрытность. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Языки |^Вы можете говорить, читать и писать на Общем и ещё одном языке на ваш выбор. |
Из-за своего дьявольского происхождения все тифлинги обладают некоторыми общими качествами.
|!Особенность |!Описание |
|^Возраст |^Тифлинги взрослеют тогда же, когда и люди, но живут немного дольше. |
|^Размер |^Тифлинги по росту и телосложению схожи с людьми. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2. |
|^Адское сопротивление |^Вы получаете сопротивление к урону огнём. |
|^Ночное зрение |^Благодаря вашему дьявольскому наследию, вы отлично видите при тусклом свете и в темноте. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Языки |^Вы разговариваете, читаете и пишете на Общем и Инфернальном. |
!!!Разновидности
Подраса тифлинга представляет его особую связь с одним из Лордов Девяти Преисподних. Выберите одну из приведённых ниже опций, которая наиболее соответствует инфернальному существу, связанному с семьёй тифлинга.
<<tabs "[tag[Разновидности тифлингов]]" "Тифлинг Асмодея" "$:/state/tab1">>
Ваш персонаж тортл получает следующие особенности, которые позволяют ему справляться с опасностями жестокого мира.
|!Особенность |!Описание |
|^Возраст |^Молодые тортлы в течение нескольких недель после рождения передвигаются ползком, прежде чем научиться ходить на двух ногах. Они достигают зрелости к 15 годам и живут в среднем 50 лет. |
|^Размер |^Ваш размер — Средний или Маленький. Вы выбираете размер при выборе этой расы. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 2, а значение Мудрости увеличивается на 1. |
|^Задерживание дыхания |^Тортлы не являются естественными пловцами, но они могут оставаться под водой в течение некоторого времени, прежде чем всплыть на поверхность. Вы можете задержать свое дыхание на 1 час за раз. |
|^Когти |^У вас есть когти, которыми вы можете совершать безоружные атаки. Когда вы атакуете ими, вы наносите 1к6 + ваш мод. Силы рубящего урона, вместо обычного для безоружной атаки дробящего урона. |
|^Панцирная защита |^В качестве действия вы можете спрятаться в свой панцирь. Пока вы спрятаны, вы получаете бонус +4 к КД, а также преимущество на спасброски Силы и Телосложения. Пока вы находитесь в панцире, считается что вы лежите ничком, ваша скорость становится равной 0 и не может быть увеличена, у вас также помеха на спасброски Ловкости, вы не можете использовать реакции, а единственным действием, которое вы можете предпринять – использовать бонусное действие, чтобы выбраться из панциря. |
|^Природная интуиция |^Благодаря мистической связи с природой, вы получаете владение двумя из следующих навыков на ваш выбор: Внимательность, Выживание, Медицина, Природа, Скрытность или Уход за животными |
|^Природный доспех |^Из-за вашего панциря и формы тела вы не можете носить доспехи. Однако ваш панцирь обеспечивает достаточную защиту; он даёт вам базовый КД 17 (ваш модификатор Ловкости не влияет на это значение). Вы не получаете никакой выгоды от ношения доспехов, но если вы используете щит, то вы можете применять бонус щита как обычно. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Акван. |
Ваш персонаж тритон обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Тритоны достигают зрелости к 15 годам, и могут дожить до 200 лет. |
|^Размер |^Тритоны немного ниже чем люди, в среднем около 150-160 см в высоту. Ваш размер - Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Силы, Телосложения и Харизмы увеличивается на 1. |
|^Амфибия |^Вы можете дышать и на суше, и под водой, а ваша скорость плавания равна вашей скорости ходьбы. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Посланник моря |^Вы способны передавать простые идеи Зверям, Монстрам или Элементалям, обладающим скоростью плавания. Они могут понимать значение ваших слов, хотя у вас нет никакой специальной способности понять их в ответ. |
|^Стражи глубин |^Приспособленность к даже самым экстремальным океанским глубинам дает вам сопротивление урону холодом и вы игнорируете любые негативные эффекты, вызванные глубиной и подводной окружающей средой. |
|^Управление воздухом и водой |^Как дитя моря, вы можете воззвать к элементальной магии воздуха и воды. Вы можете один раз использовать сотворить //туманное облако//. При достижении 3 уровня вы можете один раз сотворить заклинание //порыв ветра//. При достижении 5 уровня, вы также можете сотворить заклинание //водяная стена//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Первичном языках. |
Ваш персонаж фирболг обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Как у гуманоидов, родственных с феями, у фирболгов большая продолжительность жизни. Фирболги достигают зрелости приблизительно к 30 годам, самые старейшие из них доживали до 500 лет. |
|^Размер |^Рост фирболгов варьируется между 200 и 240 см, а вес от 100 до 140 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 2, а значение Силы увеличивается на 1. |
|^Магия фирболгов |^Вы можете сотворять заклинания //маскировка// и //обнаружение магии//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Мудрость. Когда вы используете эту версию заклинания //маскировка//, вы можете казаться на 60 см короче, чем обычно, чтобы легче сливаться с людьми и эльфами. |
|^Мощное телосложение |^Вы считаетесь на один размер больше, когда определяется ваша грузоподъемность и вес, который вы можете толкать, тянуть или отрывать от земли, а также при совершении вами [[особых атак|Атака]] и [[Пробегания|Пробегание *]]. Кроме того, вы совершаете проверки и спасброски Силы против немагических эффектов, делающих вас [[схваченным|Схваченный]], [[опутанным|Опутанный]] или [[сбитым с ног|Сбитый с ног / Лежащий ничком]], с преимуществом. |
|^Незримая поступь |^Бонусным действием, вы можете магически стать [[невидимым|Невидимый]] до начала вашего следующего хода или пока вы не атакуете, не совершите бросок урона, или не вынудите кого-то совершить спасбросок. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Язык зверей и листвы |^У вас есть способность к ограниченному общению с животными и растениями. Они могут понимать значение ваших слов, хотя у вас нет никакой специальной способности понять их в ответ. Вы совершаете с преимуществом проверки Харизмы, чтобы повлиять на них. |
|^Языки |^Вы можете говорить, читать и писать на Общем, Эльфийском и Великаньем языках. |
Ваш персонаж фэйри обладает следующими особенностями.
|!Особенность |!Описание |
|^Вид существа |^Вы — Фея. |
|^Возраст |^Фэйри живут около 100 лет. |
|^Размер |^Ваш размер — Маленький. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2, а значение Ловкости увеличивается на 1. |
|^Крылья |^Ваши крылья достаточно сильны для того, чтобы поддерживать вас в воздухе. Вы можете летать со скоростью равной вашей скорости ходьбы. Чтобы использовать эту скорость, вы не должны носить средние или тяжёлые доспехи и щиты. Силы ваших крыльев достаточно только для подъёма одного существа размером меньше вашего. Ваши доспехи должны быть специально подогнаны под ваши крылья. Подгонка доспеха требует двух часов работы опытного ремесленника и оплату в размере четверти стоимости доспеха. |
|^Магия фэйри |^Вам известен заговор //искусство друидов//. При достижении 3 уровня вы можете один раз сотворить заклинание //огонь фей//. При достижении 5 уровня, вы также можете сотворить заклинание //увеличение/уменьшение//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
|^Пронырливость |^Вы можете проходить сквозь пространство, занятое существами, чей размер больше вашего. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Эльфийском языках. |
Ваш персонаж харенгон обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Харенгоны живут около 100 лет. |
|^Размер |^Ваш размер — Средний или Маленький. Вы выбираете размер при выборе этой расы. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2, а значение Мудрости увеличивается на 1. |
|^Заячье сердце |^Вы можете добавлять ваш бонус мастерства к вашим проверкам инициативы. |
|^Заячьи чувства |^Вы владеете навыком Внимательность. |
|^Счастливые лапы |^Если вы проваливаете спасбросок Ловкости, вы можете реакцией совершить бросок к4 и добавить полученный результат к этому спасброску. Вы не можете совершать эту реакцию, если вы сбиты с ног или ваша скорость равна 0. |
|^Заячий прыжок |^Бонусным действием вы можете прыгнуть на количество метров равное вашему бонусу мастерства. Это перемещение не провоцирует атак. Вы не можете совершать это действие, если ваша скорость равна 0. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Языки |^Вы можете говорить, читать и писать на Общем языке и Сильване. |
Ваш персонаж хобгоблин обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Хобгоблины взрослеют с той же скоростью, что и люди, и имеют примерно такую же продолжительность жизни. |
|^Размер |^Рост хобгоблинов варьируется между 160 и 185 см, а вес от 70 до 90 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 2, а значение Интеллекта увеличивается на 1. |
|^Боевая подготовка |^Вы владеете лёгкими доспехами и двумя видами воинского оружия на ваш выбор. |
|^Наследие фей |^Вы совершает спасброски с целью избежания или окончания состояния [[Очарованный]] на себе с преимуществом. |
|^Удача многих |^Если вы провалили бросок атаки, проверку характеристики или спасбросок, вы можете получить бонус к броску, равный числу союзников, которых вы можете видеть в пределах 6 м от вас (максимум +3). Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Фейский дар |^Вы можете бонусным действием совершать действие [[Помощь]]. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|~|^После достижения 3 уровня, выбирайте один из вариантов ниже каждый раз, когда вы совершаете действие [[Помощь]] с помощью этой особенности: |
|~|^!Гостеприимство |
|~|^Вы и существо, которому вы помогаете, получаете количество временных хитов, равное 1к6 + ваш бонус мастерства. |
|~|^!Злоба |
|~|^До начала вашего следующего хода, когда существо, которому вы помогаете, в первый раз попадает по цели броском атаки, эта цель получает помеху на следующий бросок атаки, который она совершит в течение следующей минуты. |
|~|^!Проход |
|~|^Скорость вашей ходьбы и ходьбы существа, которому вы помогаете, увеличивается на 2 м до начала вашего следующего хода. |
|^Сумеречное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Гоблинском языках. |
Ваш персонаж шифтер обладает следующими расовыми особенностями.
|!Особенность |!Описание |
|^Возраст |^Шифтер быстро созревают как физически, так и эмоционально, достигая юношеского возраста в 10 лет. Они редко проживают больше 70 лет. |
|^Размер |^Рост шифтеров колеблется от 145 до 180 см, а вес от 45 до 70 кг. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Обращение |^Вы можете бонусным действием частично принять более звериный облик. Это превращение длится 1 минуту, пока вы не умрёте, или пока вы не вернётесь к своему обычному облику бонусным действием. Когда вы обращаетесь, вы получаете временные хиты в количестве равном вашему удвоенному бонусу мастерства. Вы также получаете дополнительные преимущества в зависимости от вашей подрасы. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Языки |^Вы можете говорить, читать и писать на Общем и ещё одном языке на ваш выбор. |
!!!Разновидности
Внутренний зверь формирует каждого шифтера как физически, так и ментально. В мирах D&D встречаются четыре вида шифтеров — быстроногие, длиннозубые, остроглазые и толстошкурые шифтеры. Выберите один из этих видов.
<<tabs "[tag[Разновидности шифтеров]]" " " "$:/state/tab1">>
Ваш персонаж эльф обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Несмотря на то, что физически эльфы взрослеют в том же возрасте, что и люди, их понимание о взрослении выходит за рамки физического развития, и располагается в сфере житейского опыта. Обычно эльф получает статус взрослого и взрослое имя в возрасте 100 лет, и может прожить до 750 лет. |
|^Размер |^Рост эльфов колеблется между 150 и 185 см, у них стройное телосложение. Ваш размер — Средний. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 2. |
|^Владение эльфийским оружием |^Вы владеете простым клинковым оружием, а также экзотическим "эльфийским" оружием, если владеете воинским оружием того же вида. |
|^Наследие фей |^Вы совершает спасброски с целью избежания или окончания состояния [[Очарованный]] на себе с преимуществом. |
|^Обострённые чувства |^Вы владеете навыком Внимательность. |
|^Сумеречное зрение |^Привыкнув к сумраку леса и ночному небу, вы отлично видите в условиях слабого освещения. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Транс |^Вам не нужно спать, и магия не может усыпить вас. Вместо сна вы погружаетесь в глубокую медитацию, находясь в полубессознательном состоянии до 4 часов в сутки. Во время этой медитации вы можете грезить о разных вещах. Некоторые из этих грёз являются ментальными упражнениями, выработанными за годы тренировок. После такого отдыха вы получаете все преимущества 8-часового сна. Кроме того, каждый раз когда вы завершаете продолжительный отдых, вы можете получить два владения на ваш выбор, каждое из которых может быть оружием или инструментом. Вы получаете эти владения мистическим образом, извлекая их из общей эльфийской памяти, и сохраняете их до завершения следующего продолжительного отдыха. |
|^Языки |^Вы можете говорить, читать и писать на Общем и Эльфийском языках. |
!!!Разновидности
Семь основных видов эльфов населяют миры D&D: бледные эльфы, высшие эльфы, лесные эльфы, морские эльфы, тёмные эльфы (которых обычно называют дроу), шадар-каи и эладрины. Выберите один из этих видов.
<<tabs "[tag[Разновидности эльфов]]" " "$:/state/tab1">>
Ваш персонаж юань-ти обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Юань-ти взрослеют как люди, и имеют такую же продолжительность жизни. |
|^Размер |^Ваш размер — Средний или Маленький. Вы выбираете размер при выборе этой расы. |
|^Скорость |^Ваша базовая скорость перемещения — 6 метров. |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 2, а значение Интеллекта увеличивается на 1. |
|^Адаптивное сопротивление |^Когда вы становитесь целью заклинания, вынуждающего вас совершить спасбросок, вы можете реакцией попытаться противостоять ему и совершить спасбросок с преимуществом. |
|^Врождённая магия |^Вам известен заговор //ядовитые брызги//. При достижении 3 уровня вы можете один раз сотворить заклинание //внушение//. Вы восстанавливаете способность сотворять это заклинание с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
|^Змеиная устойчивость |^Вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом. |
|^Родство со змеями |^Вы можете сотворять заклинание //дружба с животными// неограниченное количество раз этим свойством, но только на змей. Базовой характеристикой для этого заклинания является Харизма. |
|^Сумеречное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Языки |^Вы можете говорить, читать и писать на Общем, Драконьем и языке Бездны. |
Особые инструменты помогают делать что-то, что без них сделать нельзя, например, подделывать документы и вскрывать замки.
<<tabs "[tag[Особые инструменты]nsort[]]" "Воровские инструменты" "$:/state/tab1" "tc-vertical">>
Остроглазые шифтеры сообразительны и проницательны. Они постоянно начеку, настороженно ожидая возможные угрозы. Некоторые из них предпочитают доверять собственной интуции, не меньше чем прочим органам чувств. Остроглазые шифтеры - отличные охотники, а также они, как правило, становятся духовными лидерами сообществ шифтеров.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 2, а значение Ловкости увеличивается на 1. |
|^Ищейка |^Вы владеете навыком Выживание. |
|^Особенность обращения |^Пока вы обращены, вы совершаете все проверки Мудрости с преимуществом. Кроме того, ни одно существо в пределах 6 м от вас не может получить преимущество на бросок атаки, нацеленной на вас, пока вы дееспособны. |
Даже опытным приключенцам необходим отдых, чтобы перевести дыхание между сражениями, обработать раны и подготовиться к грядущим опасностям. Вы можете брать три [[передышки|Передышка]] и один [[короткий отдых|Короткий отдых]] в течении дня и [[ночлег |Ночлег и лагерь]] в конце каждого дня.
//Успешное завершение ночлега предоставляет вам те же преимущества, что и// [[короткий отдых|Короткий отдых]].
Вы также можете провести неделю [[продолжительного отдыха|Продолжительный отдых]] в безопасном месте.
* Вы совершаете броски атаки и проверки характеристик с помехой.
Если вы совершаете действие Отход, то до конца текущего хода ваше перемещение не провоцирует атаки.
Вы значительную часть своей жизни прожили в уединении — либо в закрытой общине, такой как монастырь, либо вообще в одиночестве. Вдали от шумного общества вы нашли тишину, спокойствие, а возможно, и ответы на важные вопросы.
* ''Владение навыками:'' Медицина, Религия
* ''Владение инструментами:'' [[Набор травника|Набор травника]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Контейнер для свитков, битком набитый вашими молитвами и изысканиями, тёплое одеяло, комплект одежды селянина, набор травника, 5 см
!!!Жизнь в уединении
Почему вы жили в изоляции, и из-за чего вы прервали своё уединение? Придумайте вместе с Мастером точную природу вашего уединения, либо определите её по таблице, случайным образом.
| !к8 |!Жизнь в уединении |
| 1 |Я искал духовное просветление. |
| 2 |Я жил в общине согласно предписаниям моей веры. |
| 3 |Я был изгнан за преступление, которого не совершал. |
| 4 |Я покинул общество после события, изменившего мою жизнь. |
| 5 |Мне нужно было тихое место для работы над картиной, книгой, музыкой или манифестом. |
| 6 |Мне нужна была община, близкая к природе, вдали от цивилизации. |
| 7 |Я был смотрителем древних руин или реликвии. |
| 8 |Я был пилигримом, ищущим существо, место или реликвию. |
!!!Умение: Откровение
Тихое уединение в долгом отшельничестве дало вам доступ к великому откровению. Точная природа этого откровения зависит от характера вашего уединения. Это может быть истина о вселенной, божествах, влиятельных созданиях на внешних планах, или силах природы. Это может быть место, которое никто и никогда не видел. Вы могли обнаружить что-то, что давно было забыто, или найти реликвию прошлого, способную переписать историю. Это может быть информация, которая может причинить вред тем, кто изгнал вас, и тем самым ставшая причиной возвращения в общество.
Придумайте вместе с Мастером детали вашего откровения и его влияние на кампанию.
!!!Другие отшельники
Эта предыстория подразумевает созерцательное уединение в учениях и молитве. Если вы хотите играть жителем суровой дикой местности, избегающим других существ, попробуйте взять предысторию чужеземца. С другой стороны, если вам нужна более религиозная направленность, можете взять предысторию прислужника. Вы можете даже быть шарлатаном, выдающим себя за мудреца и святого, и дурачащим набожных глупцов.
!!!Персонализация
Некоторым отшельникам комфортно живётся в уединении, а другие жаждут вернуться в общество. Как бы вы ни относились к одиночеству, такая жизнь повлияла на вашу жизненную позицию и идеалы. Некоторые даже сходят с ума от долгих лет вдали от общества.
| !к8 |!Черта характера |
| 1 |Я так много прожил в изоляции, что редко говорю, предпочитая жесты и редкое мычание. |
| 2 |Я абсолютно безмятежен, даже в самых ужасных ситуациях. |
| 3 |У лидера моей общины были высказывания для любой ситуации, и я стремлюсь поделиться этой мудростью. |
| 4 |Я ужасно сопереживаю всем, кто страдает. |
| 5 |Мне чужд этикет и общественные ожидания. |
| 6 |Я связываю всё, что происходит со мной, с грандиозным замыслом космического масштаба. |
| 7 |Я часто погружаюсь в свои мысли, отвлекаясь от окружения. |
| 8 |Я работаю над великой философской теорией и люблю тех, кто разделяет мои идеи. |
| !к6 |!Идеал |
| 1 |''Всеобщее благо.'' Мои дары предназначены для всех, я не должен использовать их в одиночку. |
| 2 |''Логика.'' Эмоции не должны затмевать наше видение того, что истинно и справедливо, а также наше логическое мышление. |
| 3 |''Свободомыслие.'' Изыскания и любопытство — столпы прогресса. |
| 4 |''Сила.'' Уединение и созерцание — путь к мистической и магической силе. |
| 5 |''Сам живи и другим не мешай.'' Вмешиваясь в дела других, причиняешь одни лишь проблемы. |
| 6 |''Самопознание.'' Познаешь себя — познаешь всё вокруг. |
| !к6 |!Привязанность |
| 1 |Самое важное для меня — это другие отшельники, жившие рядом, или мой орден. |
| 2 |Я уединился, чтобы спрятаться от тех, кто мог охотиться за мной. Когда-нибудь я сам брошу им вызов. |
| 3 |Я всё ещё ищу просветление, которого не достиг в уединении, но оно по-прежнему ускользает от меня. |
| 4 |Я уединился, потому что влюбился в ту, с кем мне не суждено жить. |
| 5 |Если моё откровение сбудется, мир будет обречён на гибель. |
| 6 |Моя изоляция позволила познать великое зло, уничтожить которое могу один лишь я. |
| !к6 |!Слабость |
| 1 |Теперь, вернувшись в мир, я слишком сильно увлекаюсь его радостями. |
| 2 |Я скрываю тёмные, кровожадные мысли, не ушедшие ни после изоляции, ни после медитаций. |
| 3 |Я категоричен в мыслях и подходе к жизни. |
| 4 |Я позволяю жажде победить в споре становиться сильнее дружбы и гармонии. |
| 5 |Я слишком сильно рискую, стремясь найти утраченные частички знаний. |
| 6 |Мне нравится хранить тайны, и я ими ни с кем не делюсь. |
Архетип Охотника означает признание своего места в качестве оплота между цивилизацией и ужасами диких земель. Если вы пошли по пути Охотника, вы обучаетесь специализированным техникам ведения боя с угрозами, встречаемыми вами, начиная неистовыми ограми и ордами орков, и заканчивая возвышающимися великанами и ужасающими драконами.
---
!!! [img[3.png]] Магия охотника
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//обнаружение добра и зла// |
| !5 |//невидимость// |
| !9 |//стихийное оружие// |
| !13 |//огненный щит// |
| !17 |//изгоняющая кара// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Добыча охотника
Вы получаете одно из следующих умений на свой выбор:
<<tabs "[tag[Добыча охотника]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[7.png]] Оборонительная тактика
Вы получаете одно из следующих умений на свой выбор:
<<tabs "[tag[Оборонительная тактика]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[11.png]] Мультиатака
Вы получаете одно из следующих умений на свой выбор:
<<tabs "[tag[Мультиатака]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[15.png]] Улучшенная оборона охотника
Вы получаете одно из следующих умений на свой выбор:
<<tabs "[tag[Улучшенная оборона охотника]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
* Вы не можете атаковать того, кто вас очаровал, а также делать его целью умения или эффекта, причиняющего вред.
* Существо, очаровавшее вас, совершает с преимуществом все проверки характеристик при социальном взаимодействии с вами.
Очки героя позволяют вам получать разнообразные преимущества за хороший отыгрыш особенностей личности вашего персонажа.
Вы получаете одно Очко героя в начале каждой игровой сессии.
Вы также можете ''Заявить о неудаче'', чтобы получить Очко героя. Для этого вы должны озвучить своё намерение Мастеру и дать помеху на свой бросок атаки, спасбросок или проверку характеристик (у броска не должно быть помех от других источников), основанные на ваших особенностях личности (чертах характера, идеалах, привязанностях, слабостях и т.п.), либо принять решение, создающее для вас нежелательное препятствие.
Например: //"Я легко отвлекаюсь на блестящие предметы, поэтому мой взгляд прикован к груде сокровищ. Могу ли я Заявить о неудаче и получить помеху на спасбросок против огненного дыхания дракона?"// или //"Этот парень хочет помочь нам, но я не доверяю всем незнакомцам. Я собираюсь грубо отказать ему. Могу ли я Заявить о неудаче?"//
Вы не можете иметь больше 3 очков героя одновременно, и можете использовать их следующим образом:
* //''Героическое вдохновение.''// Вы можете бросить 1к6 добавить и добавить выпавшее число к своему броску атаки, спасброску или проверке характеристики. Вы можете принять решение об использовании очка героя после объявления результата броска к20, но до вступления его эффекта в силу. Вы не можете тратить больше одного очка героя на один бросок.
* //''"Даже не почувствовал!"''// Пока вы дееспособны, вы можете в свой ход потратить одну Кость Хитов, чтобы восстановить хиты. Совершите бросок кости, добавьте модификатор Телосложения и восстановите хиты в количестве, равном полученному значению (минимум 1).
* //''"Есть ещё порох!"''// Вы можете восстановить одно использование умения, которое обычно восстанавливается на коротком отдыхе.
* //''"Есть у меня одна вещица!"''// Вы можете с позволения Мастера добавить в свой инвентарь один предмет из списка снаряжения не дороже 25 см и не тяжелее 5 кг, уплатив указанную цену.
* //''"Погоди, костлявая!"''// Вы можете один раз перебросить третий проваленный спасбросок от смерти.
* //''"Слыхал я о таких!"''// Вы можете узнать у Мастера полезный факт об интересующем вас представителе Бестиария.
* //''"Я тут кое-кого знаю!"''// Вы можете узнать у Мастера расположение NPC, который может обладать важной для вас информацией или предоставить необходимую услугу.
* Вы [[недееспособны|Недееспособный]].
* Вы не способны перемещаться и говорите, запинаясь.
* Вы автоматически проваливаете проверки и спасброски Силы и Ловкости.
* Броски атаки по вам совершаются с преимуществом.
[img width=330 class="centerme" [https://i.imgur.com/b5sStCB.png]]
Аасимар, которого коснулись силы тьмы в юности или который обратился ко злу уже будучи взрослым, может стать одним из павших – группы аасимаров, внутренний свет которых заменила тень.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 1. |
|^Саван смерти |^Начиная с 3 уровня, Вы можете бонусным действием высвободить божественную энергию внутри себя, заставляя ваши глаза превратиться в бездну тьмы, а два призрачных, не способных взлететь скелета крыльев вырасти у вас за спиной. Существа, не являющиеся вашими союзниками, видящие вас и находящиеся в пределах 2 м от вас, должны преуспеть в спасброске Харизмы (Сл 8 + ваш бонус мастерства + ваш модификатор Харизмы), иначе станут [[испуганным|Испуганный]] вами до конца вашего следующего хода. Ваше превращение длится 1 минуту или пока вы не закончите его бонусным действием. Пока превращение не закончится, раз в ход вы можете нанести дополнительный урон некротической энергией одной цели, когда вы наносите ей урон атакой или заклинанием. Дополнительный урон равен вашему бонусу мастерства. Вы не можете использовать эту особенность снова, пока не завершите продолжительный отдых. |
Падение с большой высоты – это значительный риск для искателей приключений и их врагов.
Когда вы падаете с большой высоты, то вы немедленно падаете на 100 м в этот ход. Если в следующий ход вы всё ещё падаете, то вы снова падаете на 100 м до конца хода. Это продолжается до тех пор, пока падение не завершится либо из-за того, что вы ударились оземь, либо потому, что падение прекратилось по иным причинам.
В конце падения вы получаете 1к6 дробящего урона за каждые 2 м падения до максимума в 100к6. Вы также приземляетесь сбитым с ног, если только не смогли как-то избежать урона от падения.
Если вы падаете в воду, снег или другую относительно мягкую субстанцию, прежде чем рассчитывать урон от падения, вычтете 4 м из высоты падения (или 6 м, если вы намеренно нырнули).
Вы не получаете урон от падения, если упали с высоты, не превышающей вашу дистанцию прыжка в высоту с разбега.
---
!!!Летающие существа и падение
Летающие существа падают во время полёта, если они сбиты с ног, если их скорость падает до 0 м или если они иным способом теряют возможность двигаться, за исключением случаев, когда они могут парить или удерживаются на высоте за счёт магии, как, например, при заклинании //полёт//.
Если летающее существо начинает любой свой следующий ход, всё ещё падая, и оно сбито с ног, оно может прекратить падение, потратив половину своей скорости полёта на то, чтобы окончить состояние сбитый с ног (как будто оно встало в воздухе).
---
!!!Падение на существо
Когда одно существо падает в пространство, занимаемое другим существом, и ни одно из них не меньше Маленького, второе существо должно преуспеть в спасброске Ловкости Сл 15, иначе попадёт под удар падающего существа. В результате такого столкновения урон от падения разделяется поровну между обоими существами, а существо, попавшее под удар, [[сбивается с ног|Сбитый с ног / Лежащий ничком]], если оно не превышает размерами падающее существо как минимум на две категории.
//Стоимость перемещения:// 0 м.
Падение накладывает состояние [[Лежащий ничком|Сбитый с ног / Лежащий ничком]].
Для перемещения в положении лёжа нужно или ползти, или использовать магию, такую как телепортация.
[img width=460 class="centerme" [https://i.imgur.com/Ldm21On.png]]
<<tabs "[[Описание паладинов]] [[Классовые умения паладинов]] [[Священные клятвы]]" "" "$:/state/tab1">>
* Вы [[недееспособны|Недееспособный]].
* Вы не способны перемещаться и говорить.
* Вы автоматически проваливаете проверки и спасброски Силы и Ловкости.
* Вы не добавляете модификатор Ловкости и бонус от щита к своему КД.
* Броски атаки по вам совершаются с преимуществом.
* Любая атака, попавшая по вам, считается критическим попаданием.
Вы можете действием оказать первую помощь ''умирающему'' существу, потратив одно использование //комплекта целителя// или //саквояжа хирурга//. Совершите проверку Мудрости (Медицина) со Сл 10, при успехе цель ''стабилизирована''. Если вы используете подручные средства вместо надлежащих инструментов, совершите проверку с помехой.
''Стабилизированное'' существо перестает быть ''умирающим'', но становится ''бессознательным'', пока не восстановит хотя бы 1 хит. Получив урон, существо снова становится ''умирающим''. ''Стабилизированное'' существо, не получившее лечения, восстанавливает 1 хит после 1к4 часов.
[img width=360 class="centerme" [https://i.imgur.com/pqzG39V.png]]
<<tabs "[tag[Перевёртыш - описание]]" "" "$:/state/tab1">>
<div class="tc-table-of-contents">
<<toc-selective-expandable "Передвижение">>
</div>
Передышка - это 5-минутный перерыв от напряженной активности. Вы не можете получить преимущества более чем от 3 передышек в сутки. Во время передышки вы можете:
* Потратить одну Кость Хитов.
* Утолить жажду и/или голод.
* Облегчить действие яда или излечить болезнь набором травника.
В бою персонажи и чудовища постоянно двигаются, используя перемещение и позиционирование для получения превосходства.
Вы можете в свой ход переместиться на расстояние, не превышающее вашу скорость, используя приведённые здесь правила.
Ваше перемещение может включать прыжки, лазание и плавание. Эти разные режимы перемещения можно объединять с ходьбой, либо всё перемещение может состоять из них. Как бы вы ни перемещались, вы вычитаете расстояние всех частей перемещения из скорости, пока не закончите перемещаться.
---
!!!Особые виды перемещения
<<tabs "[tag[Особые виды перемещения]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!!Прерывание перемещения
Вы можете прерывать перемещение в свой ход, совершая что-то между двумя перемещениями. Например, если у вас скорость 6 м, вы можете переместиться на 2 м, совершить действие, а затем переместиться на 4 м.
Если вы совершаете действие, включающее более одной атаки оружием, вы можете дополнительно прерывать перемещение этими атаками.
---
!!!Использование разных скоростей
Если у вас есть несколько скоростей, например, скорость ходьбы и скорость полёта, вы можете переключаться между ними во время перемещения. При каждом переключении вычитайте уже пройдённое расстояние из новой скорости. Разница покажет, на сколько ещё вы можете переместиться. Если результат равен 0 или меньше, вы не можете использовать эту новую скорость во время текущего перемещения.
Например, если у вас есть скорость ходьбы 6 м и скорость полёта 12 м за счёт заклинания //полёт//, вы можете пролететь 4 м, потом пройти 6 - 4 = 2 м, Затем вновь подняться в воздух и пролететь ещё 12 - 4 - 2 = 6 м.
---
!!!Перемещение по сетке
''Клетки''. Каждая клетка поля изображает площадь 1 × 1 м.
''Вход в клетку''. Для того, чтобы войти в клетку, вы должны потратить как минимум 1 м перемещения. Если клетка стоит дополнительного перемещения, например, из-за труднопроходимой местности, у вас должно хватать перемещения, чтобы войти в эту клетку.
''Диагонали''. При подсчете расстояния или перемещения по диагонали каждая вторая диагональная клетка считается за 2 м.
''Углы''. Диагональное перемещение не может пересекать углы стен, больших деревьев и прочих особенностей местности, заполняющих всю свою клетку.
''Расстояния''. Для определения на сетке расстояния между двумя существами или предметами начните подсчёт с клетки, смежной с одним из них и считайте кратчайшим маршрутом до клетки, в которой находится другой, включительно.
---
!!!Перемещение и другие существа
Вы можете проходить сквозь пространство невраждебных существ. Сквозь пространство враждебного существа можно пройти только если его размер как минимум на две категории больше или меньше вашего. Помните, что пространство других существ является для вас труднопроходимой местностью.
Вне зависимости от того, дружественное существо или нет, вы не можете добровольно закончить перемещение в его пространстве.
Если вы во время перемещения покидаете досягаемость враждебного существа, вы, как обычно, провоцируете атаку.
//Стоимость перемещения:// +1 м за 1 м.
Это правило действует даже если на одно и то же место действуют сразу несколько эффектов, делающих его труднопроходимым, таких как подлесок, крутые ступени, снег или мелкое болото.
Пространство другого существа, как враждебного, так и нет, тоже считается труднопроходимой местностью.
[img class="centerme" [https://i.imgur.com/maJlbdQ.jpg]]
<<tabs "[tag[Перерождённый - описание]]" "" "$:/state/tab1">>
Когда видимое вами существо попадает атакой по цели, которая находится в пределах 1 м от вас, вы можете реакцией уменшить количество урона, получаемого целью, на 1к10 + ваш бонус мастерства. Вы должны держать щит или рукопашное оружие, чтобы использовать эту реакцию.
Певцы клинка совершенствуются в магической традиции, состоящей из фехтования и танца. Изначально созданная эльфами, эта традиция была принята неэльфийскими волшебниками, почитающими и распространяющими эльфийские техники.
В бою певец клинка использует ряд сложных, но элегантных манёвров, отражающих возможный урон и позволяющих использовать магию для разрушительных атак и ловкой защиты. Многие из тех, кто наблюдал за работой певца клинка, вспоминают это зрелище как одно из самых прекрасных событий в своей жизни — великолепный танец под аккомпанемент поющего клинка.
---
!!!Стили певцов клинка
С момента своего зарождения как боевого и магического искусства, Песнь клинка была связана с мечом. Однако многие поколения обучения привели к появлению различных стилей Песни клинка в зависимости от используемого оружия ближнего боя. Техники этих стилей передаются от мастера к ученикам в небольших школах, некоторые из которых имеют отдельное здание, предназначенное для обучения. Даже самым новым стилям уже сотни лет, но они до сих пор преподаются своими создателями благодаря долгой жизни эльфов.
Стили Песни клинка в целом классифицируются по типу используемого оружия, и каждый из них ассоциируется с категорией животных. В рамках этого стиля существуют специализации, названные в честь конкретных видов животных, основанные на типах используемых заклинаний, технике мастера и конкретном используемом оружии. Певцы клинка, которые обучаются у мастера, обычно делают татуировку с изображением животного выбранного стиля. Некоторые певцы клинка изучают несколько стилей и имеют множество татуировок, нося на своей коже предупреждение о своих смертоносных навыках.
//''Кошка.''// К этому семейству принадлежат стили, в которых используется меч. Стиль льва, самый старший, обучает практиков владению полуторным мечом и не отдает предпочтения какому-либо определенному виду заклинаний. Стиль леопарда фокусируется на коротком мече и заклинаниях иллюзии и скрытности. Певцы стиля красного тигра, которому всего три столетия, используют саблю в кружащемся танце защиты, из которого они совершают внезапные прыжки и атаки.
//''Птица.''// Стили, в которых основное внимание уделяется использованию короткого древкового оружия, такого как топор или молот, были объединены в группу "птичьих" стилей, однако они сильно различаются. Все эти относительно новые стили используют оружие, которое обычно не предпочитают эльфы. Певцы клинка в стиле орла используют небольшие ручные топоры, и многие техники в этом стиле сосредоточены на плавных способах бросить оружие и достать новое. В стиле ворона используется клевец, а заклинания, связанные с ним, придают певцу клинка большую ловкость в бою.
//''Змея.''// Практикующие этот стиль используют цепы или кнуты. Стиль гадюки использует кнут, несмотря на его неэффективность как оружия, и имеет почти такую же долгую историю, как и стиль льва. Его мастера сопровождают свои Песни клинка потрясающе быстрым ритмом ударов кнута, что позволяет сдерживать многих противников и дает певцу клинка возможность произносить жестокие заклинания яда и болезни, излюбленные этим стилем.
---
!!! [img[2.png]] Обучение войне и песне
Вы получаете владение лёгкими доспехами и одним видом одноручного рукопашного оружия по вашему выбору.
Вы также получаете владение навыком Выступление, если вы им еще не владеете.
---
!!! [img[2.png]] Песнь клинка
Вы можете использовать тайную эльфийскую магию, называемую Песнью клинка, при условии, что вы не носите средних или тяжёлых доспехов и не используете щит. Песнь наделяет вас сверхъестественной скоростью, ловкостью и сосредоточенностью.
Вы можете бонусным действием начать Песнь клинка, которая продлится 1 минуту. Она прервётся раньше, если вы окажетесь [[недееспособным|Недееспособный]], наденете средний или тяжёлый доспех, щит или воспользуетесь обеими руками, чтобы совершить атаку оружием. Вы также можете прервать Песнь клинка в любой момент (действие не требуется).
Пока вы исполняете Песнь клинка, вы получаете следующие преимущества:
* Вы получаете бонус к КД, равный вашему модификатору Интеллекта (минимум +1).
* Ваша скорость ходьбы увеличивается на 2 м.
* Вы совершаете проверки Ловкости (Акробатика) с преимуществом.
* Вы получаете бонус к спасброскам Телосложения, совершаемым для поддержки концентрации на заклинании. Бонус равен вашему модификатору Интеллекта (минимум +1).
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Дополнительная атака
Если вы совершаете действие [[Атака|Атака]], вы можете совершить две атаки вместо одной. Кроме того, вы можете сотворить один из своих заговоров вместо одной из этих атак.
---
!!! [img[10.png]] Песнь защиты
Вы можете направить свою магию на поглощение урона, пока длится ваша Песнь клинка.
Когда вы получаете урон, вы можете реакцией потратить одну ячейку заклинаний и уменьшить получаемый вами урон на значению равное уровню потраченной ячейки, умноженному на пять.
---
!!! [img[14.png]] Песнь победы
Пока длится Песнь клинка, вы добавляете модификатор Интеллекта (минимум +1) к урону от своих рукопашных атак оружием.
Пивоварение - это, прежде всего, искусство ферментирования различных веществ в алкогольные субстанции, чаще всего в эль. Хотя это искусство имеет мало практического применения, оно является предметом личного энтузиазма для многих авантюристов и обывателей этого мира.
```
Модификатор пивоварения = бонус мастерства инструментов пивовара + модификатор Мудрости
```
!!!Время варки
Хотя варка пива занимает всего несколько часов, обычному пиву требуется 3 дня для брожения, а более изысканным сортам могут потребоваться недели или месяцы. Очень простое эмпирическое правило:
* Пиво стоимостью менее 5 см за бочку бродит 3 дня.
* Пиво стоимостью более 5 см - 2 недели.
* Алкоголь готовится 3 дня, причем 2 проверки совершаются в самом начале, после чего алкоголь можно получить по истечении времени варки.
* Особо причудливые или экзотические напитки могут потребовать больше времени; вплоть до месяцев.
Скорость плавания большинства персонажей равна половине их скорости ходьбы (округление вниз).
Без помощи магии персонажи не могут плыть по 10 часов в день. После каждого часа плавания персонаж должен преуспеть в проверке Телосложения (Выносливость) со Сл 10 + 1 за каждый час плавания, иначе получит одну степень [[истощения|Истощённый]].
Перемещение в неспокойных водах (бурные течения, штормовые волны и т.п.) требует успешной проверки Силы (Атлетика), кроме тех случаев когда у персонажа есть врождённая или магическая скорость плавания. Ношение средних или тяжёлых доспехов накладывает помеху на проверки, связанные с плаванием.
Существо, обладающее скоростью плавания может без штрафов плыть весь день, используя обычные правила [[путешествия|Путешествие]]. Плавание глубоко под водой подобно путешествию на большой высоте, из-за большого давле- ния и низкой температуры. Для существа без скорости плавания, каждый час плавания на глубине более 30 метров считается за 2 часа при определении истощения. Плавание на глубине более 100 м считается за 4 часа.
Если персонаж проваливает три проверки плавания подряд, он начинает захлёбываться и тонуть. См. [[Удушье|Удушье]].
!!!Видимость под водой
Видимость под водой зависит от чистоты воды и освещения. Если у персонажей нет источника света, используйте таблицу ниже для определения дальности видимости.
|!Условия | !Дальность видимости |
|Прозрачная вода, яркий свет | 12 м |
|Прозрачная вода, тусклый свет | 6 м |
|Мутная вода или свет отсутствует | 2 м |
//Требование: 11 уровень//
Вы можете потратить 4 очка ци, чтобы сотворить заклинание //огненный шар//.
[img width=385 class="centerme" [https://i.imgur.com/OAmSfoB.png]]
<<tabs "[[Описание плутов]] [[Классовые умения плутов]] [[Архетипы плута]]" "" "$:/state/tab1">>
Ваша раса, класс и черты дают владение конкретными видами и целыми категориями оружия. Категорий три:
//''Простое оружие.''// Простым оружием могут пользоваться многие. В это оружие входят дубинки, булавы и прочее оружие, доступное обывателям.
//''Воинское оружие.''// Воинское оружие включает мечи, боевые топоры и другое оружие, требующее для эффективного использования особых тренировок. Многие воители используют воинское оружие, потому что оно позволяет максимально использовать их стиль и обучение.
//''Экзотическое оружие.''// Экзотическое оружие встречается редко, как и мастера, им владеющие. Такое оружие не всегда лучше простого или воинского, но, при этом, требует углубленного изучения техник обращения с ним. Вы можете получить владение таким оружием от вашей расы (например, дварфы владеют всем "дварфским" экзотическим оружием), либо приобретя его за очки навыков.
---
Все персонажи владеют безоружными атаками.
Владение оружием позволяет вам добавлять бонус мастерства к броскам атаки всех атак, совершённых этим оружием, а также предоставляет уникальные свойства для определенных категорий оружия ([[см. оружие по принципу действия|По принципу действия]])
//''Древковое оружие.''// Оружие, характеризующееся наличием протяженной рукояти (древка). Копья, алебарды, посохи.
Владение древковым оружием позволяет совершать провоцированную атаку этим оружием по существу, входящему в пределы вашей досягаемости.
---
//''Дробящее оружие.''// Оружие, бьющая часть которого жестко закреплена на рукояти и предназначена для поражения мягких тканей и дробления костей в бою. Дубинки, булавы, молоты.
Владение дробящим оружием позволяет вам при попадании провоцированной атакой этим оружием заставить цель совершить спасбросок Силы (Сл = 8 + ваш бонус мастерства + ваш мод. характеристики, использованной для совершения атаки). Если цель больше вас, она совершает спасбросок с преимуществом. Если цель больше вас на две категории, она автоматически преуспевает в спасброске. При провале цель падает ничком.
---
//''Клинковое оружие.''// Оружие, имеющее боевую часть в виде клинка, прочно и неподвижно соединённого с рукоятью. Ножи, кинжалы, мечи.
Владение клинковым оружием позволяет вам совершать провоцированные атаки этим оружием с преимуществом.
---
//''Контактное оружие.''// Оружие, предназначенное для сражения на особо близкой дистанции и концентрирующее силу удара кулаком на небольшой площади. Кастеты, щиты.
Все контактное оружие обладает свойством "закреплённое".
Рука занятая контактным оружием считается свободной для совершения других действий, но атаки другим оружием и прочие требующие точности действия этой рукой совершаются с помехой.
Владение контактным оружием позволяет вам совершать провоцированные атаки этим оружием по существам, перемещающимся в пределах вашей досягаемости.
---
//''Метательное оружие.''// Оружие дальнего боя сбалансированное для совершения точных бросков. Дротики, метательные ножи и топоры.
Метательное оружие считается импровизированным для совершения им рукопашных атак.
Владение метательным оружием позволяет вам добавлять бонус +2 к броскам дальнобойных атак этим оружием, если в пределах 1 м от цели атаки находится её другой дееспособный противник.
---
//''Стрелковое оружие.''// Оружие дальнего боя, предназначенное для стрельбы стрелами, болтами, иглами, пулями и прочими боеприпасами.
Для совершения дальнобойной атаки стрелковым оружием необходимы боеприпасы. Вынимается боеприпас из колчана или другого контейнера частью атаки. В конце сражения вы восстанавливаете половину использованных боеприпасов, потратив минуту на поиски на поле боя.
Атакуя стрелковым оружием, вы используете модификатор Ловкости при совершении бросков атаки и урона.
Стрелковое оружие считается импровизированным для совершения им рукопашных атак.
Атаки одноручным стрелковым оружием одной рукой совершаются с помехой, для перезарядки лёгкого и одноручного стрелкового оружия все еще нужна вторая рука.
Владение стрелковым оружием позволяет вам в начале своего хода снизить свою скорость до нуля и получить бонус +2 к броскам дальнобойных атак этим оружием до конца вашего хода.
---
//''Топоры.''// Рубящее оружие обычно представленное в виде тонкого и лёгкого лезвия на коротком древке. Топоры и топоры побольше.
Все топоры обладают свойством "летальное".
Владение топорами позволяет вам один раз в ход нанести дополнительную кость урона оружием цели, по которой вы попали атакой топором, совершённой с преимуществом, если наименьшее значение одного из бросков этой атаки тоже попало по ней.
---
//''Цепы.''// Ударное оружие на гибкой сцепке в виде верёвки или цепи. Кистени, цепы, гасила.
Все цепы обладают свойством "внезапное".
Владение цепами позволяет вам после промаха рукопашной атаки этим оружием, совершить следующую рукопашную атаку этим оружием по той же цели с преимуществом до конца вашего следующего хода.
Показатель тяжести не говорит о конкретном весе оружия, а указывает на то, является ли оружие (той же размерной категории, что и персонаж владеющий им) лёгким, одноручным или же двуручным.
---
//''Лёгкое оружие.''// Под лёгким понимается оружие обладающие небольшими размерами и весом, что позволяет эффективно использовать его в обеих руках и при тесном контакте с противником. Особенности лёгкого оружия:
* Используется одной рукой.
* При совершении атаки вы сами выбираете, какой модификатор использовать при совершении бросков атаки и урона - модификатор Силы или Ловкости. Для обоих бросков должен использоваться один и тот же модификатор. Оружие со свойством "''грубое''" или "''стрелковое''" не подчиняется этому правилу.
* Два лёгких оружия могуть быть извлечены/убраны в ножны частью одного действия, при условии, что задействованы обе руки.
---
//''Одноручное оружие.''// Длина и вес одноручного оружия, как правило, не позволяют наносить точные удары неосновной рукой без особых тренировок. Но рукояти большей части такого оружия позволяют использовать его с двуручным хватом для нанесения сокрушительных атак. Особенности одноручного оружия:
* Используется одной или, иногда, двумя руками.
* Если в столбце "Урон" указано значение в скобках, значит этим оружием можно совершать атаки двумя руками. Кость урона при этом изменяется на указанную в скобках.
* При совершении атаки одной рукой вы сами выбираете, какой модификатор использовать при совершении бросков атаки и урона - модификатор Силы или Ловкости. Для обоих бросков должен использоваться один и тот же модификатор. Атакуя двумя руками, вы используете модификатор Силы при совершении бросков атаки и урона. Стрелковое оружие и оружие со свойством "''грубое''" не подчиняется этому правилу.
---
//''Двуручное оружие.''// Оружие масса и баланс которого не допускает одноручный хват, что компенсируется внушительной длиной и уроном. Особенности двуручного оружия:
* Используется только двумя руками. Атаки таким оружием одной рукой считаются импровизированными.
* При совершении атаки вы используете модификатор Силы при совершении бросков атаки и урона. Стрелковое оружие не подчиняется этому правилу.
* Требует как минимум одну свободную руку для переноса, если не является "стрелковым" (не имеет возможности ношения в ножнах или быть другим образом закреплено на персонаже).
[[Провоцированные атаки|Провоцированная атака]] по вам совершаются с помехой.
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Краб |Скорость плавания |
| 0 |Орёл |Скорость полёта |
| 1/8 |Кровавый ястреб |Скорость полёта |
| 1/8 |Гигантский краб |Скорость полёта |
| 1/8 |Ядовитая змея |Скорость плавания |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Гигантская ящерица |— |
| 1/4 |Гигантский паук-волк |— |
| 1/4 |Птеранодон |Скорость полёта |
| 1 |Гигантский орёл |Скорость полёта |
| 1 |Гигантская жаба |Скорость плавания |
| 2 |Плезиозавр |Скорость плавания |
[img[https://i.imgur.com/5Byk9Q1.png]]
!!!Правило 2 минут
* На обсуждение правила / спорного вопроса во время сессии отводится 2 минуты. После этого Мастер принимает решение, а дальнейшее обсуждение откладывается на время между сессиями.
* Во время боевого энкаунтера игроку дается 2 минуты на совершение своего хода.
* Отсутствующем игроку дается 2 минуты на то, чтобы вернуться или сообщить причину и время отсутствия.
!!!Метагейм
Под метагеймом подразумевается использование в игре того, что относится к игрокам, а не к их персонажам. Обычно речь идет о метаигровой информации.
* Чтение модуля, по которому ведется кампания, является одним из самых страшных нарушений правил.
* Персонаж не должен совершать действия или принимать решения, основываясь на информации, которой он не владеет.
* Персонаж не должен взаимодействовать с другими персонажами или окружающим миром в тайне от других персонажей без ведома Мастера.
* Игрок не должен давать метаигровую информацию (подсказывать) чужому персонажу, если его персонаж не присутствует в сцене. Этим вы крадете чужой момент и провоцируете другого Игрока на возможный метагейм.
* Спорные вопросы о том, является ли информация метаигровой для персонажа или нет, могут быть решены проверкой Интеллекта. В любом случае, последнее слово остается за Мастером.
Метагейм не всегда плох, вот примеры ситуаций, в которых поощряется использование метаигровой информации:
* метагейм позволяет персонажу отказаться от действий против группы:
//Персонаж Игрока знает, что ему не составит труда обокрасть группу, пока все спят, уйти в закат и жить богато до конца своих дней, но Игрок решает этого не делать, чтобы не портить игру;//
//Игроки знают, что новое знакомство их группы - новый Персонаж Игрока, и позволяют ему вступить в группу;//
* метагейм ускоряет решение игровых вопросов:
//Игрок знает, что его Бросок Атаки достаточно высок, чтобы попасть по противнику и не тратит время на вопрос Мастеру: “24. Я попал?”;//
* метагейм помогает не нарушать темп проведения сессии:
//Игроки знают, что до конца сессии осталось немного времени, и пытаются ускорить события, чтобы не закончить посреди неразрешенной сцены.//
Архетип Повелителя зверей воплощает в себе дружбу между цивилизацией и зверями дикого мира. Объединяя усилия, зверь и следопыт работают как одно целое, борясь с чудовищными врагами, угрожающими цивилизации и дикой природе. Следовать пути Повелителя зверей - это посвящать себя идеалу сотрудничества с животным в качестве спутника и друга.
---
!!! [img[3.png]] Магия повелителя зверей
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//скольжение// |
| !5 |//смена обличья// |
| !9 |//зловонное облако// |
| !13 |//очарование монстра// |
| !17 |//оживление// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Первородный спутник
Вы магическим образом призываете первородного зверя, который черпает свою силу из вашей связи с природой. Зверь подчиняется вашим командами и дружелюбен к вам и вашим союзникам.
Выберите его блок характеристик: Зверь Земли, Зверь Моря или Зверь Неба. Блок характеристик использует ваш бонус мастерства для определения некоторых значений. Вы также определяете вид подходящего к блоку животного, который принимает зверь. Независимо от выбранного вами вида в облике зверя присутствуют первородные отметины, указывающие на его магическое происхождение.
Во время сражения зверь действует в ваш ход. Он может перемещаться и совершать реакции самостоятельно, но действием может совершать только [[Уклонение]], если только вы своим бонусным действием не отдадите ему приказ совершить другое действие. Этим действием может как одно из действий, указанных в блоке характеристик зверя, так и любое другое [[действие|Действия]]. Вы также можете заменить одну из своих атак, совершаемых действием [[Атака|Атака]], командой зверю совершить действие [[Атака]]. Если вы [[недееспособны|Недееспособный]], зверь может совершать любое действие по своему выбору.
Если зверь мёртв не дольше 1 часа, вы можете действием коснуться его и потратить ячейку заклинаний любого уровня. Зверь возвращается к жизни через 1 минуту с максимумом хитов.
После завершения продолжительного отдыха, вы можете призвать другого зверя. Новый зверь появляется в в незанятом пространстве в пределах 1 м от вас, а вы выбираете его блок характеристик и облик. Если у вас уже есть зверь от этого умения, он исчезает, когда новый зверь появляется. Зверь исчезает при вашей смерти.
----
!!! [img[7.png]] Исключительная дрессировка
Атаки вашего первородного зверя считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
----
!!! [img[11.png]] Звериная ярость
Когда вы приказываете своему зверю совершить действие [[Атака|Атака]], он может совершить либо две атаки, либо действие Мультиатака, если оно у него есть.
----
!!! [img[15.png]] Общие заклинания
Когда вы сотворяете заклинание, направленное на себя, вы также можете распространить его эффект на вашего первородного зверя, если он находится в пределах 6 м от вас.
<<<
My companions and I are just a small part of a much larger pack, and we alwayts hunt together.
— Wolflord Korrvah
<<<
With each rite you cast, you hear the distant growls and cries of your pack. They wait for your magic to call them forth into battle, and they are eager to fight. You strengthen them with your magic, and you draw power from them. You are at your mightiest when you stand at the head of your summoned pack.
When you summon beasts of your pack, your rites echo through them. Their wounds knit shut, and they leap to attack with a ferocity augmented by your primal magic. In turn, you draw on their feral strength to endure your enemy's attacks and to strengthen your own.
''Pack Lords in the World:'' For a pack lord, a humanoid form is simply an accident of birth. In spirit, they belongs with the wild pack of wolves, the running herd of horses, or the dancing school of fish. Their nearly hairless, two-legged form is a hindrance to being one with their true kind, but it is a hindrance they can overcome.
Each pack lord forms a bond with one group of animals. Apelords, bearlords, birdlords, catlords, horselords, sharklords, snakelords, and wolflords all exist. Beasts in their selected group accept a pack lord as a kindred soul and a leader. They offer them their support, and they watch over them in turn.
Individual pack lords approach their calling in different ways. Some are simple defenders of their kind, content to live as part of the natural cycle of predator and prey. Others, believing that nature’s creatures are meant to guard and ultimately improve this world, use their gifts to do good. Still others lead their pack brothers and sisters down a path of selfishness or vengeance.
Barbarians, rangers, and druids are the most likely characters to adopt this path. Barbarians prefer the more physically powerful options, including apelord, bearlord, and horselord. Rangers gravitate toward the stealthier selections, such as catlord and wolflord. Most birdlords are druids with the ability to use wild shape, but druids are equally likely to select any type of pack to bond with. Some rogues, and even rare monks find this path rewarding as well. Among the races, elves and half-elves are the most common examples of pack lords due to their close bond to nature.
A character can choose this prestige path more than once but must select a different group of associated beasts and start at the 1st rank each time. Ranks of different pack lord paths do not stack when determining rank-based path features.
''Adaptation:'' Customize this path for your campaign by associating each variety with a specific race or culture. Sahuagin (malenti) and evil aquatic elves make natural sharklords, for example, while plains-dwelling humans would be most appropriate as horselords. Eight pack lord types are presented here, but you can easily create others appropriate to your campaign, such as the sewer-dwelling ratlord, the gnoll hyenalord, or even the aquatic squidlord. Alternatively, you could subdivide existing groups (creating rival tigerlords and lionlords, for example). Use the examples below as templates when creating a new pack lord.
---
!!Повелитель стаи
| !Ранг |!Умения |
| !1 |Pack Bond, Alpha's Command |
| !2 |Natural Pack Member, Sense Beasts |
| !3 |Primal Aspect, Full Pack |
| !4 |Pack Intensity, Pack Telepathy, Natural Vitality, Summon Pack |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое нейтральное.
* ''Владение навыками.'' Уход за животными и соответствующий стае навык. //Apelord//: Природа; //Bearlord//: Запугивание; //Birdlord//: Внимательность; //Catlord//: Скрытность; //Horselord//: Атлетика; //Sharklord//: Атлетика; //Snakelord//: Акробатика; //Wolflord//: Выживание
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Телосложения или Мудрости (на ваш выбор)
```
---
!!Ранг 1
!!!Pack Bond
A pack lord develops a bond with beasts of their selected group (see below). When they make an ability check to interact or influence beasts of their chosen group, they add twice their proficiency bonus when applying an appropriate skill proficiency.
The eight groups of beasts included here, along with examples taken from the //Monster Manual//, are as follows:
//''Apelord''//: ape, baboon, giant ape
//''Bearlord''//: black bear, brown bear, cave bear, polar bear
//''Birdlord''//: blood hawk, eagle, giant eagle, giant owl, giant vulture, hawk, owl, raven, vulture
//''Catlord''//: cat, lion, panther, saber-toothed tiger, tiger
//''Horselord''//: draft horse, elk, giant elk, mule, pony, riding horse, warhorse
//''Sharklord''//: giant shark, hunter shark, quipper, reef shark
//''Snakelord''//: constrictor snake, giant constrictor snake, giant poisonous snake, poisonous snake
//''Wolflord''//: dire wolf, jackle, wolf
!!!Alpha's Command
<<<
You don't even have to snarl a command; your pack member takes your meaning from your bloody strike.
<<<
//Rank 1 Rite (Recharges on a short or long rest) //
When you hit a creature with a melee weapon attack, your attack deals an extra 1d10 damage, and you can mentally command one of your conjured creatures to use its reaction to take the attack action. If you don't have a conjured creature present, roll a d20. If you roll 10 or higher, one allied creature of your choice within 25 feet of you can use their reaction to make a single melee weapon attack.
---
!!Ранг 2
!!!Natural Pack Member
While you have at least one conjured creature present, you gain a +1 bonus on attack rolls, AC, and saving throws.
!!!Sense Beasts
You can detect the presence of any beasts of your selected group as an action, as if using locate animals or plants.
---
!!Ранг 3
!!!Wild Aspect
You can take on an aspect of the beasts of your selected group. Assuming a wild aspect is a bonus action. Unless otherwise noted, the effect lasts for 1 minute per rank in pack lord. You can use this ability a number of times equal to their ranks in pack lord, regaining all uses on a long rest.
When you reach rank 4, your wild aspect becomes more powerful, as described below.
If you have the wild shape ability, you can spend one use of it to assume your wild aspect instead (the duration is as normal for the wild aspect). If you already have a natural attack of the type gained by the wild aspect, use whichever damage figure is superior while the wild aspect is active. If you wield a weapon while using your wild aspect, the natural attack gained counts as a light weapon for the purposes of two-weapon fighting, provided you are still attack with the weapon (an ape lord couldn't use a secondary claw attack, for example, if they wield a two-handed weapon).
''Apelord Aspect ''
You gain claws as a natural weapon, which you can use to make unarmed strikes. If you hit with them, you deal slashing damage equal to your 1d4 + your Strength modifier, instead of the bludgeoning damage normal for an unarmed strike.
If you are wielding no weapons, you can make two claw attacks as an attack action. If you hit the target with both claw attacks on your turn, you rend the target for additional slashing damage equal to 2d4 + your Strength modifier. This damage increases to 2d6 at rank 4.
''Bearlord Aspect ''
You gain claws as a natural weapon, which you can use to make unarmed strikes. If you hit with them, you deal slashing damage equal to your 1d4 + your Strength modifier, instead of the bludgeoning damage normal for an unarmed strike. If you hit with a claw attack, you can attempt to grapple the target (no action required). You still follow all the other normal grapple rules. At rank 4 the claw damage increases to 1d6.
If you are wielding no weapons, you can make two claw attacks as an attack action.
''Birdlord Aspect ''
You grow feathery wings, granting you a fly speed equal to your walking speed. At rank 4, the duration of your wild aspect increases to 1 hour per rank.
''Catlord Aspect ''
You gain claws as a natural weapon, which you can use to make unarmed strikes. If you hit with them, you deal slashing damage equal to your 1d4 + your Strength modifier, instead of the bludgeoning damage normal for an unarmed strike. The damage of these claws increases to 1d6 at rank 4.
If you take the dash action on your turn, you can make two claw attacks as a bonus action once before the end of your turn.
''Horselord Aspect ''
Your speed, as well as the speed of any horse upon with you ride, improves by 10 feet for a duration of up to 1 hour per rank. At rank 4, the speed increase improves to 20 feet.
''Sharklord Aspect''
You gain a devastating bite, which you can use to make unarmed strikes. If you hit with it, you deal piercing damage equal to your 1d8 + your Strength modifier, instead of the bludgeoning damage normal for an unarmed strike. The damage of this bite increases to 2d6 at rank 4.
You also gain a swim speed equal to your walking speed and the ability to breathe water while your wild aspect is active.
''Snakelord Aspect ''
You gain a poisonous bite for 1 round per rank, which you can use to make unarmed strikes. If you hit with it, you deal piercing damage equal to your 1d4 + your Strength modifier, and the target must make a Constitution saving throw, taking 4d8 poison damage on a failed save, or half as much damage on a successful one, instead of the bludgeoning damage normal for an unarmed strike. At rank 4, the bite's piercing damage increases to 1d6 and the poison damage increases to 6d8.
''Wolflord Aspect ''
You gain a vicious bite, which you can use to make unarmed strikes. If you hit with it, you deal piercing damage equal to your 1d8 + your Strength modifier, instead of the bludgeoning damage normal for an unarmed strike. You also have advantage on attack rolls against a creature if at least one of your allies are within 5 feet of the creature and the ally isn't incapacitated. The damage of this bite increases to 2d6 at rank 4.
You also gain advantage on Wisdom (Perception) checks that rely on hearing or smell.
!!!Full Pack
<<<
Invoking the power in your blood, you become the primal aspect of your other self.
<<<
//Rank 3 Rite (Recharges on a long rest)//
As a bonus action, you gain the following effect for 1 minute. Once per round on your turn, you can use your bonus action to command one of your conjured creatures to use its reaction to take the attack action.
---
!!Ранг 4
!!!Pack Intensity
When you spend an inspiration to gain advantage on an attack roll, you can command one of your summoned creatures to use their reaction to take the attack action.
!!!Pack Telepathy
You can converse telepathically with any beast of your selected group that you can see within 10 feet.
!!!Natural Vitality
Whenever a creature you have conjured starts its turn below half hit points, it regain hit points equal to your Wisdom modifier.
!!!Summon Pack
You can summon fey spirits that take the form of one or more beasts of your selected group. You must finish a long rest before using this ability again. The duration of this effect is 1 minute per path rank.
A creature disappears when it drops to 0 hit points or when the effect ends.
''Apelord Pack''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Eight apes
* Sixteen baboons
''Bearlord Pack ''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Two cave bears or polar bears
* Four brown bears
* Eight black bears
''Birdlord Pack ''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Four giant eagles¹, giant vultures
* Sixteen blood hawks, eagles, giant owls¹, hawks, owls, ravens, or vultures
''Catlord Pack ''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Two saber-toothed tigers
* Four lions, tigers
* Sixteen cats or panthers
''Horselord Pack''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Two giant elk
* Eight warhorses
* Sixteen draft horses, elk, mules, ponies, riding horses
''Sharklord Pack''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* One giant shark²
* Two hunter sharks²
* Eight reef sharks²
* Sixteen quippers²
''Snakelord Pack''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Two giant constrictor snakes
* Sixteen constrictor snakes, giant poisonous snakes, poisonous snakes
''Wolflord Pack''
The beasts you summon appear in unoccupied spaces that you can see within 60 feet of you. Choose one of the following options for what appears:
* Four dire wolves
* Sixteen jackals
1. May be summoned only by nonevil birdlords.
2. May be summoned onto into an aquatic or watery environment.
<<<
''Summon Pack Design Notes for DMs ''
This feature mimics conjure animals cast using a 5th level slot and conjure fey, except without the spell slots, concentration, or components. So if you wish to add more options to the summoning list for your player just follow the following theme:
* One CR 6 or lower
* Two CR 2 or lower
* Four CR 1 or lower
* Eight CR ½ or lower
* Sixteen CR ¼ or lower
<<<
<<<
Once the storm begins, no mortal force can halt it.
— Vellios, Speaker of Storms
<<<
The might of primal storms—furious things of lightning, thunder, and rain—courses through your magic. Few who commune with nature walk the path of the stormlord, for it is fraught with indomitable forces that can be channeled only temporarily, rather than truly controlled. The stormlord dabbles with primal powers that dance and surge across the sky, free of all fetters.
Stormlords, sometimes called storm speakers, seek out broad plains, the better to see and study storms that sweep across the sky. Their lodges are marked by tall spikes of iron marked with yellow and blue runes. During a storm, a speaker meditates within one of these lodges, allowing his or her mind to wander among the winds and rain. If the storms are open to sharing their secrets, bolts of lightning strike the iron spikes, sending waves of primal energy over the speaker, fortifying his or her power.
''Stormlords in the World:'' Most stormlords are clerics, druids, or cleric/sorcerers, although other class combinations, particularly those including fighter or even barbarian (especially those that walk the path of the storm herald), are not unknown. Wizards have their own means of destroying things, and bards rarely can generate enough force with their spells to be considered worthy by the Destroyer.
Stormlords often live as brigands, indulging their personal desires for wealth, food, luxury items, and wanton behavior as they crave random, spectacular acts of violence. They often pose as lunatics, in order to spread the word of Talos, and otherwise adopt disguises in order to scout out rich prizes to strike at.
''Adaptation.'' If you do not have the god Talos in your game then this prestige class works well with any god of storms, obviously, but it’s also appropriate for nature deities or clerics and druids that venerate nature or weather in the abstract without worshiping a specific deity. In Eberron, the devourer is an option, since it represents the destructive power of nature.
---
!!Повелитель шторма
| !Ранг |!Умения |
| !1 |Storm Touched, Storm Beast |
| !2 |Storm Walk, Storm Weapons |
| !3 |Stormride, Shield of Gales |
| !4 |Stormlord Inspiration, Tempest Form, Dancing Tempest, Storm Child |
---
!!!Предварительные условия:
* ''Владения навыками.'' Природа, Религия.
* ''Заклинания.'' Способность сотворять заклинание 3 уровня или выше из списка заклинаний друида.
* ''Покровитель.'' Должен поклоняться богу штормов, такому как Талос.
* ''Особое.'' Персонаж должен быть поражен молнией, будь то естественной или созданной магией, и выжить.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Телосложения или Мудрости (на ваш выбор)
```
---
!!Ранг 1
!!!Storm Touched
You become increasingly resistant to the power of storms, gaining resistance to lightning damage and thunder damage. Additionally, whenever you take lightning or thunder damage, you gain temporary hit points equal to your proficiency bonus plus your ranks in the Stormlord prestige path after the damage is resolved.
!!!Storm Beast
<<<
With a great roar, you channel the fury of a primal storm. Lightning dances around you and strikes your enemies.
<<<
//Rank 1 rite (Recharges on a short or long rest) //
As an action, you target each creature in a 15-foot cone originating from you. Each target must succeed on a Dexterity saving throw or take 2d6 lightning damage and until the end of your next turn, you gain a +2 bonus on attack rolls against the target.
---
!!Ранг 2
!!!Storm Walk
You (and your mount, if any) can walk or ride through storms (natural or magical) at your regular movement rate, completely unaffected by high winds (including //gust of wind//), pounding precipitation or waves (including //tidal wave//), objects driven by the wind (which always seem to miss you), great claps of thunder, natural bolts of lightning, or any other natural symptom of Talos's fury.
!!!Storm Weapons
You can imbue any javelin or spear you wield with the power of the storm, allowing it to count as a magical weapon for the purposes of overcoming resistances. In addition, once on each of your turns, when you hit a creature with a weapon attack using a javelin or spear, you can cause the attack to deal an extra 1d8 lightning damage to the target. When you reach rank 4, this extra damage increases to 1d8 lightning damage and 1d8 thunder damage.
---
!!Ранг 3
!!!Stormride
You (and your mount, if any) gain the ability to fly during any storm as if using the //fly //spell.
!!!Shield of Gales
<<<
A funnel cloud forms around you, knocking aside your enemies and shielding you from harm.
<<<
//Rank 3 rite (Recharges on a long rest) //
As a bonus action, for 1 minute, you gain a +2 bonus to AC and saving throws. When any enemy ends its turn within 5 feet of you, you can move that enemy up to 15 feet (no action required).
You must concentrate on this rite as if concentrating on a spell.
---
!!Ранг 4
!!!Stormlord Inspiration
When you spend an inspiration, you can also fly up to 40 feet in addition to the inspiration's other effects. This movement does not count against your normal movement for the turn and does not provoke opportunity attacks.
!!!Tempest Form
You become so connected with the storm that you learn the spell //investiture of wind// as described in Xanathar's Guide to Everything and The Elemental Evil Player's Companion. You can cast this spell once without expending a spell slot or material components. Once you cast the spell in this way, you must finish a long rest before doing so again. Your spellcasting ability for this spell is Wisdom.
!!!Dancing Tempest
<<<
The chaotic movements and natural flow of the storm guide your movement.
<<<
When you deal lightning damager or thunder damage to a creature on your turn, you gain the effects of disengage until the end of that turn.
!!!Storm Child
<<<
For a short time, you become a child of storms. Thunder booms as lightning crackles around you, launching at your enemies.
<<<
//Rank 5 Rite (Recharges on a long rest) //
As an action, you cause lightning to crackle around you, choosing up to three creatures you can see within 15 feet of you. Each target must make a Dexterity saving throw, taking 4d6 lightning damage and thunder damage on a failed save, or half as much damage on a successful. Additionally, once on each of your turns for 1 minute, you can repeat the first portion of rite. You must concentrate on this rite as if concentrating on a spell.
Поглощающий разум - это мастер опасной ветви псионики, рожденной из способности высасывать энергию из других существ. Эта сила может отбирать мысли, разум и, в конечном счете, жизненную силу для собственного потребления. Это опасное направление псионики иногда считается одним из первобытных корней всей псионической силы, поскольку его можно найти среди пожирающих разум монстров и древних псионических космических китов...
Оно было усовершенствовано теми, кто стремится к большей силе либо из честолюбия, либо от отчаяния, и открывает ужасный, но эффективный путь. Одним из примеров смертных существ, идущих по этому пути, являются дома тёмных эльфов, которые развили свои мрачные силы из изучения одичавших, вампирических, пожирающих мозг монстров.
---
!!! [img[1.png]] Псионический хищник
<<<
Вы обрели способность потреблять чужие псионические силы.
<<<
Вам известна псионическая дисциплина [[Поглощения|Поглощение]].
{{Поглощение}}
---
!!! [img[1.png]] Затаившийся во мраке
<<<
Ваши способности наделяют вас интуицией, которая позволяет вам лучше адаптироваться и выживать в качестве охотника за разумом.
<<<
Вы получаете владение навыками Обман и Скрытность. Если вы уже владеете каким-либо из этих навыкоа, то вы получаете владение другим навыком на ваш выбор.
Когда вы используете псионическое умение, вы можете совершить проверку Интеллекта (Обман), противопоставленную проверке Мудрости (Проницательность) цели, чтобы скрыть от нее использование псионического умения, подавляя обычные видимые признаки умения. Если вы потратили пси-очки на это умение, вы должны вычесть количество потраченных пси-очков из результата проверки Интеллекта (Обман) (скрыть более мощное применение псионики сложнее).
---
!!! [img[3.png]] Алчные силы
Вы получаете псионический талант Пожиратель разума. Вы игнорируете ограничение по уровню для этого таланта, а он не учитывается в общее количество известных вам талантов, но не может быть заменён при повышении уровня. Кроме того, дальность действия этого таланта увеличивается до 6 м, если существо убито одной из ваших псионических способностей.
---
!!! [img[6.png]] Усиленная псионика
Когда вы наносите урон псионической способностью, вы можете добавить свой модификатор Интеллекта к наносимому урону.
---
!!! [img[10.png]] Вампир разума
Ваш таланта Пожиратель разума может бы активирован каждый раз, когда вы наносите существу в пределах 6 м от вас урон психической энергией, независимо от того, убивает это цель или нет. Кроме того, вы можете получить дополнительные пси-очки (сверх вашего обычного Пси-предела), в количестве, равном половине вашего модификатора Интеллекта (округляя вниз), при получении пси-очков от Пожирателя разума, но все дополнительные пси-очки теряются, когда вы завершаете короткий или продолжительный отдых.
<<<
''Ограничения''
Даже при использовании с Вампиром разума, Пожиратель разума по-прежнему требует реакции для применения, что означает, что он все еще может срабатывать один раз в раунд. Все обычные ограничения Пожирателя разума остаются в силе (например, минимальный показатель Интеллекта цели).
<<<
---
!!! [img[14.png]] Разбитые мечты
Модификатор Стирающее вашей способности Высасывание разума не требует траты пси-очков. Кроме того, когда вы используете этот модификатор, вы можете сделать разум цели ещё более уязвимым, потратив дополнительно до двух пси-очков, чтобы уменьшить результат следующего спасброска цели на 1к4 за каждое дополнительно потраченное пси-очко (до 3к4). После применения этого эффекта к существу вы не можете тратить дополнительные пси-очки на модификатор Стирающее против этого существа, пока не пройдет 1 час.
Ваши психические способности подобны хищнику, а ваша добыча - умы прочих. Их мысли, их чувства, их жизненно важные псионические энергии - ваша пища.
---
!!! Приспосабливающийся охотник
Сразу после использования способности Высасывание разума на существе, вы можете получить одно владение навыком, инструментом или языком, которым владеет это существо, до конца вашего следующего продолжительного отдыха. Если вы используете эту способность снова, вы потеряете уже полученное таким образом владение, чтобы получить новое.
---
!!!Высасывание разума
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 6 м
''Компоненты:'' С
''Длительность:'' мгновенная
Вы атакуете разум видимого вами в пределах дистанции существа, раздирая и пожирая его псионическую энергию. Цель должна преуспеть в спасброске Харизмы, иначе получит 1к6 урона психической энергией. Если цель [[испугана|Испуганный]], [[опутана|Опутанный]], [[очарована|Очарованный]], [[ошеломлена|Ошеломлённый]], [[парализована|Парализованный]] или [[схвачена|Схваченный]], то она вместо этого получает 1к12 урона психической энергией. Если спасбросок провален, вы получаете заряд псионической энергии до конца вашего следующего хода. Вы можете потратить этот заряд при нанесении урона, чтобы нанести дополнительный урон, равный вашему модификатору Интеллекта, или поглотить этот заряд в конце вашего хода, чтобы получить временные хиты, в количестве равном вашему модификатору Интеллекта.
Вы можете использовать эту способность на трупе недавно погибшего существа, если только оно умерло в течение последней минуты и не было ранее подвергнуто эффекту этой способности.
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Высасыванию разума (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Крадущее (1 пси-очко):'' Если цель провалит спасбросок, вы можете вытянуть заклинание 5 уровня или ниже, которое цель может сотворить из ее разума (из умения Использование заклинаний, Магия договора или Псионика). Вы должны знать, что она способна сотворить это заклинание; цель сохраняет способность сотворить это заклинание, а вы получаете способность сотворить это заклинание с помощью вашего умения Псионика, потратив пси-очки, в количестве равном уровню заклинания (ограничено вашим Пси-пределом; вы не можете использовать Мастерство псионика, чтобы сотворить это заклинание). Вы можете одновременно знать только одно заклинание таким образом и сохраняете способность сотворять его в течение 1 минуты или до тех пор, пока не сотворите его. Если заклинание восстанавливает хиты, вы уменьшаете свои хиты на количество, восстановленное заклинанием.
* ''Насыщающее (1 пси-очко):'' Если цель провалит спасбросок, вы получите одие дополнительный заряд псионической энергии.
* ''Ошеломляющее (3 пси-очка):'' Если цель провалит спасбросок, она станет [[ошеломлённой|Ошеломлённый]] до начала вашего следующего хода. Если способность применяется к нескольким целям, выберите одну цель для этого эффекта.
* ''Пожирающее (2 пси-очка):'' Дистанция Высасывания разума изменяется на сферу с радиусом 1 м вокруг вас.
* ''Раздирающее (1+ пси-очко):'' Если цель провалит спасбросок, она получит одну дополнительную кость урона (1к6 или 1к12, если она находится под действием перечисленных состояний) за каждое дополнительно потраченное очко.
* ''Стирающее (1 пси-очко):'' Если цель провалит спасбросок, она должна вычесть 1к4 из своего следующего спасброска, совершённого до конца вашего следующего хода.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Поглощения, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//нанесение ран// |
| !3 |//психическая осушка// |
| !5 |//прикосновение вампира// |
| !7 |//усыхание// |
| !9 |//пожирающий мрак// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
Для погони требуется преследуемый и как минимум один преследователь. Погоня проводится в виде [[испытания навыков|Испытания навыков]]. Целью преследователей становится накопление определенного количества успешных проверок, до того, как они провалят три из них. Успешные проверки означают, что преследователи сокращают дистанцию до преследуемого. Проваленные проверки означают, что преследователи отстают от преследуемого. Сложность каждой проверки определяется броском преследуемого. Каждый раунд преследуемый совершает свою проверку, после него преследователи совершают свои.
---
!!!Проведение погони
# ''Определите сложность погони. ''Сложность погони выражается в количестве успехов необходимых для поимки преследуемого. Сложность может быть от трёх до пяти и выше.
# ''Определите преимущество и помеху, основываясь на скорости участников. ''Если скорость преследователя ниже скорости преследуемого, преследователь совершает все проверки с помехой. Если выше, то у преследователя есть преимущество. Если скорости равны, проверки совершаются как обычно.
# ''Определите осложнение и подходящую проверку.'' Осложнения могут быть предопределены или выбраны из таблиц.
# ''Определите сложность проверки для преследователя. ''Сложность проверки преследователя определяется результатом проверки преследуемого.
# ''Совершите проверку преследователя. ''Преследователь совершает ту же проверку, против сложности, определенной преследуемым.
# ''Повторяйте до завершения погони. ''Погоня завершается, когда преследователь совершает необходимое количество успешных проверок. Каждый отдельный преследователь покидает погоню, если проваливает три проверки.
---
!!!Заклинания и атаки
Преследователи могут совершать атаки, сотворять заклинания и использовать классовые умения и особенности вместо совершения проверки погони, проверка при этом проваливается. Если эффект останавливает преследуемого, все остальные преследователи автоматически преуспевают в проверке. По усмотрению Мастера уместно примененный эффект, может предоставить союзнику преимущество на проверку или даже автоматический успех.
---
!!!Определение дистанции
Если персонаж хочет использовать требующий касания эффект на союзника, у них должно быть одинаковое количество успехов. Если персонаж хочет использовать дальнобойный эффект на союзника, они должны быть в одном успехе друг от друга. Если преследователь хочет использовать дальнобойный эффект на преследуемого, он должен быть в одном успехе от завершения погони.
---
!!!Сражение
Даже если преследователи настигли преследуемого, это не означает, что все пройдет тихо. Если по завершению погони начинается сражение, все участники совершают проверку инициативы как обычно. Преследователи, которые не набрали необходимое количество успехов вступают в сражение во втором раунде.
---
!!!Осложнения погони
|!к10|!Тип|!Осложнение|
| 1 |Опасность запутывания |Спасбросок Силы |
| 2 |Опасность падения |Спасбросок Ловкости |
| 3 |Затрудненное дыхание |Спасбросок Телосложения |
| 4 |Узкое пространство |Проверка Силы |
| 5 |Неровная поверхность |Проверка Ловкости |
| 6 |Ограждение |Проверка Силы (Атлетика) |
| 7 |Препятствие |Проверка Ловкости (Акробатика) |
| 8 |Открытая местность |Проверка Телосложения (Выносливость) |
| 9 |Короткий путь |Проверка Интеллекта (Анализ) |
| 10 |Плохая видимость |Проверка Мудрости (Внимательность) |
| !ПО |!Животные |!Скорость полёта/плавания |
| 0 |Квиппер |Скорость плавания |
| 1/4 |Удав |Скорость плавания |
| 1/2 |Гигантский морской конёк |Скорость плавания |
| 1/2 |Рифовая акула |Скорость плавания |
| 1 |Гигантский осьминог |Скорость плавания |
| 1 |Гигантский удав |Скорость плавания |
| 2 |Охотничья акула |Скорость плавания |
| 2 |Плезиозавр |Скорость плавания |
| 3 |Косатка |Скорость плавания |
| 5 |Гигантская акула |Скорость плавания |
Вы можете подготовить свое действие и отложить его, пока не произойдёт определённое событие. Для этого вы совершаете в свой ход действие Подготовка, чтобы реакцией подействовать позже.
Во-первых, определите, какое воспринимаемое событие вызовет вашу реакцию. Затем выберите действие, либо перемещение, которое будет совершено. Примеры: «Если культист наступит на люк, я дёрну рычаг и открою его», «Если передо мной встанет гоблин, я отойду прочь».
Когда срабатывает условие, вы можете либо совершить свою реакцию до окончания действия, вызвавшего срабатывание, либо игнорировать срабатывание условия. Подготовленное действие можно совершить только до начала вашего следующего хода. Помните, что вы можете совершить только одну реакцию в раунд.
Если вы подготовили заклинание, вы сотворяете его как обычно, но удерживаете энергию, пока не сработает условие. Для того чтобы заклинание можно было подготовить, у него должно быть время сотворения «1 действие», а удерживание магии требует концентрации. Если концентрация прервана, заклинание тратится без всякого эффекта. Например, если вы концентрируетесь на заклинании //паутина// и подготавливаете //волшебную стрелу//, заклинание //паутина //заканчивается, и если вы получите урон до сотворения //волшебной стрелы// реакцией, ваша концентрация рискует прерваться.
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Гигантский огненный жук |— |
| 1/8 |Гигантская крыса |— |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Гигантская летучая мышь |Скорость полёта |
| 1/4 |Гигантская многоножка |— |
| 1/4 |Гигантская ящерица |— |
| 1/4 |Гигантская ядовитая змея |Скорость плавания |
| 1 |Гигантский паук |— |
| 1 |Гигантская жаба |Скорость плавания |
| 2 |Гигантский удав |Скорость плавания |
| 2 |Белый медведь (пещерный медведь) |Скорость плавания |
Если вы используете средний или тяжёлый щит, а другое существо попадает по вам атакой или использует против вас эффект, требующий совершения спасброска Ловкости, вы можете реакцией поднять щит, предоставив себе укрытие на половину (+2 к КД и спасброскам Ловкости) от этой атаки или эффекта.
Совершая действие Поиск, вы уделяете внимание поиску чего-то. В большинстве случаев вам нужно описать, где вы ищете, чтобы Мастер определил, есть ли у вас шансы на успех.
В зависимости от характера ваших поисков, Мастер может призвать к проверке Мудрости (Внимательность) или Интеллекта (Анализ).
Если вы ищете существо, Сл вашей проверки является пассивное значение Ловкости (Скрытность) существа. Если вы ищете объект, Сл проверки устанавливается Мастером, либо проверкой существа, [[сокрывшего|Сокрытие предмета*]] объект.
Если вы ищете что-то в особенно загроможденной или обширной области, Мастер может решить, что для этого потребуется несколько действий, минут или даже часов.
Чтобы приобрести магический предмет, нужно найти людей, желающих его продать, и связаться с ними, а это в свою очередь требует времени и денег. И даже в этом случае нет гарантии, что у продавца есть нужный персонажу предмет.
''//Ресурсы//''. Поиск магических предметов занимает минимум одну неделю и требует минимум 100 см на расходы. Увеличение затрат времени и серебра повышает шанс найти более редкий предмет.
''//Определение результата//''. Персонаж, который хочет купить магический предмет, должен совершить проверку Харизмы (Убеждение), чтобы определить статус найденного продавца. Персонаж получает бонус к проверке +1 за каждую потраченную неделю после первой, и +1 за каждые дополнительно потраченные 100 см, вплоть до максимального значения бонуса +10. Потраченные деньги включают в себя цену богатого образа жизни, поскольку покупатель должен произвести впечатление на потенциальных деловых партнёров.
По таблице «Покупка магических предметов», исходя из результата проверки, Мастер решает, какая из таблиц, приведённых в //Руководстве Мастера// будет определять предметы в наличии. Мастер можете применить штраф -10 для слабомагической кампании или бонус +10 для сильномагической кампании и удвоить стоимость магических предметов, если кампании слабомагическая.
Цена доступных предемтов определяется согласно документу [[Merchant's Sorcerous Rarities Pricelist (MSRP)|https://docs.google.com/spreadsheets/d/11-45kA6qWTFV_rDYkD49B_EQfF0kPrW2tXwQcNs1jVM/edit#gid=1547141293]].
Решающее слово в вопросах ассортимента имеющихся в продаже предметов и их конечной стоимости остаётся за Мастером. Если персонажи ищут конкретный магический предмет, Мастер может включить этот предмет в список предметов на продажу при результате броска 10 или выше – если предмет обычный, 15 или выше – если необычный, 20 или выше – если редкий, 25 или выше – если очень редкий, и 30 или выше – если легендарный.
| !Результат |!Предметы в наличии |
| 1-5 |Совершите 1к6 бросков по таблице А магических предметов. |
| 6-10 |Совершите 1к4 бросков по таблице B магических предметов. |
| 11-15 |Совершите 1к4 бросков по таблице C магических предметов. |
| 16-20 |Совершите 1к4 бросков по таблице D магических предметов. |
| 21-25 |Совершите 1к4 бросков по таблице E магических предметов. |
| 26-30 |Совершите 1к4 бросков по таблице F магических предметов. |
| 31-35 |Совершите 1к4 бросков по таблице G магических предметов. |
| 36-40 |Совершите 1к4 бросков по таблице H магических предметов. |
| 41+ |Совершите 1к4 бросков по таблице I магических предметов. |
//''Осложнения''//. Торговля магическими предметами – дело опасное. Сила предметов и доход с их продажи притягивают воров, мошенников и других злодеев. Согласно правилам, персонаж может получить осложнение с вероятностью 10% после каждой покупки.
| !к12 |!Осложнение |
| 1 |Предмет — подделка, подкинутая недоброжелателем. |
| 2 |Предмет украден врагами группы. |
| 3 |Предмет проклят богом. |
| 4 |Первоначальный владелец предмета готов убить, чтобы вернуть его, а противники группы распространяют новости о его продаже. |
| 5 |Предмет является ключевым элементом тёмного пророчества. |
| 6 |Перед сделкой продавец был убит. |
| 7 |Продавец – это дьявол, желающий заключить сделку. |
| 8 |Предмет служит ключом к освобождению злой сущности. |
| 9 |Третья сторона также хочет купить предмет и готова заплатить двойную стоимость. |
| 10 |Предмет является порабощённым разумным существом. |
| 11 |Предмет связан с культом. |
| 12 |Враги группы распространяют слухи о том, что предмет – артефакт злых сил. |
//Стоимость перемещения:// 2 м за 1 м.
Во время ползания вы [[лежите ничком|Сбитый с ног / Лежащий ничком]].
[img width=310 class="centerme" [https://i.imgur.com/QO1UOuN.png]]
Полудварфы разделяют особенности характерные как для дварфов, так и для людей.
|!Особенность |!Описание |
|^Возраст |^Полудварфы живут дольше, чем обычные люди, и могут дожить до 200 лет. |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 2. |
|^Дварфская выносливость |^Вы владеете навыком Выносливость. |
|^Дварфская устойчивость |^Вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом. |
|^Дварфское оружие |^Вы владеете простым дробящим оружием и топорами, а также экзотическим "дварфским" оружием, если владеете воинским оружием того же вида. |
|^Прирождённый ремесленник |^Вы владеете одним видом ремесленных инструментов на ваш выбор. |
|^Сумеречное зрение |^Благодаря дварфской крови вы отлично видите в условиях слабого освещения. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
Полудварфы редки и почти всегда несут в себе кровь холмовых дварфов: закрытые сообщества горных дварфов мало взаимодействуют с людьми, а дуэргары и вовсе их практически никогда не встречают.
---
!!!Дварфские традиции
Полудварфы часто наследуют лучшие особенности обоих своих родителей. Подобно дварфам, они обладают развитым чувством справедливости и непоколебимой лояльностью. Хоть они и не являются полноценными членами клана своего родителя, полудварфы сделают всё, чтобы не опозорить его (ещё больше).
Когда клан вынужден разобраться с нечистыми делами, эту работу обычно взваливают на полудварфов, чтобы возможные последствия не повредили клану. Полудварфы редко отказываются от подобных заданий, чтобы заслужить одобрение своих дварфских родственников. Семья и клан для них ценнее чем что-либо другое, а учитывая их частично человеческое происхождение, им приходится работать за двоих, чтобы заслужить себе клановое имя.
---
!!!Человеческое новаторство
Человеческая часть полудварфов одарила их тягой к новшествам и самореализации. Они обладают куда более развитой индивидуальностью, чем их дварфские родственники. Занимаясь дварфским ремеслом они не бояться радикально улучшать его, перенбрегая традициями своих мастеров.
Хотя большинство людей не признает этого, полудварфы часто оказываются лучшими в своей области дейстельности. Будь то кузнечное или ювелирное дело, пивоварение или сельское хозяйство - от продуктов полудварфов всегда можно ожидать отличного качества. Тем не менее, большинство полудварфов никогда не принимают в дварфские гильдии.
---
!!!Имена полудварфов
Полудварфам обычно дают дварфские имена, но, вместо кланового имени, они берут либо фамилию своего человеческого родителя, либо вынуждены взять принятую среди дварфских бастардов фамилию Штейн ("камень"). Получение настоящего кланового имения для полудварфа считается величайшей честью.
[img width=260 class="centerme" [https://i.imgur.com/uYPk8yz.png]]
Благодаря орочьему происхождению, ваш персонаж полуорк обладает следующими особенностями.
|!Особенность |!Описание |
|^Возраст |^Полуорки взрослеют немного быстрее обычных людей, достигая зрелости к 14 годам. Стареют они заметно быстрее, и редко живут дольше 75 лет. |
|^Увеличение характеристик |^Значения вашей Силы и Телосложения увеличиваются на 1. |
|^Непоколебимая стойкость |^Если ваши хиты опустились до нуля, но вы при этом не убиты, ваши хиты вместо этого опускаются до 1. Вы не можете использовать эту способность снова, пока не завершите продолжительный отдых. |
|^Свирепые атаки |^Если вы совершили критическое попадание рукопашной атакой оружием, вы можете добавить к урону ещё одну кость урона оружия. |
|^Сумеречное зрение |^Благодаря орочьей крови вы отлично видите в условиях слабого освещения. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Угрожающий вид |^Вы владеете навыком Запугивание. |
<<<
Вождь Муррен поднялся с мехов , на которых он лежал со своими женщинами, и натянул короткую кольчугу из тяжёлых стальных колец на свой мощный мускулистый торс. Обычно он вставал раньше своих воинов, так как в нём была сильна примесь человеческих кровей, и он лучше переносил дневной свет. У Кровавых Черепов о воине судили по его силе, бесстрашию и уму. Человеческое происхождение - не недостаток для воина, при условии, что он был таким же сильным, выносливым и кровожадным, как его чистокровные собратья. Полуорки, которые были слабее, чем их собратья, недолго прожили бы среди Кровавых Черепов, как и в любом другом орочьем племени. Но часто оказывалось, что человеческая кровь давала воину правильное сочетание хитрости, амбиций и самодисциплины, чтобы добиться многого, как это сделал Муррен. Он был хозяином племени, которое могло насчитать две тысячи копий, и имело сильнейшего вождя в Таре.
— Ричард Бейкер, //Маг меча //
<<<
Находясь ли под предводительством могучего колдуна, или стараясь установить мир после многолетнего конфликта, орки и племена людей иногда заключали союзы, объединяя силы в огромные орды, терроризирующие более цивилизованные государства по соседству. Когда такие союзы скреплялись узами брака, появлялись полуорки. Некоторые полуорки возвышались, становясь гордыми вождями племён. Их человечья кровь давала им преимущество над их чистокровными соперниками. Другие отправлялись в мир, чтоб доказать своё превосходство над представителями более цивилизованных народов. Многие из них становились искателями приключений, достигая величия благодаря своим могучим свершениям, и дурной славы, благодаря варварским нравам и дикарской ярости.
---
!!!Крепкие и покрытые шрамами
Серый цвет кожи, плоский лоб, выступающая челюсть, торчащие клыки и могучее телосложение не оставляет сомнений в орочьем происхождении для любого, кто смотрит на полуорка. Рост полуорков обычно колеблется между 180 и 215 см, а вес между 80 и 120 кг.
Орки гордятся своими боевыми шрамами, а узоры, составленные из шрамов, украшают их тела. Другие шрамы могут отмечать бывшего раба или изгнанника. Все полуорки, живущие с орками, или поблизости от них, имеют шрамы, следы унижений и поводы для гордости, отмечающие их победы и ранения. Живущие же среди людей полуорки могут как выставлять свои шрамы на обозрение с гордостью, так и со стыдом прятать их.
---
!!!Орочье наследие
Полуорки, хотя их человеческая кровь и снижает воздействие орочьего наследия, не могут полностью избежать его влияния. Некоторые полуорки слышат шёпот в своих снах, взывающий высвободить ярость, что вскипает в них. Полуорки по природе своей не являются злыми, но зло скрывается в них, принимают ли они его или сопротивляются ему.
В ярости полуорки чувствуют сильное возбуждение. Ярость не только ускоряет их пульс, она заставляет их тела пылать. Колкие оскорбления действуют на них как яд, и печаль истощает их силы. Но когда они смеются, то делают это громко и от души, и простые физические наслаждения — пиры, выпивка, борьба, барабанный бой и дикие пляски — наполняют их сердца радостью. Они, как правило, вспыльчивы, иногда угрюмы, более склонны к действию, чем к созерцанию и к борьбе, чем к спору. Наиболее культурными полуорками являются те, у кого достаточно самоконтроля, чтобы проживать в цивилизованных землях.
---
!!!Племена и трущобы
Полуорки наиболее часто живут среди орков. Среди других рас люди наиболее терпимопринимают полуорков, поэтому полуорки, которые не живут среди орков, чаще всего живут среди людей. Заслуживая ли признание среди жестоких варварских племен, или борясь за выживание в трущобах крупных городов, полуорки достигают всего своей физической мощью, выносливостью и решительностью.
---
!!!Неприязненное отношение
Принято считать, что полуорки агрессивны и легко впадают в ярость, так что люди ведут себя осторожно в присутствии незнакомого полуорка. Торговцы могут тайком прятать наиболее ценные или хрупкие товары при появлении полуорка, и люди потихоньку покидают таверны, опасаясь возможной драки.
Каждый полуорк находит способ, как добиться признания тех, кто ненавидит орков. Некоторые из них скрытны, и стараются не привлекать к себе никакого внимания. Некоторые из них демонстрируют благочестие и добросердечность настолько публично, насколько это возможно (независимо от того, насколько искренни эти демонстрации). А некоторые просто стараются быть настолько жестокими, что остальные просто избегают их.
---
!!!Имена полуорков
Полуорки обычно имеют имена, соответствующие культуре, в которой они были выращены. Полуорк, который хочет находиться среди людей, может поменять орочье имя на человеческое. Некоторые полуорки с человеческими именами решают принять гортанное орочье имя, потому что считают, что это сделает их более устрашающими.
[img width=380 class="centerme" [https://i.imgur.com/3cAMg4t.png]]
<<tabs "[tag[Полурослик - описание]]" "Описание полуросликов" "$:/state/tab1">>
[img width=300 class="centerme" [https://i.imgur.com/9TAZR6i.png]]
Ваш персонаж-полуэльф обладает некоторыми качествами, обычными для эльфов, и некоторыми, присущими только полуэльфам.
|!Особенность |!Описание |
|^Возраст |^Полуэльфы живут гораздо дольше обычных людей, часто пересекая рубеж в 180 лет. |
|^Увеличение характеристик |^Значения вашей Харизмы и одной другой характеристики на ваш выбор увеличиваются на 1. |
|^Наследие фей |^Вы совершает спасброски с целью избежания или окончания состояния [[Очарованный]] на себе с преимуществом. |
|^Сумеречное зрение |^Благодаря эльфийской крови вы отлично видите в условиях слабого освещения. На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение. |
|^Универсальность навыков |^Вы получаете владение двумя навыками на ваш выбор. |
|^Эльфийское наследие |^Вы можете говорить, читать и писать на Эльфийском. |
<<<
Флинт щурился , вглядываясь против света. Он увидел человека, шедшего к нему по склону. Поднявшись, Флинт отступил в тень высокой сосны, чтобы свет не так бил в глаза. Походка человека была упругой и лёгкой - на эльфийский лад, подумалось Флинту, - но тело выглядело мускулистым и крепким, - черта не вполне эльфийская. Зелёный капюшон мешал разглядеть лицо. Флинт видел только загорелые щёки и рыжевато-русую бороду, какие у эльфов не растут никогда. При бедре у человека висел меч, а на плече - длинный лук. На нём была одежда из мягкой кожи с тиснёным узором. Узор был эльфийским. Но борода? Погодите-ка...
— Танис? — окликнул Флинт неуверенно.
— А кто же ещё! — Бородатая физиономия расплылась в широченной улыбке. Танис сгрёб гнома в охапку, оторвав его от земли. Флинт ответил объятием на объятие, но тут же вспомнил о своём достоинстве и высвободился из рук полуэльфа.
— Маргарет Уэйс и Трейси Хикмэн, //Драконы осенних сумерек //
<<<
Бродящие по двум мирам, но в действительности, не принадлежащие ни одному из них. Полуэльфы сочетают в себе, как некоторые говорят, лучшие качества обеих рас: человеческие любознательность, изобретательность и амбиции, приправленные изысканными чувствами, любовью к природе и ощущением прекрасного, свойственными эльфам. Некоторые полуэльфы живут среди людей, отгороженные эмоциональными и физическими различиями, наблюдая за старением друзей и возлюбленных, лишь слегка тронутые временем. Другие живут с эльфами в неподвластных времени эльфийских королевствах. Они стремительно растут, и достигают зрелости, пока их сверстники ещё остаются детьми. Многие полуэльфы не способны ужиться ни в одном обществе, и выбирают жизнь одиноких странников или объединяются с другими изгнанниками и неудачниками, чтобы отправиться к приключениям.
---
!!!Меж двух миров
Для людей полуэльфы выглядят эльфами, а для эльфов они люди. Их рост примерно посередине между людьми и эльфами, и составляет от 155 до 180 см. Полуэльфы не такие стройные, как эльфы, но и не такие широкоплечие как люди. Их вес колеблется между 45 и 80 кг, и мужчины лишь немного превосходят женщин в росте и весе. У мужчин полуэльфов на лицах растут волосы, и некоторые отращивают бороды, чтобы скрыть своё эльфийское происхождение. Цвет волос и кожи у них примерно посередине между их людскими и эльфийскими родителями, и таким образом разнообразие даже выше, чем у исходных рас. Цвет глаз они обычно наследуют у эльфийских родителей.
---
!!!Дипломаты или странники
Полуэльфы не имеют собственных государств, но их радушно принимают в людских городах, и чуть менее радушно в эльфийских лесах. В крупных городах, в регионах, где люди и эльфы живут рядом, численность полуэльфов иногда возрастает настолько, что они организовывают свои собственные маленькие коммуны. Они рады обществу других полуэльфов, единственных существ, которые по-настоящему понимают, каково это, жить меж двух миров.
Впрочем, в большей части мира полуэльфы настолько редки, что могут годами не встречаться друг с другом. Некоторые полуэльфы предпочитают вообще избегать компании, и живут на природе как охотники, лесники или искатели приключений, посещая цивилизованные места лишь изредка. Как и эльфы, благодаря своему долголетию они движимы тягой к перемене мест и нигде не остаются подолгу. Другие же наоборот, бросаются в гущу социальной жизни, используя свою харизму и социальные навыки на поприще дипломата или мошенника.
---
!!!Превосходные послы
Несмотря на то, что большинство людей никогда не видели полуэльфа, каждый знает, что они существуют. Появление незнакомого полуэльфа скорее сопровождается перешёптыванием и бросаемыми исподтишка взглядами, чем открытой заинтересованностью или враждебностью.
Многие полуэльфы учатся ещё в раннем возрасте преодолевать враждебность и находить со всеми общий язык. Как раса они обладают эльфийской грацией без эльфийской отчуждённости, и человеческой энергичностью без человеческой грубости. Из них часто выходят превосходные послы и посредники (за исключением переговоров между людьми и эльфами, так как каждая сторона подозревает полуэльфа в приверженности другой).
---
!!!Имена полуэльфов
Полуэльфы используют и человеческие и эльфийские имена. Как бы подчёркивая, что они в действительности не принадлежат ни одному из этих обществ, полуэльфы, выросшие среди людей, получают эльфийские имена, а те, кто вырос среди эльфов, наоборот — берут человеческие.
Вы можете оказать помощь другому существу. Если вы совершаете действие Помощь, существо, которому вы помогаете, совершит свою следующую проверку характеристики для выполнения задачи с преимуществом, если она будет совершена до начала вашего следующего хода.
В качестве альтернативы, вы можете помочь дружественному существу атаковать другое существо, находящееся в пределах 1 м от вас. Вы совершаете финт, отвлекаете цель или каким-то другим образом делаете атаку союзника более эффективной. Если ваш союзник атакует цель до начала вашего следующего хода, первый бросок атаки совершается с преимуществом.
Искусство превращения текстиля в одежду и аксессуары из ткани, от практичных до богато украшенных платьев. Изысканная одежда иногда служит основой для магического снаряжения.
```
Модификатор портняжного дела = бонус мастерства инструментов ткача + модификатор Ловкости
```
Вы - один из сотен местных рыбаков, которые каждое утро доставляют выловленное на рынки своего портового города. Вы провели бесчисленное количество дней, плавая на веслах в окрестных водах, и знаете их и других рыбаков, рабочих и жителей порта лучше, чем кто-либо другой. Хотя вы оставили ту жизнь позади, вы всё равно время от времени навещаете их.
* ''Владение навыками:'' Атлетика, Ловкость рук
* ''Владение инструментами:'' Один [[игровой набор|Игровой набор]] и [[водный транспорт |Наземный и водный транспорт]]
* ''Снаряжение:'' Комплект для рыбалки, игровой набор, которым вы владеете, комплект одежды селянина, шлюпка и кошель с 5 см
!!!Умение: Житель порта
Вы выросли в доках и водах родной гавани. Портовые жители помнят вас и до сих пор относятся к вам как к одному из них. Они рады вам и вашим спутникам. Хотя они могут взять с вас плату, они всегда предложат еду и кров, которые у них есть; они даже спрячут вас, если за вами охотится городская стража.
!!!Персонализация
| !к8 |!Черта характера |
| 1 |Я любопытен. Я хочу знать, почему все происходит так, как происходит, и почему люди делают то, что они делают. |
| 2 |Я не умею петь, но это никогда не мешает мне делать это громко. Все любят хорошие морские песни! |
| 3 |Я думаю, что местное правительство делает потрясающую работу, а вы? |
| 4 |Я очень рад, что местная церковь, восстанавливается. Я ревностно поклоняюсь этому божеству. |
| 5 |Я очень суеверен. Я вижу предзнаменования в повседневных событиях. |
| 6 |Я ненавижу богачей и люблю срывать их планы и портить им удовольствие по мелочам. |
| 7 |У меня есть морская история на все случаи жизни. |
| 8 |Я рыбак, но втайне ненавижу есть рыбу. Я сделаю все, чтобы избежать этого. |
| !к6 |!Идеал |
| 1 |''Спокойствие. ''Для всех вещей существует прилив и отлив. Я отправляюсь в плавание, когда нужно, и чиню свои сети, когда нет. |
| 2 |''Ветренность.'' Я плыву туда, куда дуют ветры. Никто не указывают мне, куда и когда плыть. |
| 3 |''Стремление.'' Я добьюсь благосклонности вышестоящего покровителя! |
| 4 |''Непроистойность. ''Я хочу, чтобы люди смотрели на меня как на эксперта по местным борделям. |
| 5 |''Самоотверженность.'' Мы все дети моря. Я помогаю всем, кто находится в опасности на плаву и на берегу. |
| 6 |''Эгоизм. ''Я отказываюсь рисковать своей шкурой, чтобы помочь другим. Они бы не помогли мне, если бы мы поменялись местами. |
| !к6 |!Привязанность |
| 1 |Жители родных рудников - моя семья. Я сделаю все, чтобы защитить их. |
| 2 |Житель Подземья спас мне жизнь, когда я был ранен и одинок. Я в большом долгу перед его народом. |
| 3 |Я должен созерцать и сохранять естественную красоту мест под землей. |
| 4 |Драгоценные камни привлекают меня больше, чем золото, земля, магия или сила. |
| 5 |Я хочу исследовать новые глубины и покорять новые вершины. |
| 6 |Когда-нибудь я найду золотую жилу и проведу остаток жизни в роскоши. |
| !к6 |!Слабость |
| 1 |Однажды я потерял всё, кроме своей гребной лодки. Я сделаю всё, чтобы защитить ее. |
| 2 |Мой брат служил в армии, но его убили. Я очень уважаю мужчин и женщин, которые служат. |
| 3 |Власти казнили моего друга за колдовство. Когда-нибудь я отомщу им. |
| 4 |Люди храма помогли мне, когда я был ранен, и ничего не попросили взамен. Я обязан им жизнью. |
| 5 |Однажды меня ограбили в трущобах. Этого больше не повторится. |
| 6 |Я сделаю все, чтобы защитить других портовых жителей. Они - моя семья.|
Обычно боевая сцена это схватка двух сторон, яростные выпады оружия, финты, парирование, маневрирование и накладывание заклинаний. Игра организовывает этот хаос в циклы раундов и ходов. ''Раунд'' представляет примерно 6 секунд, прошедших в игровом мире. Во время раунда все участники сражения совершают ''ходы''. Порядок ходов определяется в начале боевой сцены, когда все совершают проверку инициативы. Когда все совершат свои ходы, начинается новый раунд, если одна сторона пока не победила другую.
---
!!!Шаг 1: определение неожиданности
Отряд искателей приключений прокрадывается в лагерь разбойников и выскакивает из-за деревьев. Студенистый куб скользит по коридору и поглощает одного из персонажей. В этих ситуациях одна из сторон сражения застаёт другую врасплох.
То, кто захвачен врасплох, определяет Мастер. Если ни одна из сторон не старалась вести себя тихо, группы автоматически замечают друг друга. В противном случае Мастер сравнивает проверки Ловкости (Скрытность) тех, кто прячется, с пассивным значением Мудрости (Внимательность) противоположной стороны. Все персонажи и чудовища, не заметившие угрозы, в начале сцены захвачены врасплох.
Если вы захвачены врасплох, вы не можете перемещаться и совершать действия в первом раунде сражения, и пока этот раунд не окончится, вы не можете совершать реакции. Член отряда может быть захваченным врасплох, даже если остальные члены отряда не захвачены.
---
!!!Шаг 2: определение позиций
В зависимости от походного строя и заявленных позиций Мастер определяет, где стоят все персонажи и чудовища, как далеко и где именно они находятся.
---
!!!Шаг 3: определение инициативы
Инициатива определяет порядок совершения ходов во время сражения. Когда сражение начинается, все участники совершают проверки Ловкости или Интеллекта, в зависимости от того какой из модификаторов этих характеристик выше, чтобы определить свою позицию в порядке инициативы. Мастер совершает один бросок для целой группы одинаковых существ, чтобы все они действовали одновременно.
Мастер располагает участников сражения в порядке от обладателя наивысшего результата до обладателя наименьшего результата. Это порядок (называемый порядком инициативы), в котором они действуют в раунде. Порядок инициативы остаётся одним и тем же каждый раунд.
В случае ничьей Мастер определяет порядок среди соперничающих существ, управляемых им, а игроки определяют порядок среди своих персонажей. Если ничья возникает между чудовищем и персонажем игрока, порядок определяет Мастер. В качестве альтернативы, Мастер может бросить за всех соперничающих к20, чтобы определить порядок среди тех, у кого выпала ничья.
---
!!!Шаг 4: совершение ходов
В свой ход вы можете переместиться на расстояние, не превышающее вашу скорость, и совершить одно действие и одно бонусное действие. После окончания вашего хода он передается следующему существу в порядке инициативы. Многое может случится во время вашего хода помимо ваших действий, ход обычно делится на три части.
* ''Начало хода.'' Многие вещи случаются автоматически в начале вашего хода - это типичная точка отсчета для эффектов длящихся несколько раундов. В начале вашего хода совершите следующие шаги в произвольном порядке:
** Если вы создали эффект длящийся несколько раундов, уменьшите количество раундов на 1. Когда количество раундов достигает 0, эффект оканчивается.
** Совершите спасброски против действующих на вас эффектов, в описании которых указано, что они позволяют вам окончить их действие таким образом.
** Разрешите все прочие действующие на вас эффекты, в которых указано, что они происходят в начале вашего хода.
** Восстановите свои действия и реакцию. Действия и реакции, не потраченный в прошлый ход, теряются, вы не можете "сохранять" их из хода в ход. Вы не восстанавливаете действия и реакцию, если вы //недееспособны//. Некоторые эффекты и состояния могут изменить то, какие действия вы восстанавливаете и восстанавливаете ли вы реакцию. Если вы теряете и получаете дополнительные действия, решите какие из них вы теряете.
* ''Действия и перемещение.'' Вы можете перемещаться и совершать действия в любом порядке, но вы должны завершить одно действие прежде чем совершать другое.
** В разделе «[[Перемещение в бою|Перемещение в бою]]» приводятся правила по перемещению.
** Самые распространённые действия описаны в разделе «[[Действия|Действия]]». Многие классовые умения предоставляют дополнительные варианты действий.
** Разнообразные классовые умения, заклинания и прочие эффекты позволяют вам совершать в ход дополнительное действие, называемое ''бонусным действием''.
*** Бонусное действие можно совершать только если особое умение или заклинание напрямую разрешает делать что-то бонусным действием. В противном случае бонусное действие совершать нельзя.
*** В свой ход вы можете совершить только одно бонусное действие, так что если у вас есть несколько вариантов, вы должны выбрать, какое бонусное действие совершить.
*** Вы сами выбираете, в какой момент хода совершить бонусное действие, если только его описание не указывает чёткие условия его применения.
*** Все эффекты, запрещающие вам совершать действия, запрещают также совершать бонусные действия.
** В свой ход с помощью ''свободного действия'' вы можете взаимодействовать с ''двумя'' предметами или особенностями местности во время другого действия. Например, вы можете расстегнуть и открыть рюкзак, и извлечь из него предмет, достать из кармана ключ и открыть дверь во время перемещения, или вынуть меч и кинжал из ножен частью того же действия, которым совершаете атаку.
*** Если вы хотите взаимодействовать с третьим предметом, вам нужно потратить на это действие. Некоторые магические и другие особые предметы всегда используются действием, что указывается в их описании.
*** Мастер может потребовать, чтобы вы потратили действие на такую деятельность, если предмет требует особого обращения или вам мешают необычные обстоятельства. Например, Мастер может резонно решить, что нужно потратить действие, чтобы открыть заклинившую дверь или повернуть ворот для опускания моста.
** Некоторые особые умения, заклинания и ситуации позволяют совершать особые действия, называемые ''реакциями''. Реакция — это мгновенный ответ на срабатывание некоего условия, который может происходить как в ваш, так и в чужой ход. Провоцированная атака - самый распространённый пример реакции.
*** Если вы совершили реакцию, вы не сможете совершить вторую реакцию до начала своего следующего хода.
*** Если реакция прерывала ход другого существа, это существо может продолжить свой ход после реакции.
*** Если трудно правильно оценить очерёдность реакций, то в первую очередь смотрите на описание реакции. Например, в описании провоцированной атаки и заклинания //щит// чётко указано, что они прерывают действие, которое вызвало их срабатывание. Если в описании реакции ничего не сказано про очерёдность, или оно размыто, реакция произойдёт после того, как закончится вызвавшее её срабатывание условие, как в случае действия [[Подготовка|Подготовка]].
** Вы можете общаться любыми доступными вам средствами, короткими фразами и жестами, не тратя на это действий.
** Вы можете в свой ход отказаться от перемещения и совершения действий. Если не можете решить, что делать, попробуйте совершить [[Уклонение|Уклонение]] или [[Подготовку|Подготовка]].
* ''Конец хода.'' Когда вы заканчиваете с совершением действий и перемещением, вы достигаете конца своего хода. В конце вашего хода совершите следующие шаги в произвольном порядке:
** Окончите действие всех эффектов, которые длятся до конца вашего хода.
** Совершите спасброски против действующих на вас эффектов, в описании которых указано, что они позволяют вам окончить их действие таким образом.
** Разрешите все действующие на вас эффекты, в которых указано, что они происходят в конце вашего хода.
//Стоимость перемещения:// половина вашей скорости.
В свой ход вы можете оседлать существо, находящееся в пределах 1 м от вас, или слезть с него.
Если некий эффект перемещает вашего скакуна против его воли, либо вас сбивают с ног, пока вы находитесь на нём, вы должны преуспеть в спасброске Ловкости со Сл 10, иначе вы упадёте со скакуна, падая ничком в пространстве в пределах 1 м от него.
Если ваш скакун сбивается с ног, вы можете реакцией спешиться и приземлиться на ноги. В противном случае вы падаете ничком в пространстве в пределах 1 м от него.
<<<
Anger is just anger. It isn't good. It isn't bad. It just is. What you do with it is what matters. It's like anything else. You can use it to build or to destroy. You just have to make the choice.
— Kalya Spearblossom, a disciple of Razaundra's fury
<<<
You have followed the teachings of the shadow demon Razaundra, a creature of unmatched anger and rage. Once a powerful demon in service to Lolth, Razaundra forges pacts with ambitious mortals, teaching them to control and channel their anger. In the hands of her disciples, rage becomes a force as deadly as any magic, and Razaundra's disciples can lace their magic with pure fury. You have learned to channel and manipulate the power of rage.
''Disciples of Fury in the World:'' A disciple of fury taps into the primal essence of magic, using their own natural anger and frenzy to channel the arcane power in flashy, flamboyant ways. Like the barbarian, the disciple of fury is often the product of a less civilized society. All disciples of fury must have spent time training with an uncivilized culture or some kind of monstrous race or otherworldly entity of rage.
''Disciples of Fury in the Game:'' At first, it seems like a contradiction—a spellcaster that “loses themself” in a blind fury. Yet, the disciple of fury makes for an interesting case, since their approach to magic is based on the primal passion of magic more than the studious quasi-scientific approach. The disciple of fury prestige path is sure to enliven any campaign, because it raises fascinating questions on the true nature of magic and magic use. But don’t ask the disciple of fury to answer those questions themself—they're not interested in the “why,” only the results.
''Adaptation.'' Disciple of fury NPCs are usually found working with barbarians or warlocks. They tend to shy away from traditional spellcasters and avoid the colleges and guilds where such individuals usually gather.
<<<
''Razaundra''
Razaundra was only spoken of in one paragraph in all of D&D, so I've expanded on her here.
Baphomet was a demon lord who ruled a layer of the Abyss called the Endless Maze. He was the Prince of Beasts and the Demon Lord of Minotaurs, an embodiment of savagery and an insidious force that wormed its way into the heart of his followers to deceive them into embracing brutality.
Razaundra is the daughter of Baphomet and Glasya, which also makes her the granddaughter of Asmodeus. Baphomet's wanton destruction at the expense of everything seemed pointless and futile to Razaundra. She had too much of her mother in her to revel in pure chaos. So, Razaundra left her father's realm and found herself within Lolth's domain. The spider queen seemed to revel in chaos intended to keep her servants sharp and never complacent. However, over time, Razaundra saw that Lolth's focus on chaos was just as aimless as her father's destruction. It was chaos for the sake of chaos with veiled justifications.
Razaundra eventually formed her own realm, where she would teach mortals to channel their inner rage into destructive magical forces. Razaundra is a demon of shadow, but she has more in common with her mother's lawful nature. Each mortal disciple strengthens her realm, expanding her influence across all the planes.
<<<
---
!!Последователь гнева
| !Ранг |!Умения |
| !1 |Lash of Anguish, Reckless Casting |
| !2 |Cascade of Fury, Maelstrom of Rage |
| !3 |Redirected Anger |
| !4 |Open the Dark Floodgates |
---
!!!Предварительные условия:
* ''Владения навыками.'' Магия.
* ''Заклинания.'' Способность сотворять заклинания 2 уровня или выше.
* ''Особое.'' Жил или обучался среди варваров или нецивилизованной культуры.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Lash of Anguish
<<<
A red lash appears in your hand, laying into your foes and leaving them in anguish.
<<<
//Disciple of Fury • Arcane, Evocation, Focus, Offensive, Psychic (Recharges after a short or long rest) //
As an action, choose one or two creatures you can see within 30 feet of you. Each target must succeed on a Wisdom saving throw or take 4d6 psychic damage. You gain a +5 bonus to the damage roll if you are below half your hit point maximum. Also on a failed save, a target can't take a reaction until the end of your next turn. Moreover, on its next turn, it must choose whether it gets a move, an action, or a bonus action; it gets only one of the three.
The damage of this exploit increases when you reach 9th level (6d6), 13th level (7d6), and 17th level (8d6).
!!!Reckless Casting
The first time you cast a spell, make a spell attack, or use a magical ability on your turn, you can decide to cast recklessly. Doing so gives you advantage on spell attack rolls and creatures have disadvantage on saving throws against your spells and magical effects during this turn, but attack rolls against you have advantage and you make saving throws with disadvantage until your next turn. If you are below half your hit point maximum when you cast recklessly, your spells and magical effects gain a +4 bonus to the initial damage roll.
<<<
''Initial Damage Roll ''
For example, if you cast a spell that deals fire damage and sets a creature on fire, only the initial fire damage gets the bonus to the roll. The subsequent fire damage each turn after does not get the bonus.
<<<
---
!!Ранг 2
!!!Cascade of Fury
<<<
When you release your fury, Razaundra's wrath distracts your foes to leave them at your mercy.
<<<
//Disciple of Fury • Arcane, Enchantment, Utility (Recharges after a short or long rest) //
As a bonus action, you gain advantage on attack rolls and creatures have disadvantage on saving throws against your effects, until the end of your turn.
Maelstrom of Rage
You can spend an inspiration on your turn (no action required) to choose one creature you can see within 30 feet of you. Until the end of your turn, whenever you deal damage to the chosen creature, it takes an additional 1d8 cold damage and 1d8 necrotic damage. The additional damage of this feature increases when you reach 13th level (1d10 cold and 1d10 necrotic), and 17th level (1d12 cold and 1d12 necrotic).
---
!!Ранг 3
!!!Redirected Anger
When you reduce an enemy to 0 hit points on your turn, you can change the casting time of one of your cantrips from 1 action to 1 bonus action until the end of your turn. Alternatively, if you are below half your hit point maximum when you reduce an enemy to 0 hit points on your turn, you can immediately use your reaction to cast one cantrip.
---
!!Ранг 4
!!!Open the Dark Floodgates
<<<
The rage that wells up inside you is a dark storm whose force is felt by you and your foe alike.
<<<
//Disciple of Fury • Arcane, Enchantment, Necrotic, Offensive, Weapon (Recharges after a long rest) //
As an action, choose one creature you can see within 60 feet. The target must make a Wisdom saving throw. On a failed save, the target takes 8d10 necrotic damage and it is stunned. Also, on a failed save, you are dazed until the end of your next turn. On a successful save, the target takes half as much damage, and it is dazed and you are not.
While the target is stunned by this exploit, it can repeat the saving throw at the end of each of its turns. On a success, the stunned condition ends and it becomes dazed as an aftereffect. While the target is dazed by this aftereffect, the target can repeat the saving throw at the end of each of its turns, ending the exploit on a success. Until this aftereffect ends, your attack rolls must target the nearest enemy that you can see. In addition, you gain advantage on attack rolls and deal an extra 1d12 damage whenever you hit with an attack.
A creature dazed by this exploit cannot take reactions, and on its turn, it must choose whether it gets a move, an action, or a bonus action; it gets only one of the three.
Вы можете в свой ход совершить действие [[Отход]] бонусным действием. Когда вы это делаете, вы можете потратить 1 очко ци, чтобы удвоить свою скорость и дальность прыжков до конца этого хода.
Ваша фамилия вызывает страх и восхищение в сердцах простых людей, но это не имеет к вам никакого отношения. Широко известны песни и рассказы о приключенческих подвигах вашего знаменитого родителя. Дети по всей стране росли, желая быть вами. Но в жизни ребёнка известного авантюриста есть и много минусов.
Вы редко видели своих родителей-знаменитостей-приключенцев, и когда они были рядом, все говорили только о них и об убийстве того демона, или победе над тем драконом. Слишком часто вы просыпались под крики за окнами вашего дома о новой угрозе для города, региона или мира.
В конце концов, всё, что у вас есть, - это ваше имя. Большая часть денег семьи ушла на расходные материалы, от //зелий лечения// и //свитков заклинаний// до невероятных объёмов дварфского эля. И все ожидают, что вы будете размахивать мечом или метать заклинания, как ваш знаменитый предок, что вдвойне усложняет ваши попытки проявить себя.
* ''Владение навыками:'' Внимательность, Выступление
* ''Владение инструментами:'' [[Набор для грима]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Набор для грима, комплект одежды исследователя и кошель с 30 см
!!!Умение: Отсылка к авторитету
Вам знакомы и встречались многие влиятельные люди по всему миру, и некоторые из них могут даже помнить вас. Возможно, вы сможете выторговать небольшую помощь у какой-нибудь важной фигуры в кампании, на усмотрение ДМа. Кроме того, простые люди относятся к вам с уважением, а за ваше наследие и истории, которые вы рассказываете, можно получить бесплатный обед или ночлег.
!!!Персонализация
Потомки знаменитых приключенцев имеют дело с чужой славой, незаработанным богатством и ожиданиями, которые они никогда не смогут оправдать. Эти трудности могут иметь неблагоприятные последствия, но те, кто с ними справляется, могут заработать достойное отношение и рациональную точку зрения по отношению к себе. Те, кто терпит неудачу, становятся ожесточенными или даже хуже.
| !к8 |!Черта характера |
| 1 |Я никогда не выйду из тени моего знаменитого родителя, и никто другой никогда не поймет этого бремени. |
| 2 |Я достаточно налюбовался приключенческой жизнью, чтобы иметь реалистичные ожидания и сочувствие к своим сверстникам. |
| 3 |Жить в соответствии с моим наследием будет сложно, но я собираюсь это сделать. |
| 4 |Я привык к самому лучшему в жизни, и от этой привычки трудно избавиться. |
| 5 |Мой родитель научил меня чувству долга. Я стремлюсь придерживаться ему, даже когда шансы против меня. |
| 6 |Никто не может так поддельно улыбаться, жать руки или заинтересованно кивать, как это могу я. |
| 7 |Я был частью приключенческой жизни с тех пор, как научился ходить. Позвольте мне объяснить вам несколько вещей. |
| 8 |Любой риск оправдан ради победы над моими врагами ... и присвоения их вещей. |
| !к6 |!Идеал |
| 1 |''Власть.'' Единственный способ продвинуться вперёд в этом мире - достичь власти и удержать её всеми силами. |
| 2 |''Мир.'' У тех, кто способен найти или примириться с хаотическим миром вокруг себя, есть все. |
| 3 |''Слава. ''Я видел, что может принести слава. И я сделаю все, чтобы получить все это для себя.|
| 4 |''Обучение.'' Тяжёлый труд, жертвы и тренировки приводят к успеху и, в конечном итоге, к совершенству. |
| 5 |''Анонимность.'' Я хочу добиться успеха. Самостоятельно. С толстенной стеной между мной и всеми остальными в мире. |
| 6 |''Мудрость.'' Материальное богатство - это иллюзия. Мудрость - настоящее сокровище. |
| !к6 |!Привязанность |
| 1 |Пока мой родитель был в приключениях, меня вырастил слуга, и я забочусь об этом человеке больше, чем кто-либо. |
| 2 |Я считаю каждого члена бывшей приключенческой группы моих родителей своей семьёй. |
| 3 |Несмотря на их отсутствие, мои знаменитые родители были добрыми и щедрыми. Я люблю их и хочу, чтобы они гордились мной. |
| 4 |Однажды мои родители принесли домой проклятый магический предмет. Я одержим им. |
| 5 |Дом моего детства хранит в себе все мои лучшие воспоминания, и моя главная забота - поддержание его в надлежащем состоянии. |
| 6 |Когда я рос, у меня был воображаемый друг, на которого я всегда мог рассчитывать. Этот друг все еще со мной. |
| !к6 |!Слабость |
| 1 |Вы не знаете, через что я прохожу. Вы никогда не поймёте. |
| 2 |Ты. Принеси мой плащ. И помассируй ноги. |
| 3 |Мои товарищи храбры, но я должен победить эту угрозу в одиночку, чтобы доказать свою ценность. |
| 4 |Ах да, это заклинание? Названное в честь лучшего друга моих родителей. Позвольте мне рассказать вам о нём. |
| 5 |Мои лучшие дни остались позади. Впереди только тяжёлый труд, боль и смерть. |
| 6 |Вы должны заботиться о себе. Кроме вас никто не будет этого делать. |
<<tabs "[tag[Потусторонний покровитель]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Монахи, следующие Практике Астрального тела, верят, что их тела — это иллюзии. Они видят свою ци как проявление их истинной формы — астрального тела. Эта форма может быть как силой порядка, так и силой хаоса. Одни монастыри воспитывают своих учеников использовать силу для защиты слабых, другие же тренируют тех, кто стремится проявлять свою истинную форму в служении могущественным силам.
Астральное тело — это полупрозрачное воплощение души монаха. Из-за этого оно может отражать особенности предыстории монаха, его идеалы, слабости и привязанности. Астральное тело не обязательно должно выглядеть так же, как монах. Например, астральное тело худощавого человека может напоминать минотавра, силу которого монах ощущает внутри. Точно так же и астральное тело монаха-орка может иметь тонкие руки и мягкие черты лица, олицетворяя нежность и изящество его души. Каждое астральное тело уникально, и некоторые монахи этого пути больше известны по внешнему виду своих астральных тел, нежели своему физическому облику.
Когда будете выбирать этот путь, придумайте особенность, выделяющую вашего монаха. Одержим ли он чем-то? Ведут ли его справедливость или личные мотивы? Любая мотивация может отражаться на вашем астральном теле.
---
!!! [img[3.png]] Руки астрального тела
<<<
Ваше мастерство во владении ци позволяет вам призвать частичку вашего астрального тела.
<<<
Бонусным действием вы можете потратить 1 очко ци, чтобы призвать руки своего астрального тела. Когда вы используете это умение, каждое видимое и выбранное вами существо в пределах 2 м от вас должно преуспеть в спасброске Ловкости против Сл спасброска вашей ци, иначе получит урон силовым полем, равный двум броскам ваших костей боевых искусств.
В течение 10 минут эти призрачные руки парят на уровне ваших плеч или окружают ваши руки (по вашему выбору). Вы сами определяете внешний вид рук. Астральные руки исчезают раньше, если вы становитесь [[недееспособны|Недееспособный]] или умираете.
Во время действия этого умения вы получаете следующие преимущества:
* Вы можете использовать ваш модификатор Мудрости вместо модификатора Силы, когда совершаете проверки Силы или спасброски Силы.
* Вы можете использовать эти призрачные руки для совершения безоружных атак.
* Если вы совершаете безоружные атаки этими руками, досягаемость этих атак на 1 м больше, чем обычно.
* Когда вы атакуете этими руками, вы можете использовать ваш модификатор Мудрости вместо модификатора Силы или Ловкости для бросков атаки и урона, а наносимый этими атаками урон — урон силовым полем.
---
!!! [img[6.png]] Лик астрального тела
<<<
Вы можете призывать лик своего астрального тела.
<<<
В свой ход вы можете, потратив 1 очко ци, бонусным действием или одновременно с призывом рук астрального тела призвать и лик астрального тела на 10 минут. Он исчезает раньше, если вы становитесь [[недееспособны|Недееспособный]] или умираете.
Лик астрального тела скрывает ваше лицо словно маска или шлем. Вы сами определяете его внешний вид.
Во время действия этого умения вы получаете следующие преимущества:
//''Астральный взгляд.''// Вы можете как обычно видеть в темноте, как в магической, так и в немагической, в радиусе 40 м.
//''Мудрость духа.''// Вы совершаете проверки Мудрости (Проницательность) и Харизмы (Запугивание) с преимуществом.
//''Слово духа.''// Когда вы говорите, вы можете направить свои слова к существу по вашему выбору, которое вы можете видеть в пределах 12 м от вас, так, что вас услышит только это существо. В качестве альтернативы вы можете усилить свой голос настолько, что все существа в пределах 200 м смогут услышать вас.
---
!!! [img[11.png]] Торс астрального тела
В то время, когда ваши руки астрального тела и лик астрального тела призваны, вы можете призвать торс астрального тела (для этого не требуется никаких действий). Этот призрачный торс покрывает ваше физическое тело словно набор доспехов, соединяясь с руками и ликом. Вы сами определяете его внешний вид.
Во время действия этого умения вы получаете следующие преимущества:
//''Отражение энергии.''// Когда вы получаете урон звуком, кислотой, огнём, силовым полем, холодом или электричеством, вы можете реакцией отклонить его. Когда вы делаете это, вы уменьшаете получаемый вами урон на 1к10 + ваш модификатор Мудрости (минимум 1).
//''Усиленные руки.''// Один раз в свой ход, когда вы попадаете атакой руками астрального тела, вы можете нанести дополнительный урон цели, равный броску вашей кости боевых искусств.
---
!!! [img[17.png]] Пробуждение астрального тела
<<<
Ваша связь с астральным телом усиливается настолько, что вы становитесь способны полностью раскрыть его потенциал.
<<<
Бонусным действием вы можете потратить 5 очков ци для того, чтобы призвать руки, лик и торс астрального тела на 10 минут. Это пробуждение оканчивается раньше, если вы становитесь [[недееспособны|Недееспособный]] или умираете.
Во время действия этого умения вы получаете следующие преимущества:
//''Броня духа.''// Вы получаете бонус +2 к КД.
//''Град астральных ударов.''// Каждый раз, когда вы используете умение Дополнительная атака, чтобы атаковать дважды, вместо этого вы можете атаковать трижды, совершая все атаки с помощью рук астрального тела.
Известно, что бог-дракон Бахамут путешествует по Материальному Плану в облике молодого монаха, и легенда гласит, что именно он, будучи в этом облике, основал первый монастырь Практики Восходящего дракона. Основополагающее учение этой практики гласит, что, подражая драконам, монах становится частью их мира и магии. Изменяя свой дух, чтобы он резонировал с драконьей мощью, монахи, следующие этой традиции, приумножают свою доблесть в бою, поддерживают своих союзников и даже могут парить в воздухе на драконьих крыльях. Но вся эта сила служит более великой цели - достижению духовного единства с сущностью Материального Плана.
Как последователь Практики Восходящего дракона, вы решаете, как именно вы пробудили силу драконов внутри себя. Таблица ниже предлагает несколько вариантов.
| !к6 |!Происхождение Восходящего дракона |
| 1 |Вы совершенствовали свои способности, объединив свой дух с мощью дракона, способной изменить мир. |
| 2 |Дракон лично принимал активное участие в формировании вашей внутренней энергии. |
| 3 |Вы обучались в монастыре, чьи техники уходят глубоко в прошлое на многие века и тянутся от одного единственного учения дракона, или того учения, что было разработано богом-драконом. |
| 4 |Вы долго медитировали в окрестностях логова древнего дракона, впитывая окружающую его магию. |
| 5 |Вы нашли свиток, в котором описывались вдохновляющие новые техники на Драконьем языке. |
| 6 |После сна, в котором вы видели пятиглавого драконорождённого, вы пробудились с мистическим дыханием драконов. |
---
!!! [img[3.png]] Дыхание дракона
<<<
Вы можете испускать волны разрушительной энергии, подобные тем, что создают драконы, которым вы подражаете.
<<<
Когда вы совершаете действие [[Атака]], вы можете заменить одну из ваших атак выдохом магической энергии 4-метровым конусом или 6-метровой линией шириной 1 м (на ваш выбор). Выберите тип урона: кислота, огонь, холод, электричество или яд. Все существа в этой области должны совершить спасбросок Ловкости против Сл спасброска вашей ци, получая урон выбранного вида в количестве, равном двум броскам кости боевых искусств, при провале и половину этого урона при успехе.
На 11 уровне монаха урон этого умения увеличивается до трёх бросков кости боевых искусств.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха. Если у вас не осталось непотраченных использований этого умения, вы можете потратить 2 очка ци на повторное использование этого умения.
---
!!! [img[3.png]] Ученик дракона
<<<
Вы можете направить силу дракона, на усиление ваших безоружных ударов эссенцией драконьего дыхания, а также для усиления своего авторитета.
<<<
Вы получаете следующие преимущества:
//''Влиятельность дракона.''// Если вы проваливаете проверку Харизмы (Запугивание) или Харизмы (Убеждение), вы можете реакцией совершить повторную проверку, используя могущественное влияние драконов. После того как это умение превратит провал в успех, вы не можете использовать его повторно, пока не завершите продолжительный отдых.
//''Удар дракона.''// Когда вы наносите урон цели безоружным ударом, вы можете изменить вид урона на кислоту, огонь, холод, электричество или яд.
//''Язык драконов.''// Вы можете говорить, читать и писать на Драконьем языке или на одном другом языке на ваш выбор.
---
!!! [img[6.png]] Расправленные крылья
Когда вы используете [[Поступь ветра]], вы можете расправить спектральные драконьи крылья за своей спиной, исчезающие в конце вашего хода. Пока крылья расправлены, вы получаете скорость полёта равную вашей скорости ходьбы.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[11.png]] Аспект змия
<<<
Вы излучаете силу драконьего духа, защищающую ваших союзников или вселяющую ужас в ваших врагов.
<<<
Бонусным действием вы можете создать ауру драконьей силы, исходящую от вас с радиусом 2 м в течение 1 минуты. В течение этого времени вы получаете один из следующих эффектов по вашему выбору:
//''Сопротивление.''// При создании ауры выберите вид урона: кислота, огонь, холод, электричество или яд. Вы и ваши союзники находящиеся в ауре получаете сопротивление к этому виду урона.
//''Ужасающее присутствие.''// При создании ауры и бонусным действием в последующие ходы, вы можете выбрать существо в пределах ауры. Цель должна преуспеть в спасброске Мудрости против Сл спасброска вашей ци, иначе станет [[испуганной|Испуганный]] вами на 1 минуту. Цель может повторять спасбросок в конце каждого своего хода, оканчивая на себя эффект при успехе.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите 3 очка ци на повторное использование этого умения.
---
!!! [img[17.png]] Аспект восхождения
<<<
Ваш драконий дух достигает своего пика.
<<<
Вы получаете следующие преимущества:
//''Взрывная ярость.''// Когда вы используете свой Аспект змия, из вас вырывается драконья ярость. Выберите любое количество видимых вами существ в пределах ауры. Каждое из этих существ должно преуспеть в спасброске Ловкости против Сл спасброска вашей ци, иначе получит 3к10 урона кислотой, огнём, холодом, электричеством или ядом (на ваш выбор).
//''Слепое зрение.''// Вы получаете [[слепое зрение|Зрение и свет]] радиусом 2 м. В пределах этого радиуса вы можете видеть всё, что не находится за [[полным укрытием|Укрытие]], даже если вы [[ослеплены|Ослеплённый]] или находитесь в полной темноте. Кроме того, вы способны видеть [[невидимых|Невидимый]] существ в пределах этого радиуса, если они не скрыты от вас.
//''Усиленное дыхание.''// Когда вы используете своё Дыхание дракона, вы можете потратить 1 очко ци, чтобы увеличить его область и силу. Выдох магической энергии становится либо 12-метровым конусом, либо 18-метровой линией шириной 1 м (на ваш выбор), а урон этого умения увеличивается до четырёх бросков кости боевых искусств.
Монахи, следующие Практике Кенсея, беспрестанно улучшают свои навыки владения оружием, достигая того, что оружие становится продолжением их тела. Основанная на мастерстве боя на мечах, практика расширилась и включает в себя множество различных видов оружия.
Для кенсея оружие – то же самое, что кисточка для художника или перо и чернила для писателя. Будь то меч или лук – всё это лишь инструменты для выражения красоты и точности боевых искусств. Мастерство делает кенсея несравненным воителем, но при этом требует изнурительных тренировок, практики и обучения.
---
!!! [img[3.png]] Оружие кенсея
Вы получаете владение оружием кенсея, приведённым в таблице ниже. Оружие кенсея также считается для вас монашеским оружием. Многие умения этой практики работают только с оружием кенсея.
|!Древковое |!Стрелковое |
|Глефа |Длинный лук |
|!Клинковое |Композитный лук |
|Катана |Короткий лук |
|Катар |Легкий арбалет |
|Фальшион |Легкий многозарядный арбалет |
|!Цепы |Ручной арбалет |
|Боевой цеп |!Топоры |
|Кнут |Полэкс |
---
!!! [img[3.png]] Путь кенсея
<<<
Ваше освоение боевых искусств ведет вас к мастерству использования определенных видов оружия. Этот путь также включает в себя обучение искусным штрихам каллиграфии или живописи.
<<<
Вы получаете следующие преимущества:
//''Выстрел кенсэя.''// Бонусным действием в свой ход вы можете сделать свои дальнобойные атаки оружием кенсея более смертоносными. До конца того хода ваши дальнобойные атаки оружием кенсея наносят дополнительно 1к4 урона.
//''Ловкое парирование.''// Если вы совершаете безоружный удар частью действия [[Атака]] в свой ход и держите рукопашное оружие кенсэя, вы можете использовать его, чтобы защититься. Вы получаете бонус +2 к КД до начала вашего следующего хода, если это оружие находится в вашей руке и вы дееспособны.
//''Путь кисти.''// Вы получаете владение [[инструментами каллиграфа|Инструменты каллиграфа]] или [[художника|Инструменты художника]] на ваш выбор.
---
!!! [img[6.png]] Единство с клинком
Вы распространяете вашу энергию ци на своё оружие кенсея, получая следующие бонусы:
//''Магическое оружие кенсэя.''// Ваши атаки оружием кенсэя считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
//''Ловкий удар.''// Один раз в свой ход, когда вы попадаете по цели оружием кенсэя, вы можете потратить 1 очко ци, чтобы нанести цели дополнительный урон этим оружием, равный вашей кости боевых искусств.
---
!!! [img[11.png]] Заострённый клинок
<<<
Вы научились пропитывать ваше оружие энергией ци.
<<<
Бонусным действием вы можете потратить до 3 очков ци для того, чтобы дать одному оружию кенсэя, которое вы держите, бонус к броскам атаки и урона. Бонус равен количеству потраченных очков ци.
Бонус длится 1 минуту или до тех пор, пока вы снова не используете это умение. Если вы используете это умение на магическом оружии, у которого уже есть бонус к броскам атаки и урон, сумма бонусов не может превысить +3.
---
!!! [img[17.png]] Непревзойденная точность
<<<
Ваше мастерство владения оружием достигает таких высот, что ваша точность становится невероятной.
<<<
Один раз в свой ход, если вы промахиваетесь атакой монашеским оружием, вы можете перебросить этот бросок атаки.
Монахи Практики Милосердия учатся управлять жизненной силой других для помощи нуждающимся. Они являются странствующими целителями, помогающими бедным и раненым. Тем, кому они не в силах помочь, они даруют быструю смерть в качестве акта милосердия.
Те, кто следуют Практике Милосердия, могут быть смиренными членами религиозных орденов, помогающими нуждающимся, а также принимающими тяжкие решения, основанные на реализме, а не на идеализме. Некоторые из них могут быть целителями с успокаивающими голосами, которых любят окружающие, в то время как другие могут лишь скрываться за этой личиной, неся милосердную погибель.
Те, кто следуют по этому пути, обычно носят простые рясы с большими капюшонами и очень часто скрывают свои лица масками, преподнося себя как безликих подателей жизни или смерти.
---
!!! [img[3.png]] Орудия милосердия
Вы получаете владение навыками Проницательность и Медицина, а также владение [[набором травника|Набор травника]].
Также вы получаете специальную маску, которую обычно носите при использовании умений этого архетипа. Вы самостоятельно определяете её внешний вид или выбираете его случайным образом, совершая бросок по таблице ниже.
| !к6 |!Внешний вид маска |
| 1 |Ворон |
| 2 |Пустая и белая |
| 3 |Плачущий лик |
| 4 |Смеющийся лик |
| 5 |Череп |
| 6 |Бабочка |
---
!!! [img[3.png]] Рука исцеления
<<<
Ваше мистическое прикосновение может исцелять раны.
<<<
Действием вы можете потратить 1 очко ци, чтобы прикоснуться к существу и восстановить количество хитов, равное броску кости боевых искусств + ваш мод. Мудрости.
Когда вы используете [[Шквал ударов]], вы можете заменить безоружную атаку использованием этого умения без затраты очков ци на исцеление.
---
!!! [img[3.png]] Рука повреждения
<<<
Вы используете свою энергию ци для нанесения ран.
<<<
Когда вы попадаете по существу безоружной атакой, вы можете потратить 1 очко ци, чтобы нанести урон некротической энергией, равный броску кости боевых искусств + ваш мод. Мудрости. Вы можете использовать это умение только один раз за ход.
---
!!! [img[6.png]] Прикосновение целителя
<<<
Вы можете применять усиленное исцеление с помощью прикосновения, а при необходимости можете использовать свои знания, чтобы причинить вред.
<<<
Когда вы используете Руку исцеления на существе, вы также можете окончить одну болезнь или одно состояние из перечисленных: [[глухота|Оглохший]], [[отравление|Отравленный]], [[ошеломление|Ошеломлённый]], [[паралич|Парализованный]] или [[слепота|Ослеплённый]].
Когда вы используете Руку повреждения на существе, вы можете сделать это существо [[отравленным|Отравленный]] до конца вашего следующего хода.
---
!!! [img[11.png]] Шквал исцеления и повреждения
<<<
Вы можете обрушивать потоки утешения и боли.
<<<
Теперь при использовании [[Шквала ударов|Шквал ударов]] вы можете заменить каждый из безоружных ударов на использование вашей Руки исцеления без затрат очков ци на исцеление.
Кроме того, когда вы совершаете безоружный удар [[Шквалом ударо|Шквал ударов]]в, вы можете использовать Руку повреждения вместе с этим ударом без затраты очков ци на эффекты Руки повреждения. Вы всё ещё можете использовать Руку повреждения только один раз за ход.
---
!!! [img[17.png]] Рука абсолютного милосердия
<<<
Ваше мастерство в познании жизненной энергии открыло вам двери к наивысшему милосердию.
<<<
Действием вы можете прикоснуться к трупу существа, умершего в течение последних 24 часов, и потратить 5 очков ци. Благодаря этому существо возвращается к жизни, восстанавливая количество хитов, равное 4к10 + ваш мод. Мудрости. Если существо умерло, находясь в любом из следующих состояний, оно оживает уже без них: [[глухота|Оглохший]], [[отравление|Отравленный]], [[ошеломление|Ошеломлённый]], [[паралич|Парализованный]] или [[слепота|Ослеплённый]].
Использовав это умение, вы не сможете использовать его повторно, пока не завершите продолжительный отдых.
Монахи, следующие этой практике, являются непревзойдёнными мастерами боевых искусств, вне зависимости от того, вооружены ли они. Они изучают техники, позволяющие толкать и опрокидывать противника, а также лечить себя, управляя энергией ци. Используемые ими медитации позволяют защититься от получаемого вреда.
---
!!! [img[3.png]] Техника открытой ладони
<<<
Вы получаете возможность манипулировать вражеской энергией ци, направляя свою собственную.
<<<
Когда вы попадает по существу безоружной атакой [[Шквала ударов|Шквал ударов]], вы можете применить к цели этой атаки один из следующих эффектов:
* Цель должна преуспеть в спасброске Ловкости против Сл спасброска вашей ци, иначе будет [[сбита с ног|Сбитый с ног / Лежащий ничком]].
* Цель должна совершить спасбросок Силы против Сл спасброска вашей ци. При провале вы можете оттолкнуть её от себя на расстояние до 3 м.
* Цель не может совершать реакции до конца вашего следующего хода.
---
!!! [img[6.png]] Целостность тела
<<<
Вы научились исцелять себя.
<<<
Вы можете действием восстановить свои хиты до максимума.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[11.png]] Спокойствие
<<<
Вы можете погрузиться в особую медитацию, окружающую вас аурой мира.
<<<
При завершении короткого или продолжительного отдыха вы получаете эффект заклинания //убежище// (со Сл спасброска вашей ци), длящийся до начала вашего следующего продолжительного отдыха (эффект может окончиться ранее, согласно описанию заклинания).
---
!!! [img[17.png]] Дрожащая ладонь
<<<
Вы способны создавать смертельные колебания в чужом теле.
<<<
Когда вы попадаете по существу безоружной атакой, вы можете потратить 3 очка ци, чтобы создать неуловимые колебания в его теле, которые длятся в течение количества суток, равного вашему уровню монаха. Колебания безвредны, пока вы не остановите их действием. Для того чтобы остановить их, цель должна находится на одном плане существования с вами. Когда вы совершаете это действие, существо должно совершить спасбросок Телосложения против Сл спасброска вашей ци. В случае успеха цель получает 10к10 урона некротической энергией, а в случае провала её хиты опускаются до 0.
Эффект оканчивается преждевременно без вреда для цели, если вы используете это умение на другое существо, либо сами решите окончить его досрочно (действие не требуется).
Монахи Практики Познания смерти одержимы значением и механизмами смерти. Они отлавливают существ и проводят сложные эксперименты, чтобы запечатлетить, записать и осмыслить моменты их гибели. Они применяют эти знания к боевым искусcтвам, создавая смертоносный боевой стиль.
---
!!! [img[3.png]] Прикосновение смерти
<<<
Ваши познания о смерти позволяют вам извлекать жизненные силы других существ, когда они близки к своей кончине.
<<<
Когда вы опускаете хиты враждебного существа до 0, вы получаете временные хиты в количестве равном вашему модификатору Мудрости + уровень монаха (минимум 1).
---
!!! [img[6.png]] Час жатвы
<<<
Вы способны наводить страх и ужас на окружающих, поскольку вашей души коснулась тень смерти.
<<<
Вы можете действием заставить всех видящих вас существ в пределах 6 м от вас совершить спасбросок Мудрости против Сл спасброска вашей ци. При провале существо будет [[испугано|Испуганный]] вами до конца вашего следующего хода. Существо, преуспевшее в спасброске, получает иммунитет к эффекту этого умения на 24 часа.
---
!!! [img[11.png]] Мастерство смерти
<<<
Вы можете использовать своё знакомство со смертью, чтобы избежать её хватки.
<<<
Когда ваши хиты опускаются до 0, вы можете потратить 1 очко ци, чтобы вместо этого ваши хиты опустились до 1.
---
!!! [img[17.png]] Прикосновение познанной смерти
<<<
Ваше прикосновение может направить энергию смерти прямо в существо.
<<<
Действием вы можете коснуться одного существа в пределах 1 м от вас, потратить от 1 до 10 очков ци, и заставить его совершить спасбросок Телосложения. При провале существо получает 2к10 урона некротической энергией за каждое потраченное этим действием очко ци, или половину урона при успехе.
Практика Пьяного мастера обучает своих воспитанников двигаться отрывисто, непредсказуемо, подобно пьянице. Пьяный мастер качается, шатаясь на подгибающихся ногах, пытаясь казаться неумелым бойцом, с которым не хочется вступать в схватку. Беспорядочные спотыкания пьяного мастера являются ничем иным, как прекрасно исполненным танцем блоков, парирований, выпадов, атак и отступлений.
Пьяный мастер часто любит прикидываться дурачком, чтобы принести радость горюющим или чтобы продемонстрировать покорность высокомерным, но вступив в битву, пьяный мастер может быть страшным и виртуозным противником.
---
!!! [img[3.png]] Дополнительные владения
<<<
Ваша техника боевого искусства соединяет боевые тренировки с точностью танцора и шутовскими выходками.
<<<
Вы получаете владение импровизированным оружием, навыком Выступление и [[инструментами пивовара|Инструменты пивовара]]. Если вы уже владеете этим навыком или набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
Кроме того, импровизированное оружие считается для вас монашеским оружием, если его можно использовать одной рукой.
---
!!! [img[3.png]] Техника пьяницы
<<<
Вы научились быстро крутиться и разворачиваться во время Шквала ударов.
<<<
Когда вы используете [[Шквал ударов]], то получаете все преимущества от действия [[Отход]], а ваша скорость ходьбы увеличивается на 2 м до конца этого хода.
---
!!! [img[6.png]] Шатающаяся походка
<<<
Вы можете двигаться странным, покачивающимся образом.
<<<
Вы получаете следующие преимущества:
//''Вскочить на ноги.''// Когда вы [[сбиты с ног|Сбитый с ног / Лежащий ничком]], вы можете встать, потратив 1 м скорости вместо половины скорости.
//''Перенаправить атаку.''// Когда существо промахивается по вам атакой ближнего боя, вы можете реакцией потратить 1 очко ци, чтобы эта атака попала по одному видимому вами существу по вашему выбору, кроме атакующего, в пределах 1 м от вас. В качестве альтернативы вы можете потратить еще 1 очко ци, чтобы эта атака попала в атакующего.
---
!!! [img[11.png]] Удача пьяницы
<<<
Удача улыбается вам в нужный момент.
<<<
Когда вы совершаете проверку характеристики, бросок атаки или спасбросок с помехой, вы можете потратить 2 очка ци, чтобы отменить помеху на этот бросок.
Кроме того, вы можете пытаться нанести Ошеломляющий удар атакой, попавшей в другое существо посредством вашего умения Перенаправить атаку.
---
!!! [img[17.png]] Опьянённое бешенство
<<<
Вы можете отказаться от точных прицельных ударов по уязвимым местам противника и вместо этого наносить удары с размаху, используя технику, которая подавляет нескольких противников.
<<<
Когда вы используете [[Шквал ударов]], вам не нужно тратить очки ци на атаку по существу, если вы не атаковали его в этот ход.
Монахи Практики Солнечной души обращают собственную жизненную энергию в обжигающие лучи света. Они учат, что медитация может высвободить неукротимый свет, скрытый в душе каждого живого существа.
---
!!! [img[3.png]] Луч сияющего солнца
<<<
Вы можете выпускать обжигающие лучи магического сияния.
<<<
Вы получаете новый вариант атаки, который вы можете использовать с действием [[Атака|Атака]].
Эта особая атака – дальнобойная атака заклинанием с дистанцией 6 м. Вы получаете владение этой атакой и добавляете свой модификатор Ловкости к её броскам атаки и урона. Атака наносит урон излучением и использует кость урона ваших Боевых искусств.
Вы можете использовать ваши Боевые искусства, чтобы, когда в свой ход вы совершаете действием [[Атака]] эту особую атаку, частью этого действия совершить одну дополнительную такую атаку. Вы не можете совершить более одной дополнительной атаки частью действия [[Атака]], в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).
Когда вы получаете умение Дополнительная атака, эта особая атака может использоваться вместо любой из атак, совершаемых частью действия [[Атака]].
---
!!! [img[3.png]] Сияние души
Действием вы можете коснуться одного Крошечного предмета и заставить его испускать яркий свет в пределах 4 м и тусклый свет в пределах ещё 4 м. Свет может быть любого выбранного вами цвета. Полное покрытие предмета чем-то непрозрачным блокирует свет. Этот эффект заканчивается, если вы снова используете это умение или отмените его действием.
---
!!! [img[6.png]] Солнечная вспышка
Когда вы наносите существу урон излучением, вы можете потратить 1 очко ци, чтобы заставить его совершить спасбросок Телосложения. При провале цель становится [[ослеплённой|Ослеплённый]] до конца вашего следующего хода.
---
!!! [img[6.png]] Удар пылающей дуги
<<<
Вы научились преобразовывать ваше ци в волны пылающей энергии.
<<<
Сразу же после совершения действия Атака, вы можете потратить 2 очка ци, чтобы сотворить заклинание //огненные ладони// бонусным действием.
Вы можете потратить дополнительное очко ци, чтобы сотворить //огненные ладони// более высокого уровня. Каждое дополнительное очко ци поднимает уровень заклинания на 1. Максимальное количество очков ци (2 плюс дополнительные очки), которое может быть потрачено на это заклинание, равно половине ваших уровней монаха.
---
!!! [img[11.png]] Пылающий солнечный взрыв
<<<
Вы научились создавать шар света, разрывающийся разрушительной вспышкой.
<<<
Действием вы магическим образом создаёте шар и метаете его в выбранную точку в пределах 30 м от вас, где он мгновенно разрывается смертоносной сферой сияющего света.
Все существа в пределах сферы с радиусом 4 м с центром в этой точке должны преуспеть в спасбросоке Телосложения против Сл спасброска вашей ци, иначе получат 2к6 урона излучением. Существу не нужно совершать спасбросок, если оно находится за непрозрачным полным укрытием.
Вы можете увеличить урон сферы, потратив очки ци. Каждое очко, до максимума в 3 очка, увеличивает урон на 2к6.
---
!!! [img[17.png]] Солнечный щит
<<<
Вы окутаны сияющей магической аурой.
<<<
Вы магическим образом испускаете яркий свет в пределах 6 м и тусклый свет в пределах ещё 6 м. Вы можете погасить или зажечь этот свет бонусным действием.
Если, пока свет зажжён, существо попадает по вам рукопашной атакой оружием, вы можете реакцией нанести этому существу урон излученеим в количестве равном 5 + ваш мод. Мудрости.
Монахи, следующие Практике Тени, ценят скрытность и ухищрения. Эти монахи, которых можно назвать ниндзя или теневыми танцорами, служат шпионами и наёмными убийцами. Иногда члены такого монастыря являются одной семьёй, образуя клан, и хранят в тайне своё искусство и цели. Другие монастыри больше похожи на гильдии воров, предоставляя свои услуги знати, богатым купцам, и всем, кто может заплатить. Вне зависимости от методов, руководители этих монастырей ожидают беспрекословного подчинения от своих учеников.
---
!!! [img[3.png]] Глаза ночи
У вас есть ночное зрение с радиусом 40 м. На этом расстоянии вы при тусклом освещении можете видеть так, как будто это яркое освещение, в темноте так, как будто это тусклое освещение, и в магической темноте, которую вы создаёте, так, как будто это тусклое освещение.
---
!!! [img[3.png]] Теневые искусства
<<<
Вы способны дублировать эффекты некоторых заклинаний с помощью ци.
<<<
Вы можете действием потратить 2 очка ци, чтобы сотворить одно из следующих заклиний: //бесследное передвижение//, //ночное зрение//, //тишину// или //тьму//. Заклинание сотворяется на минимально возможном уровне, не требует ячейки заклинания и материального компонента. Кроме того, вы изучаете заговор //малая иллюзия//. Базовой характеристикой для этих заклинаний является Мудрость.
---
!!! [img[6.png]] Теневой шаг
<<<
Вы способны переходить из одной тени в другую.
<<<
Если вы находитесь в темноте или тусклом свете, вы можете бонусным действием телепортироваться на 12 м в другое видимое вами тускло освещённое или тёмное пространство. После чего вы совершаете свою следующую рукопашную атаку с преимуществом до конца этого хода.
---
!!! [img[11.png]] Плащ теней
<<<
Вы способны становиться единым целым с тенью.
<<<
Если вы находитесь в темноте или тусклом свете, вы можете действием стать [[невидимым|Невидимый]]. Вы остаётесь [[невидимым|Невидимый]] до тех пор, пока не совершите атаку, не сотворите заклинание, или не окажетесь в ярко освещённом пространстве.
---
!!! [img[17.png]] Стремительная тень
Вы способны использовать секундное замешательство цели, по которой попала атака.
Если по существу в пределах 1 м от вас попала атака, совершённая другим существом, вы можете реакцией совершить по нему рукопашную атаку.
Вы следуете монастырской практике, обучащей владению четырьмя стихиями. Сосредоточив свою ци, вы можете настроиться на силы мироздания и подчинить четыре стихии своей воле, используя их как продолжение собственного тела. Некоторые представители этой практики посвящают себя однму элементу, другие же сплетают элементы воедино.
Многие монахи этой практики покрывают свои тела татуировками, отражающими их энергию ци. Обычно это извивающиеся драконы, но встречаются также фениксы, рыбы, растения, горы и вздымающиеся волны.
---
!!! [img[3.png]] Последователь стихий
<<<
Вы изучили магические дисциплины, позволяющие управлять четырьмя стихиями.
<<<
Вам известна дисциплина [[Родство со стихией]] и ещё одну на ваш выбор. Вы изучаете ещё по одной дополнительной дисциплине при достижении 6, 11 и 17 уровней в этом классе. Каждый раз, когда вы получаете уровень в этом классе, можете заменить одну из уже изученных дисциплин на новую.
Ваши дисциплины расходуют очки ци при использовании, как указано в описании дисциплины.
Если дисциплина требует от существа совершения спасброска, используется Сл спасброска вашей ци.
//''Сотворение стихийных заклинаний.''// Некоторые стихийные дисциплины позволяют вам сотворять заклинания. Заклинания, сотворяемые с помощью этого умения, не требуют материальных компонентов.
После достижении 5 уровня в этом классе вы можете тратить дополнительные очки ци, чтобы повысить уровень сотворяемого вами заклинания стихийной дисциплины, при условии, что заклинание имеет усиленный эффект на более высоком уровне. Уровень заклинания увеличивается на 1 за каждое дополнительное потраченное очко ци.
Максимальное количество очков ци, которое может быть потрачено вами на одно заклинание (включая как базовую стоимость, так и дополнительно потраченные очки ци), определяется вашим уровнем монаха и указано в таблице ниже.
| !Уровень монаха | !Максимальное количество очков ци на заклинание |
| 5-9 | 3 |
| 9-12 | 4 |
| 13-16 | 5 |
| 17-20 | 6 |
!!!Стихийные дисциплины
Если у дисциплины есть требование к уровню, вы должны достигнуть этого уровня монаха, чтобы изучить её. Вы можете изучить дисциплину в то же время, когда вы начали соответствовать этому требованию.
<<tabs "[tag[Стихийная дисциплина]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Предвидение - это способность видеть, пронзая завесу будущего, то, что ждет впереди. Псион, обладающий способностью Предвидения, может видеть то, что недоступно большинству людей, и в ограниченной степени знать будущее; такое будущее становится известным, если проследить его корни из настоящего, и становится все более загадочным и туманным по мере отдаления этих корней.
Такое будущее может быть изменено действиями в настоящем, в частности, знанием этого будущего и действиями по его предотвращению или изменению. Именно этой функцией чаще всего пользуются псионы-предсказатели, заглядывая в будущее, чтобы направить его в нужное русло.
---
!!!Провидение
<<<
Ваш взгляд охватывает события до того, как они произойдут.
<<<
Вы можете добавлять ваш бонус мастерства к вашим проверкам инициативы. Кроме того, вы получаете владение навыком Внимательность. Если вы уже владеете этим навыком, то ваш бонус мастерства для проверок этого навыка удваивается.
Вы можете в любое время сконцентрироваться (как если бы концентрировались на заклинании) на наблюдении за будущим (действие не требуется). Пока вы концентрируетесь таким образом, вы можете использовать свой модификатор Интеллекта вместо Мудрости для проверок Мудрости (Внимательность), а также вместо Ловкости для проверок инициативы и спасбросков Ловкости.
---
!!!Прозрение
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' На себя
''Компоненты:'' С
''Длительность:'' мгновенная
Вы сосредотачиваетесь и вглядываетесь в поток будущих возможностей, получая представление о том, что произойдет дальше; вы можете выбрать один из следующих вариантов:
* Вы можете дать преимущество себе или существу, которое может видеть или слышать вас, на следующий бросок атаки, совершенный до начала вашего следующего хода; если атака, получившая преимущество от этой особенности, попадает, она наносит дополнительно 1к6 урона.
* Вы можете дать помеху на следующий бросок атаки по себе или существу, которое может видеть или слышать вас, до начала вашего следующего хода; если атака попадает, несмотря на помеху, цель этой атаки совершает бросок 1к6 и вычитает результат из полученного урона.
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Прозрению (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Всеведующее (1 пси-очко):'' До начала вашего следующего хода, каждый раз когда цель Прозрения совершает бросок атаки, проверку характеристики или спасбросок, она может бросить 1к4 и добавить выпавшее число к результату.
* ''Ориентирующее (1+ пси-очко):'' Цель Прозрения может немедленно переместиться на 1 м за каждое дополнительно потраченное очко, на провоцируя атак.
* ''Препятствующее (2 пси-очка):'' Цель Прозрения получает преимущество на следующий спасбросок, который она совершает доя начала вашего следующего хода.
* ''Пронзающее (1+ пси-очко):'' Атака, получившая преимущество от этой особенности, наносит дополнительно 1к8 урона за каждое дополнительно потраченное очко.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину , вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//понимание будущего//, //защита от добра и зла// |
| !3 |//взгляд в будущее//, //гадание*// |
| !5 |//подсматривание// |
| !7 |//защита от смерти**//, //предсказание// |
| !9 |//наблюдение// |
- * //гадание //обладает тем же эффектом, но не контактирует с иномировой сущностью
- ** //защита от смерти// обладает тем же эффектом, но предостерегает цель, позволяя ей избежать смерти
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
При сотворении заклинания, наносящего урон звуком, кислотой, огнём, холодом, электричеством или ядом, вы можете потратить 1 очко чародейства и изменить его вид урона на другой из выше перечисленных.
Вы можете перестать концентрироваться на заклинании в любое время без затраты действия.
Вас преследует нечто столь ужасное, что вы не отваживаетесь даже говорить об этом. Вы пытались похоронить это и сбежать от него, но все попытки были тщетны. Чем бы оно ни было, то, что преследует вас нельзя убить мечом или изгнано заклятиями. Оно может являться к вам в виде тени на стене, кровавым кошмаром, воспоминанием, которое отказывается умирать или дьявольским шёпотом во тьме. Ноша берёт своё, изолируя вас от большинства людей и заставляя сомневаться в здравии вашего рассудка. Вы должны найти способ, победить это прежде, чем оно уничтожит вас.
* ''Владение навыками:'' Два на ваш выбор из следующих: Анализ, Выживание, Магия или Религия
* ''Языки:'' Два на ваш выбор, один из которых должен быть экзотическим
* ''Экипировка:'' Набор охотника на чудовищ, набор одежды селянина, одна безделушка, имеющая особое значение, и 1 см
!!!Переломное событие
Прежде чем стать искателем приключений, ваш жизненный путь определял один тёмный момент, одно судьбоносное решение или одна трагедия. Теперь вы чувствуете как тьма грозит поглотить вас и вы боитесь, что надежды на спасение больше нет. Выберите переломное событие, которое преследует вас или сделайте бросок по таблице ниже.
| !к10 |!Переломное событие |
| 1 |Монстр, убивший дюжины невинных людей сохранил вам жизнь и вы не знаете почему. |
| 2 |Вы были рождены под тёмной звездой. Вы чувствуете, как она наблюдает за вами, холодно и отстранённо. Иногда она взывает к вам в чернейшие ночи. |
| 3 |Призрак, преследовавший вашу семью поколениями теперь преследует вас. Вы не знаете, чего он хочет, но знаете, что он не оставит вас в покое. |
| 4 |В вашей семейной истории есть практиковавшие тёмное искусство. Однажды, играя вы почувствовали хватку чего-то ужасного на вашей душе, после чего вы сбежали. |
| 5 |Они забрал вашего родного брата или сестру одной холодной, тёмной ночью и вы были не в силах ему помешать. |
| 6 |Вы были прокляты ликантропией, но позже исцелились. Теперь вас преследуют невинные, убитые вами. |
| 7 |Карга похитила и вырастила вас. Вы сбежали, но карга всё ещё имеет магически связанна с вами и наполняет ваш разум злыми мыслями. |
| 8 |Вы открыли мистический том и увидели вещи, не укладывающиеся в здравый рассудок. Вы сожгли ту книгу, но слова и картинки из неё навсегда въелись в вашу психику. |
| 9 |Демон овладел вами в детстве. Вас держали под замком, но вы сбежали. Демон всё ещё внутри вас, но вы пытаетесь держать его взаперти. |
| 10 |Вы творили ужасные вещи, чтобы отомстить за убийство возлюбленного. Вы стали монстром и это преследует вас в кошмарах. |
!!!Умение: Сердце тьмы
Те, кто взглянет вам в глаза, сможет увидеть, что вы встречались с невообразимым ужасом и что вам не чужда тьма. Хотя они могут бояться вас, обыватели будут вежливы и сделают всё, чтобы помочь вам. Если вы не выказали признаков угрозы для них, они даже могут взяться за оружие, чтобы драться вместе с вами, если вы окажетесь лицом к лицу с врагом в одиночестве.
!!!Персонализация
Вы научились жить с ужасом, который вас преследует. Вы привыкли выживать и яро оберегать тех, кто привносит свет в вашу тёмную жизнь.
| !к12 |!Черта характера |
| 1 |У меня была встреча, которая, как я считаю, дает мне особое родство со сверхъестественным существом или событием. |
| 2 |Особенная одежда или необычное оружие служат отражением того, кто я есть. |
| 3 |Я никогда не признаю, что я не в своей тарелке. |
| 4 |Я должен знать разгадку каждой тайны. В моем присутствии ни одна дверь не остается незакрытой. |
| 5 |Я позволяю людям недооценивать меня, открывая всю свою компетентность только близким людям.|
| 6 |Я навязчиво стремлюсь собирать трофеи своих путешествий и побед. |
| 7 |Неважно, что весь мир против меня. Я всегда буду делать то, что считаю правильным. |
| 8 |У меня нездоровые интересы и мрачная внешность. |
| 9 |У меня есть личный ритуал, мантра или метод релаксации, который я использую для борьбы со стрессом. |
| 10 |Нет ничего важнее жизни, и я никогда не оставляю никого в опасности. |
| 11 |Я быстро перехожу к экстремальным решениям. Зачем рисковать тем, что меньший вариант не сработает? |
| 12 |Меня легко испугать, но я не трус. |
| !к12 |!Идеал |
| 1 |''Адреналин. ''Я испытал такие странности, что теперь чувствую себя живым только в экстремальных ситуациях. |
| 2 |''Баланс.'' Я стремлюсь противостоять поступкам того, за кого чувствую ответственность. |
| 3 |''Привязанность.'' Я причинил кому-то зло и должен исполнить его волю, чтобы избежать его проклятия. |
| 4 |''Бегство.'' Я верю, что есть что-то за пределами известного мне мира, и мне нужно это найти. |
| 5 |''Наследие.'' Я должен совершить что-то великое, чтобы меня запомнили, а мое время на исходе. |
| 6 |''Заблуждение.'' Я прилагаю все усилия, чтобы другие не узнали о моих недостатках или проступках. |
| 7 |''Одержимость.'' Я живу таким образом настолько долго, что не могу представить себе другого пути. |
| 8 |''Обязательство.'' Я обязан перед своим народом, верой, семьей или учителем продолжать унаследованное дело. |
| 9 |''Обещание.'' Моя жизнь больше не принадлежит мне. Я должен исполнить мечту того, кого уже нет. |
| 10 |''Откровение.'' Мне нужно знать, что лежит за пределами тайн смерти, мира или Тумана. |
| 11 |''Убежище.'' Я знаю, какие силы действуют в мире, и стремлюсь создать островок в стороне от них. |
| 12 |''Истина.'' Истина для меня превыше всего, даже если она никому не приносит пользы. |
| !к12 |!Привязанность |
| 1 |Мне отчаянно нужно вернуться к кому-то или куда-то, но я потерял их в тумане. |
| 2 |Все, что я делаю, служит могущественному хозяину, которого я должен держать в секрете от всех. |
| 3 |Я многим обязан своему исчезнувшему наставнику. Я стремлюсь продолжить их дело, даже когда ищу их самих. |
| 4 |Я видел великую тьму, и я намерен быть светом против нее - светом всех светов. |
| 5 |Кто-то, кого я люблю, стал монстром, убийцей или другой угрозой. Я должен спасти его. |
| 6 |Мир был убежден в ужасной лжи. Я должен открыть правду. |
| 7 |Я сильно скучаю по кому-то и быстро принимаю людей, которые напоминают мне о нем. |
| 8 |Во мне живет великое зло. Я буду бороться с ним и другими пороками мира до тех пор, пока смогу. |
| 9 |Я отчаянно ищу лекарство от недуга или проклятия, либо для кого-то из моих близких, либо для себя. |
| 10 |Духи притягиваются ко мне. Я делаю все возможное, чтобы помочь им обрести покой. |
| 11 |Я использую свой хитрый ум, чтобы разгадать тайны и добиться правосудия для тех, кого постигла несправедливость. |
| 12 |Я потерял близкого человека, но до сих пор вижу его в видениях, повторяющихся снах или в виде духа. |
| !к12 |!Слабость |
| 1 |Я верю, что рок преследует меня и что любого, кто приблизится ко мне, ждет трагический конец. |
| 2 |Я убежден, что что-то преследует меня, появляясь в зеркалах, снах и местах, где никто не мог бы появиться. |
| 3 |Я особенно суеверен и веду жизнь, стараясь избежать невезения, злых духов или тумана. |
| 4 |Я совершил невыразимое зло и сделаю все, чтобы об этом не узнали другие. |
| 5 |Я исключительно доверчив и сразу верю любой истории или легенде. |
| 6 |Я скептик и не верю в силу ритуалов, религии, суеверий или духов. |
| 7 |Я знаю, что мое будущее предопределено и что любой мой поступок приведет к предначертанному пророчеством концу. |
| 8 |Я должен находить лучшее во всех и во всем, даже если это означает отрицание очевидной злобы. |
| 9 |Я видел зло в каком-то месте, например, в лесу, городе или на кладбище, и не хочу туда идти. |
| 10 |Я исключительно осторожен, тщательно планирую и разрабатываю бесчисленные запасные варианты. |
| 11 |У меня репутация человека, победившего великое зло, но это ложь, и злая сила знает об этом. |
| 12 |Я знаю, что цель всегда оправдывает средства, и быстро иду на жертвы ради достижения своих целей. |
Если вы промахиваетесь атакой заклинанием, вы можете потратить 2 очка чародейства, чтобы перебросить бросок атаки. Вы должны использовать новое выпавшее значение.
Вы можете использовать вариант «Преследующее заклинание», даже если вы уже использовали другой вариант Метамагии при сотворении этого заклинания.
| !к8 |!Преступление |
| 1 |Убийство |
| 2 |Кража |
| 3 |Грабёж |
| 4 |Нападение |
| 5 |Контрабанда |
| 6 |Похищение |
| 7 |Вымогательство |
| 8 |Подделка |
Иногда «быть плохим» означает получить прибыль. Этот вид деятельности даёт персонажу шанс полу- чить денег, но с риском заключения.
//''Ресурсы''//. Перед преступлением персонаж должен потратить одну рабочую неделю и не менее 25 см на сбор информации о потенциальных целях.
//''Определение результата''//. Персонаж должен совершить серию проверок, сложность которых выбирается персонажем, исходя из прибыли, которую он хочет получить.
Выбранной сложностью может быть 10, 15, 20 или 25. Успешное завершение преступления приносит количество золотых монет, указанное в таблице ниже.
Чтобы совершить преступление, персонаж должен пройти три проверки: Ловкость (Скрытность), Ловкость (Воровские инструменты) и одна из следующих на выбор игрока: Интеллект (Анализ), Мудрость (Восприятие) или Харизма (Обман).
Если все проверки провалены, персонаж пойман и отправляется в тюрьму. Персонаж должен оплатить стоимость возможной добычи, а также отсидеть в тюрьме одну рабочую неделю за каждые 25 серебряных возможной добычи.
Если одна проверка была успешна, то преступление сорвалось, но персонажа не поймали. Если две проверки были успешны, то преступление частично удалось, и персонаж получает половину добычи. Если же все три проверки были успешны, персонаж получает всю добычу.
| !Сл |!Добыча|
| 10 |50 см, ограбление бедного торговца|
| 15 |100 см, ограбление богатого торговца|
| 20 |200 см, ограбление аристократа|
| 25 |1000 см, ограбление одного из богатейших людей города|
//''Осложнения''//. Криминальная жизнь чревата осложнениями. Совершите бросок по таблице, если персонаж проходит только одну проверку. Если соперник персонажа входит в криминальные круги или служит закону, осложнение происходит, даже если персонаж прошёл две проверки.
| !к8 |!Осложнение |
| 1 |За информацию о вашем преступлении обещано вознаграждение в размере вашей добычи.|
| 2 |Неизвестный связывается с вами, угрожая сообщить о вашем преступлении, если вы не окажете ему услугу.|
| 3 |Из-за вашего преступления жертва разорена. |
| 4 |Кто-то, кто знает о вашем преступлении, арестован по другому делу. |
| 5 |Ваша добыча это один единственный, легко опознаваемый предмет, который не удастся сбыть в здешних краях. |
| 6 |Вы ограбили кого-то, кто был под защитой местного криминального авторитета, который теперь хочет отомстить. |
| 7 |Ваша жертва хорошо знакома со стражей, что удваивает усилия по вашей поимке. |
| 8 |Ваша жертва просит одного из ваших сотоварищей по приключениям помочь раскрыть преступление. |
Вы опытный преступник с большим послужным списком. Вы провели много времени, вращаясь в преступных кругах, и до сих пор имеете связи с подпольным миром. В отличие от обычных людей вы близко познакомились с убийствами, воровством и жестокостью, что пропитывают низшие слои общества. Вы научились выживать, пренебрегая правилами и ограничениями, которым подчиняются другие.
* ''Владение навыками:'' Обман, Скрытность
* ''Владение инструментами:'' [[Воровские инструменты|Воровские инструменты]], один [[игровой набор|Игровой набор]]
* ''Экипировка:'' Ломик, комплект одежды взломщика, кошель с 15 см
!!!Преступная направленность
Существует много разновидностей преступников: в воровской гильдии или другой похожей организации отдельные члены занимаются различным промыслом и играют разные роли. И даже преступники-одиночки обычно занимаются чем-то конкретным.
| !к8 |!Направленность | !к8 |!Направленность |
| 1 |Взломщик | 5 |Контрабандист |
| 2 |Вымогатель | 6 |Наёмный убийца |
| 3 |Грабитель с большой дороги | 7 |Скупщик краденого |
| 4 |Карманник | 8 |Шантажист |
!!!Умение: Криминальные связи
У вас есть надёжное доверенное лицо, которое выступает в роли вашего связного в криминальных кругах. Вы умеете получать и отправлять сведения связному, даже через большие расстояния: например, вы знаете местных посыльных, продажных караванщиков и нечистых на руку матросов, которые могут доставить сообщение для вас.
---
!!!Разновидность преступника: Заключённый
Будь то эмоциональная привязанность или стремление к богатству, вы приняли решение, которое повлияет на всю вашу дальнейшую жизнь. Вы были хороши в своем деле и считали себя неуязвимым. Все изменилось, когда вас схватили. Вас заперли в тюремной камере. Первые недели вы надеялись, что останетесь в живых. Когда недели превратились в месяцы, а допросы продолжались, вы стали мечтать о смерти.
Вы владеете навыком Внимательность вместо навыка Скрытность, и можете выбрать умение Бывший узник вместо умения Криминальные связи.
<<<
!!!Альтернативное умение: Бывший узник
Знания, полученные во время заключения, позволяют вам получить сведения о местных стражниках и тюремщиках. Вы знаете, кто из них будет брать взятки или смотреть на вас сквозь пальцы. Вы также можете искать убежище от властей у других преступников в этом районе.
<<<
---
!!!Разновидность преступника: Контрабандист
На шаткой барже вы провезли сотню длинных мечей в бочках из-под рыбы прямо мимо забывчивых лакеев начальника дока. Под взором луны вы перегоняли речное судно, наполненное краденым эльфийским вином, а утром продавали его вдвое дороже. В более милосердные времена вы вывозили невинных из зон военных действий или помогали вывести стада животных в безопасное место на берегу горящей реки.
Если вы жили бытом контрабандиста, вы владеете навыком Атлетика вместо навыка Скрытность, водным транспортом вместо воровских инструментов, и можете выбрать умение Залечь на дно вместо умения Криминальные связи.
<<<
!!!Альтернативное умение: Залечь на дно
Вы связаны с сетью контрабандистов, готовых помочь вам выбраться из затруднительных ситуаций. Находясь в определённом городе, посёлке или другом подобном населенном пункте (на усмотрение Мастера), вы и ваши спутники можете бесплатно остановиться в убежище. БУбежищаа обеспечивают бедный образ жизни. Находясь в убежище, вы можете сохранить свое присутствие (и присутствие ваших спутников) в секрете.
<<<
---
!!!Разновидность преступника: Шпион
Несмотря на то, что ваши способности не слишком отличаются от способностей взломщика или контрабандиста, вы научились применять их в другом ключе: в качестве специалиста по шпионажу. Вполне возможно, что вы — официально уполномоченный агент короны, или же вы просто продаёте добытые сведения тому, кто больше заплатит.
---
!!!Персонализация
Преступники на первый взгляд могут выглядеть злодеями, и многие из них действительно злы. Но у некоторых есть такие черты, за которые их можно и простить. Даже среди воров есть честь, но преступники редко относятся с уважением к властям и их представителям.
| !к8 |!Черта характера |
| 1 |У меня всегда есть план на случай, если всё пойдёт не так как задумано. |
| 2 |Я всегда хладнокровен, несмотря ни на что. Я никогда не повышаю голоса и не позволяю эмоциям управлять мной. |
| 3 |На новом месте я первым делом подмечаю, где находятся различные ценности — или места, где они могут быть спрятаны. |
| 4 |Я предпочту обзавестись ещё один другом, нежели ещё одним врагом. |
| 5 |У меня проблемы с доверием. Те, кто выглядят самыми порядочными, зачастую скрывают множество грязных секретов. |
| 6 |Наилучший способ заставить меня сделать что-то — сказать мне этого не делать. |
| 7 |Мне наплевать на риск. Никогда не говорите мне о возможных последствиях. |
| 8 |Я срываюсь даже от малейшего оскорбления. |
| !к6 |!Идеал |
| 1 |''Честь.'' Я не краду у своих «коллег». |
| 2 |''Свобода.'' Любые оковы должны быть сломлены, как и те, кто их выковал. |
| 3 |''Милосердие.'' Я краду у богачей, чтобы помочь людям в беде. |
| 4 |''Жадность.'' Я сделаю всё что угодно, лишь бы разбогатеть. |
| 5 |''Друзья.'' Я верен не каким-то там идеалам, но своим друзьям. А все остальные могут катиться к чертям. |
| 6 |''Искупление.'' В каждом есть что-то хорошее. |
| !к6 |!Привязанность |
| 1 |Я пытаюсь оплатить старый долг одному щедрому благодетелю. |
| 2 |Свои нечестно заработанные деньги я трачу на помощь своей семье. |
| 3 |У меня забрали нечто важное, и я намереваюсь выкрасть это обратно. |
| 4 |Я стану величайшим вором из всех, когда-либо живших. |
| 5 |Я виновен в ужасающем преступлении. Надеюсь, я смогу простить себя за это. |
| 6 |Близкий человек погиб из-за ошибки, которую я совершил. Это не повториться вновь. |
| !к6 |!Слабость |
| 1 |Когда я вижу что-то ценное, я не могу думать ни о чём другом, кроме мыслей о том, как это украсть. |
| 2 |Когда я становлюсь перед выбором между друзьями и деньгами, я обычно выбираю деньги. |
| 3 |Если есть какой-то план, я его наверняка забуду. А если не забуду, то попросту проигнорирую. |
| 4 |У меня есть привычка, которая выдаёт меня, когда я вру. |
| 5 |Я поджимаю хвост и убегаю, когда всё складывается плохо. |
| 6 |Невинный человек находится в тюрьме из-за преступления, что я совершил. Меня это не беспокоит. |
[img width=300 class="centerme" [https://i.imgur.com/yrls1C4.png]]
Эти, казалось бы, одичалые нецивилизованные полурослики не называют себя каким-то определённым образом - "призрачными" их начали называть чужаки. Большинство из них обитают в районах, почти полностью отрезанных от внешнего мира, объединяясь в закрытые и тесные коммуны. Те немногие, что покидают свои кланы, всегда носят с собой знак символизирующий какую-либо особенность местности, на которой обитает их клан, например, гладкий камень или флакон воды из ручья. Потеря такого знака считается грехов и требует акта искупления, назначаемого лидером клана.
Из-за того, что их народ имеет закрытую, клановую культуру, недоверчивую ко всему чужому, призрачные полурослики в качестве искателей приключений встречаются редко. Спросите своего Мастера, можете ли вы играть представителем этой подрасы.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Бесшумная речь |^Вы можете общаться телепатически с любым существом в пределах 6 м от вас. Существо должно знать язык, на котором вы говорите. Вы можете одновременно общаться телепатически только с одним существом. |
|^Призрачные видения |^Вы можете действием открыть своё сознание для видений из других миров. В течение 10 минут ваше зрение простирается на один из планов по вашему выбору: Эфирный План, Страну Фей или Царство Теней. Объекты и существа, находящиеся на них, выглядят для вас полупрозрачными. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
| !_к100_ |!Результат |
| 1-10 |Вы были на волоске от смерти. Ваше тело уродуют скверные шрамы, и вам недостаёт уха, 1к3 пальцев рук или 1к4 пальцев ног. |
| 11-20 |Вы получили тяжёлую травму. Хотя рана зажила, она всё равно время от времени даёт о себе знать. |
| 21-30 |Вы были ранены, но со временем полностью выздоровели. |
| 31-40 |Вы заразились какой-то болезнью, шастая по нечистотам. Вы излечились от неё, но теперь у вас постоянный кашель, оспины на коже или не по возрасту седые волосы. |
| 41-50 |Вы были отравлены ловушкой или монстром. Вы восстановились, но в следующий раз, когда вам придётся проходить спасбросок против яда, вы получите помеху на этот спасбросок. |
| 51-60 |Вы потеряли что-то сентиментально важное для вас во время вашего приключения. Уберите одну безделушку из ваших вещей. |
| 61-70 |Вас ужасно испугало нечто, с чем вы столкнулись, после чего вы сбежали, бросив ваших товарищей на произвол судьбы. |
| 71-80 |Вы многому научились во время своих приключений. В следующий раз, когда вы будете совершать проверку характеристики или спасбросок, вы получите преимущество на этот бросок. |
| 81-90 |Вы обнаружили небольшое сокровище во время вашего приключения. У вас осталось 2к6 cм от вашей доли. |
| 91-99 |Вы нашли большое сокровище во время вашего приключения. У вас осталось 1к20+50 cм от вашей доли. |
| 00 |Вы обнаружили обычный магический предмет (по выбору Мастера). |
Вы провели свою жизнь, служа в храме, посвящённому какому-то конкретному богу или же пантеону богов. Вы — посредник между царством небесным и миром живых. Вы совершали священные ритуалы и приносили жертвоприношения для того чтобы молящиеся могли предстать пред ликом богов. Вы не обязательно жрец — совершение священных обрядов не то же самое, что направление божественной силы.
Выберите божество, пантеон богов или полубожественную сущность из тех, что предложены Мастером, и продумайте вместе с Мастером природу вашего религиозного служения.
* ''Владение навыками:'' Проницательность, Религия
* ''Языки:'' Два на ваш выбор
* ''Экипировка:'' Священный символ (подаренный вам в момент принятия священного сана), молитвенник или молитвенный барабан, 5 палочек благовоний, облачение, комплект одежды священнослужителя, кошель с 15 см
!!!Умение: Приют для верующих
Вы и ваши спутники можете рассчитывать на бесплатное лечение и уход в храмах, святынях и других подобных местах, посвящённых вашей вере. Вам придётся предоставить материальные компоненты для заклинаний, если таковые понадобятся. Те, кто разделяют вашу веру, могут обеспечить вам (но только вам) скромное существование.
У вас также могут быть связи с каким-то конкретным храмом, посвящённым вашему божеству или пантеону, в котором у вас есть жилая комната. Пока вы находитесь с этим храмом в хороших отношениях, находясь неподалёку от него, вы можете попросить у его служителей помощи, если она не подвергнет их опасности.
!!!Персонализация
Прислужники изучают историю и догматы своей веры, и на их привычки и идеалы влияет их отношение к храмам, святыням и иерархиям. Их слабостью может быть лицемерие или еретическая идея, либо идеал или привязанность, возведённая до гротеска.
| !к8 |!Черта характера |
| 1 |Я идеализирую конкретного героя своей веры и постоянно ссылаюсь на его поступки и свершения. |
| 2 |Я могу найти общую позицию даже у самых яростных врагов, сопереживая им, и всегда стремясь к примирению. |
| 3 |Я вижу знамения в каждом событии и поступке. Боги пытаются говорить с нами, нужно лишь прислушаться. |
| 4 |Ничто не может поколебать мой оптимизм. |
| 5 |При любой оказии я цитирую (или перевираю) священные тексты и притчи. |
| 6 |Я терпим (или нетерпим) к другим верованиям, и уважаю (или порицаю) поклонение другим богам. |
| 7 |Я люблю хорошую еду, выпивку и высокое общество представителей своего храма. Жизнь вдали от этого меня раздражает. |
| 8 |Я пробыл в храме слишком долго, и мне недостаёт опыта взаимодействия с людьми за его пределами. |
| !к6 |!Идеал |
| 1 |''Традиции.'' Мы должны сохранить и защитить древние традиции богослужения и совершения священных таинств. |
| 2 |''Милосердие.'' Несмотря на затраченные усилия, я всегда пытаюсь помочь тем, кто в нужде. |
| 3 |''Перемены.'' Мы должны помогать привносить в мир перемены, которых наши божества постоянно жаждут. |
| 4 |''Власть.'' Я надеюсь однажды подняться на самую вершину своей религиозной иерархии. |
| 5 |''Вера.'' Я верю, что моё божество направляет меня. И что усердная работа всегда будет вознаграждена. |
| 6 |''Стремление.'' Я ищу шанс доказать, что я достоин благословления своего божества, совершая деяния в соответствии с его учениями. |
| !к6 |!Привязанность |
| 1 |Я не пощажу живота своего, лишь бы найти древнюю реликвию своей веры, что была потеряна давным-давно. |
| 2 |Однажды я отомщу развращённым представителям верховной иерархии своего храма, что объявили меня еретиком. |
| 3 |Я обязан своей жизнью священнику, который позаботился обо мне, когда умерли родители. |
| 4 |Всё, что я делаю — для простых людей. |
| 5 |Я пойду на всё что угодно, дабы защитить свой храм. |
| 6 |Я пытаюсь сохранить священные тексты, которые мои враги считают еретическими и пытаются уничтожить. |
| !к6 |!Слабость |
| 1 |Я не проявляю снисходительности к другим, но к себе я ещё более суров. |
| 2 |Я слишком доверяю тем, кто обладает властью в моей церковной иерархии. |
| 3 |Моя набожность зачастую приводит к тому, что я слепо верю всем, кто исповедует мою религию. |
| 4 |Я непреклонен в своих убеждениях. |
| 5 |Я настороженно отношусь к незнакомцам и всегда жду от них худшего. |
| 6 |Однажды выбрав цель, я становлюсь одержимым ею в ущерб всему прочему в своей жизни. |
Вы можете лучше прицелиться в видимое вами существо.
Вы совершаете следующий бросок атаки по выбранному вами существу до конца вашего следующего хода с преимуществом. Кроме того, вы можете добавить к броску этой атаки половину вашего модификатора Мудрости (округляя вверх).
Вы может попытаться силой переместиться через пространство враждебного существа.
Вы совершаете действием или бонусным действием проверку Силы (Атлетика), противопоставленную проверке Силы (Атлетика) цели. Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше.
При успехе, вы можете в этом ходу один раз переместиться сквозь пространство цели и не провоцируете от неё атаку, покидая её досягаемость.
Пробужденный разум - это псион, в котором псионическая сила пробудилась в результате контакта, события или обстоятельств. Возможно, их способности были латентными, а возможно, их судьба была судьбой обычного существа, пока силы не были внезапно на них возложены. Может быть, они заглянули в потусторонние миры в ярком сне, может быть, бродили по Стране Фей и вернулись искаженными, а может быть, просто увидели глаза существа, которое не принадлежало этому миру, прогуливаясь по улице.
Пробуждение часто бывает несколько травматичным. Псионов не очень хорошо понимают, и первая сила, которую они проявляют - телепатия - является одной из самых пугающих и порицаемых способностей.
Пробужденный может быть как сочувствующим, так и жестоким, добрым или злым. Знание о том, что творится в головах окружающих, влияет на каждого по-своему, отталкивая одних от общества, когда они видят его истинное лицо, в то время как другие чувствуют влечение к решению проблем, которые видят только они.
---
!!! [img[1.png]] Открытое сознание
<<<
Вы научились напрямую подключаться к разуму других существа.
<<<
Вам известна псионическая дисциплина [[Телепатии|Телепатия]].
{{Телепатия}}
---
!!! [img[1.png]] Психическая осведомленность
Вы можете использовать Интеллект вместо Мудрости, когда совершаете проверку Мудрости (Проницательность) против существа, значение Интеллекта которого равно 6 или выше.
Кроме того, если вы телепатически общались с согласным существом, вы знаете его общее местоположение (направление и приблизительное расстояние) в течение следующего часа, пока вы находитесь с ним на одном плане.
---
!!! [img[3.png]] Чтец мыслей
Когда вы используете Телепатическое вторжение, вы можете заставить цель совершить спасбросок Интеллекта вместо спасброска Мудрости против этой способности (вы выбираете при использовании способности).
Когда существо проваливает спасбросок против вашего Телепатического вторжения, вы можете один раз добавить или вычесть 1к4 к результату своего броска атаки по нему, либо к результату его спасброска от вашего псионического умения (кроме Телепатического вторжения), до конца вашего следующего хода.
---
!!! [img[6.png]] Усиленная псионика
Когда вы наносите урон псионической способностью, вы можете добавить свой модификатор Интеллекта к наносимому урону.
---
!!! [img[10.png]] Всевидящее око
Вы получаете ментальное зрение радиусом 12 м. В пределах этого радиуса вы можете видеть всех существ, значение Интеллекта которых равно 6 или выше,и которые не находятся за [[полным укрытием|Укрытие]], даже если вы [[ослеплены|Ослеплённый]] или находитесь в полной темноте. Кроме того, вы способны видеть [[невидимых|Невидимый]] существ в пределах этого радиуса, если они не скрыты от вас. Кроме того, вы можете использовать Интеллект вместо Мудрости, когда совершаете проверку Мудрости (Внимательность) для [[Поиска|Поиск]] скрытых существ, которых вы можете видеть этим зрением.
---
!!! [img[14.png]] Полное пробуждение
<<<
Вы можете на короткое время полностью пробудить свой расширенный разум к истинному постижению.
<<<
В начале своего хода вы можете потратить 2 пси-очка, чтобы получить преимущество на все спасброски и броски атаки, совершаемые вами до начала вашего следующего хода.
Возможно, вы произошли из рода торговцев. Может быть, вы были предпринимателем. Как бы то ни было, ваши начинания плохо кончились. Было ли это из-за внешних влияний, неудачи или просто потому, что ваша деловая хватка была слабой, вы потеряли всё. Однако с неудачей приходит опыт. Вы свободны от этой старой жизни, сохранив некоторые связи и усвоив уроки.
* ''Владение навыками:'' Анализ, Убеждение
* ''Владение инструментами:'' Один вид [[инструментов ремесленников|Инструменты ремесленников]]
* ''Языки:'' Один на ваш выбор
* ''Экипировка:'' Инструменты ремесленника, которыми вы владеете, комплект одежды ремесленника, торговые весы и кошель с 10 см
!!!Умение: Цепочка поставок
Вы сохранили свои прошлые связи с оптовыми торговцами, поставщиками и другими купцами и предпринимателями. Вы можете воспользоваться этими связями при поиске предметов или информации.
!!!Персонализация
Для того, чтобы стать торговцем, необходимо иметь представление о числах, сильную личность, способность заключать сделки с недружелюбными конкурентами, крепкую руку чтобы отбиваться от бандитов, и интуицию, чтобы знать, чего люди хотят и в чем нуждаются. Искусство ведения бизнеса - это искусство поиска наилучшего пути к прибыли, и этот путь может быть разным для каждой сделки. Чтобы добиться успеха, нужны сильный ум и крепкое нутро. Так почему ты потерпел неудачу?
| !к8 |!Черта характера |
| 1 |Мне не хватало жесткости, необходимой для достижения успеха. Я больше не совершу эту ошибку. |
| 2 |Даже мои конкуренты говорили, что я приветливый и талантливый. Эти качества должны мне хорошо послужить. |
| 3 |Чтобы процветать, вы должны всегда контролировать ситуацию. |
| 4 |Клиент всегда прав. |
| 5 |Я обходил правила и разрывал сделки, чтобы максимизировать прибыль. Вот почему я потерпел неудачу. |
| 6 |Когда у меня появляется идея, я целенаправленно воплощаю ее в жизнь, даже если это ужасная идея. |
| 7 |Если я cмогу быть другом каждого, у меня всегда будет поддержка. |
| 8 |У меня не лежала душа к торговле, поэтому я потерпел неудачу. Приключения меня тоже не очень-то привлекают, но мне нужны деньги. |
| !к6 |!Идеал |
| 1 |''Выживание. ''Там где есть жизнь, есть надежда. Если я останусь живым и гибким, я смогу добиться успеха. |
| 2 |''Щедрость. ''Люди помогали мне, когда я был на дне. Теперь, когда я снова на ногах, я расплачусь наперёд. |
| 3 |''Азарт.'' Осторожность ни к чему не привела в моем предыдущем деле. Я не позволю ей сдерживать меня сейчас. |
| 4 |''Богатство.'' Достаточное количество монет может купить комфорт, силу, знания и даже вечную жизнь. Ничто не встанет между мной и деньгами.|
| 5 |''Стабильность.'' Торговля была для меня слишком хаотичным делом. Мне нужна хорошая стабильная профессия, например, авантюрист. |
| 6 |''Искупление.'' Слишком многие считают меня неудачником. Поэтому мне нужно доказать, что они неправы. |
| !к6 |!Привязанность |
| 1 |Моя семья значит для меня всё. Я уже подвёл их однажды, и я не должен повторить этого. |
| 2 |Моя церковь обеспечивает связь с моим богом, поэтому я должен обеспечить ее защиту и финансирование. |
| 3 |Мой бывший партнер по бизнесу заболел, а потом наше дело рухнуло. Часть моего нового предприятия заключается в том, чтобы зарабатывать достаточно, чтобы позаботиться о его семье. |
| 4 |Если я забочусь о своем имуществе, оно позаботятся обо мне. Люди приходят и уходят, но на оружие или жезл всегда можно положиться. |
| 5 |Хотя мой бизнес потерпел неудачу, люди моей общины были добры ко мне. Я сделаю все, что в моих силах, чтобы защитить их. |
| 6 |Я должен опасным людям много денег. Пока они довольны, они закрывают глаза на мой долг. |
| !к6 |!Слабость |
| 1 |Зачем тратить серебрянный здесь, если то же самое можно купить за медяк в соседнем городе? |
| 2 |Я должен иметь всё самое лучшее. Прямо сейчас. |
| 3 |Вы не слышали обо мне? Я уверен, что это из-за вашего невежества и низкого происхождения. |
| 4 |Я потерпел неудачу, но я всё равно крут. Поэтому, когда кто-то другой добивается успеха, это должно быть из-за кумовства, жульничества или глупой удачи.|
| 5 |Я считаю, что большинство людей заслуживают доверия. Эй, а где мой кошель? |
| 6 |Ничто не встаyет между мной и опасностью, кроме моих товарищей по приключениям. Так что я обязательно их туда пихну. |
* Перед стартом новой кампании оглашаются Правила Кампании в виде отдельного документа или статьи. Если Правило Кампании противоречит Домашним, то решающим является Правило Кампании (частное превосходит общее).
* Перед подачей заявки на участие в кампании Игрок обязан полностью ознакомиться с этим документом и Правилами Кампании.
* Если Игрок знаком с содержанием модуля, по которому проводится кампания, он обязан сообщить об этом Мастеру.
* Сессии кампании проводятся в голосовом чате [[Discord’а группы DnDno|https://discordapp.com/invite/bFcky8a]].
* Энкаунтеры, требующие виртуальный игровой стол, проводятся в [[FoundryVTT|https://dndno.eu.forge-vtt.com/join]].
* Листы Персонажей заполняются в [[Google Таблицах|https://docs.google.com/spreadsheets/d/17fQfYAswxVkJXvjfogjjWgpr-7Yf-ixyXjHp5vkvDVc/edit?usp=sharing]].
* Расписание и другая важная информация находятся в соответствующих каналах Discord’а.
* Даты и время игровых сессий, как правило, оглашаются задолго до. Если у вас нет возможности присутствовать на следующей сессии, оповестите об этом вашего Мастера.
* Сессия проводится при присутствии как минимум половины активных Игроков. Персонажи отсутствующих Игроков не принимают участия в игровом процессе, но продолжают получать уровни и опыт. Если персонаж отсутствующего Игрока важен для сюжетной линии, он будет отыгрываться Мастером.
* Если вы хотите по какой-либо причине прекратить участвовать в кампании, сообщите об этом Мастеру. Ваше решение никого не оскорбит и не обидит. Будет куда хуже, если вы молча исчезнете, либо прекратите играть по легко исправляемой причине.
* Разговоры в голосовом чате должны быть ограничены актуальным игровым процессом. Для оффтопика или на данный момент не актуальных игровых вопросов используйте текстовый чат.
* Используйте Discord для отправки Мастеру личных сообщений. У меня отключены все прочие уведомления, поэтому не обижайтесь, что я не прочел что-то важное в Steam’е, ВК или ICQ.
* Перерывы и окончание сессии объявляются Мастером. Мастер может принять решение, основываясь на просьбе Игроков. Игроки могут самостоятельно прерываться и покидать сессию раньше времени, обозначив это в текстовом чате.
* Регулярные пропуски сессий, отлучения во время сессии, присутствие “вполуха” могут поставить под сомнение ваше участие в кампании. Если у вас нет свободного вечера раз в неделю, в которые вы можете уделить 4-6 часов этому занятию, то оно не для вас.
Проверка характеристики испытывает врождённые таланты и обучение персонажа или чудовища, пытающегося преодолеть какое-то препятствие. Мастер призывает совершить проверку характеристики, когда персонаж или чудовище пытается совершить действие (но не атаку), которое может не получиться. Если исход действия неясен, его помогает определить бросок кости.
Вначале Мастер определяет, какая из шести характеристик связана с выполняемой задачей, и определяет трудность этой задачи, отражаемую Сложностью (Сл). Чем труднее задача, тем выше Сл. Приведённая таблица показывает примерную Сл задач.
|!Трудность задачи| !Сл |
|Очень лёгкая| 5 |
|Лёгкая| 10 |
|Средняя| 15 |
|Сложная| 20 |
|Очень сложная| 25 |
|Практически невозможная| 30 |
Для совершения проверки характеристики бросьте к20 и добавьте модификатор соответствующей характеристики. Как и при других бросках к20 добавьте бонусы и штрафы, и сравните сумму со Сл. Если сумма равна Сл или превышает её, проверка успешна — существо выполняет поставленную задачу. В случае провала персонаж или чудовище не достигает успеха и сталкивается с последствиями, определяемыми Мастером.
---
!!!Состязание
Иногда усилия одного персонажа или чудовища противостоят усилиям другого. Это может произойти если они пытаются сделать одно и то же, и преуспеть может только один, например, они пытаются схватить магическое кольцо, упавшее на пол. Такая же ситуация возникает, когда один пытается предотвратить действия другого — например, если чудовище пытается открыть дверь, которую удерживает персонаж. В таких ситуациях исход определяется особой проверкой характеристики, называемой состязанием.
Оба участника состязания совершают проверки характеристик, связанные с их попытками. Они применяют все уместные бонусы и штрафы, но суммы сравнивают не со Сл, а с результатами друг друга. Участник с наибольшим результатом выигрывает состязание. Этот персонаж или чудовище либо добивается успеха, либо не даёт пре- успеть другому.
Если состязание оканчивается ничьёй, ситуация остаётся такой же, как до состязания. Таким образом, один из участников может оказаться в более выгодном положении. Если двое пытались схватить кольцо, никто его не получает. Если чудовище пыталось распахнуть дверь, а искатель приключений пытался запереть дверь на засов, ничья означает, что дверь остаётся прикрытой.
---
!!!Навыки
Характеристики покрывают широкий диапазон возможностей, включая навыки, которыми персонаж или чудовище может владеть. Навык отражает некий аспект характеристики, а владение навыком демонстрирует сосредоточенность на этом аспекте (владения навыками персонажа определяются при его создании, а владения навыками чудовища написаны в блоке его статистики).
Например, Ловкость может отражать попытку персонажа выполнить акробатический трюк, стащить предмет, или остаться скрытым. У этих аспектов Ловкости есть три конкретных навыка: Акробатика, Ловкость рук и Скрытность, соответственно. Таким образом, персонаж, владеющий навыком Скрытность, особенно хорошо совершает проверки Ловкости, связанные с попытками вести себя тихо и оставаться незамеченным. Навыки, связанные с характеристиками, показаны в приведённой таблице.
|!Характеристики |!Навыки |
|Сила |Атлетика |
|Ловкость |Акробатика, Ловкость рук, Скрытность |
|Телосложение |Выносливость |
|Интеллект |Анализ, История, Магия, Природа, Религия |
|Мудрость |Внимательность, Выживание, Медицина, Проницательность, Уход за животными |
|Харизма |Выступление, Запугивание, Обман, Убеждение |
Владение навыком означает, что существо может добавлять бонус мастерства к проверкам характеристик, касающихся этого навыка. Без владения навыком существо совершает обычные проверки характеристики.
Например, если персонаж пытается забраться на крутой утёс, Мастер может попросить совершить проверку Силы (Атлетика). Если персонаж владеет Атлетикой, его бонус мастерства добавляется к проверке Силы. Если персонаж не владеет этим навыком, он совершает обычную проверку Силы.
В некоторых ситуациях ваше владение может применяться к другой проверке. Мастер может попросить совершить проверку, используя необычную комбинацию характеристики и навыка, или же вы можете попросить у Мастера разрешение применить бонус мастерства к другой проверке. Например, если варвар демонстрирует грубую силу, чтобы запугать врага, Мастер может попросить совершить проверку Силы (Запугивание), несмотря на то, что Запугивание связано с Харизмой.
---
!!!Пассивные проверки
Пассивная проверка — это особая проверка характеристики, в которой кости не кидаются. Такая проверка может отражать средний результат для задачи, выполняющейся с регулярной периодичностью, например, поиски потайных дверей. Мастер может использовать её для тайного определения без бросков костей того, преуспеют ли персонажи в чём-либо, например, заметят ли персонажи скрывшееся чудовище.
Результат пассивной проверки персонажа определяется так: 10 + все модификаторы, обычно применимые к проверке
Если персонаж совершает проверку с преимуществом, добавьте 5. В случае помехи вычтите 5.
---
!!!Совместные попытки
Вы не можете совершать несколько проверок на одно и то же действие. Но вы можете работать вместе со своими союзниками, чтобы увеличить шансы этой единственной попытки.
Персонаж может пытаться помочь, если он сам в одиночку мог бы попробовать выполнить эту задачу (в бою для этого требуется совершить действие Помощь). Например, вскрытие замка требует владения воровскими инструментами, поэтому персонаж, не владеющий ими, не может помогать выполнять эту задачу. Более того, персонаж может помогать только если усилия другого персонажа действительно могут помочь. Некоторые задачи, такие как вдевание нитки в иголку, от чужой помощи легче не станут.
Первый помощник дает вам преимущество на бросок (как при действии Помощь), а каждый следующий - бонус +1. В случае неудачи все участвующие несут ответственность за последствия.
---
!!!Групповые проверки
Если несколько существ пытаются выполнить что-то как единая группа, Мастер может попросить совершить групповую проверку характеристики. В такой ситуации умелые персонажи смогут прикрыть слабые стороны неумелых.
Для совершения групповой проверки характеристики все в группе совершают проверку характеристики. Если как минимум половина группы достигла успеха, преуспевает вся группа. В противном случае вся группа проваливает проверку.
Групповые проверки совершаются не очень часто, и они совершаются тогда, когда преуспеть нужно сразу всем персонажам. Например, если искатели приключений идут по болоту, Мастер может призвать совершить групповую проверку Мудрости (Выживание), чтобы увидеть, смогут ли персонажи обойти топи, трясины и прочие естественные опасности. Если преуспеет как минимум половина группы, успешные персонажи помогают тем, кто не обошёл опасные места. В противном случае вся группа попадает в одну из опасностей.
Проводник следит за тем, чтобы группа следовала в правильном направлении. Если проводник провалится, вы заплутаете и путешествие займет больше времени.
Если вы взяли на себя роль проводника, совершите проверку Интеллекта (Сл броска установлена в приведенной таблице) в конце дня, чтобы проверить, не сбились ли вы с маршрута. Инструменты картографа, наличие достоверной карты местности или владение навыком Выживание позволят вам добавить бонус мастерства к броску.
''Успех''. Группа следует установленному маршруту. Вычтите сегодняшний прогресс из оставшейся продолжительности путешествия.
''Провал''. Вы отклонились от курса и заблудились. Добавьте полдня к оставшейся продолжительности путешествия.
| !Сл |!Местность |
| 2 |Обширная равнина; отчётливые ориентиры; прямая дорога |
| 5 |Высокие ориентиры; небольшие холмы |
| 10 |Лёгкий дождь или дымка; леса и холмы |
| 15 |Лунная ночь; сильный дождь или густая дымка; лес без отчётливых троп или обозначений |
| 20 |Туман; густой и тёмный лес; горы |
| 25 |Облачная ночь; непроглядный туман; лабиринт; магически опасная местность |
Вы можете использовать особую атаку, чтобы спровоцировать или заставить существо сосредоточиться на вас
Выберите существо в пределах 6 м от вас, которой может слышать или видеть вас. Вы совершаете проверку Харизмы (Запугивание), противопоставленную проверке Харизмы (Запугивание) или Мудрости (Проницательность) цели (цель сама выбирает, какую характеристику использовать). Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше. Если вы преуспеете, цель совершает броски атаки по вам с преимуществом, но получает помеху на любой бросок атаки, целью которой не являетесь вы, до начала вашего следующего хода или пока вы не закончите свой ход на расстоянии более 6 м от цели.
Вы можете совершить провоцированную атаку, если враждебное существо, которое вы видите, покидает вашу досягаемость. Для этого вы реакцией совершаете одну рукопашную атаку по спровоцировавшему существу. Эта атака прерывает перемещение спровоцировавшего существа, происходя как раз перед тем, как оно покинет пределы вашей досягаемости.
Вы можете избежать провоцированной атаки, совершив действие Отход. Вы также не провоцируете атаки, если телепортируетесь, или кто-то (что-то) перемещает вас, не тратя ваше перемещение, действие и реакцию. Например, вы не провоцируете атаку, если взрыв выбросил вас из пределов досягаемости врага или сила тяжести заставила упасть мимо врага, стоящего на возвышении.
Продажа магического предмета – непростая задача. Искусные мошенники и воры всегда ищут лёгкий заработок, и нет никакой гарантии, что добросовестный покупатель, если он будет найден, сможет хорошо заплатить персонажу.
//''Ресурсы''//. Персонаж может найти покупателя на один магический предмет за одну неделю, потратив 25 см на распространение информации о продаже. Персонаж за раз может продать только один предмет.
//''Определение результата''//. Персонаж, который хочет продать предмет, должен совершить проверку Харизмы (Убеждение), чтобы определить, сколько ему готовы заплатить. Персонаж может отказаться от продажи и потратить ещё одну неделю, чтобы повторить попытку.
Базовая цена предемтов определяется согласно документу [[Sane Magical Prices|https://drive.google.com/file/d/1HfQXzt7rorLpuNIWbEuTV0TEs_P5KQhD/view?usp=sharing]].
| !Результат |!Предложение|
| 1-10 |50% базовой цены|
| 11-20 |100% базовой цены|
| 21+ |150% базовой цены|
//''Осложнения''//. Основной риск при продаже магического предмета заключается в привлечении внимания воров и иных желающих получить предмет, но не желающих за него платить. Некоторые могут попытаться сорвать сделку, чтобы укрепить свой соб- ственный бизнес, или попытаться дискредитировать персонажа как добросовестного продавца.
Каждую неделю, которую персонаж пытается продать магический предмет, существует 10% шанс возникновения осложнений, примеры которых приведены в таблице ниже.
| !к6 |!Осложнение |
| 1 |Ваш противник тайно организует покупку предмета, чтобы использовать его против вас.|
| 2 |Воровская гильдия, предупреждённая о сделке, пытается украсть ваш предмет.|
| 3 |Недоброжелатель распускает слухи о том, что предмет – подделка.|
| 4 |Чародей заявляет, что предмет принадлежит ему по праву рождения, и требует его отдать. |
| 5 |Предыдущий владелец предмета или его выжившие союзники клянутся вернуть предмет силой. |
| 6 |Перед сделкой покупатель был убит.|
При сотворении заклинания с длительностью 1 минута или более вы можете потратить 1 очко чародейства, чтобы удвоить его длительность, вплоть до максимального в 10 дней.
Продолжительный отдых - это период простоя, длящийся не менее 1 недели, который ваш персонаж проводит в безопасном месте, например, в деревне или в городе. Это периоды вашей жизни между приключениями - возможность сбавить темп, изучить окружение и пообщаться с неигровыми персонажами в относительной безопасности.
Выполните эти 6 действий за каждую неделю отдыха:
# ''Продайте добычу''. Торгуйте любыми скопившимися у вас сокровищами - самоцветами, картинами, изысканными кубками - раздобытыми во время ваших приключений.
# ''Выберите образ жизни''. Определитесь с качеством своего образа жизни на неделю - никудышный, нищенский, бедный, скромный, комфортный, богатый или аристократический. Заплатите за него вперед.
# ''Выберите основную деятельность''. Выберите вашу основную деятельность простоя и оплатите соответствующие расходы.
# ''Соберите слухи''. Пока вы отдыхаете, ваша группа узнает о трех слухах. Некоторые из них могут быть ложными, или только частично правдивыми - вам придется провести дополнительное расследование, чтобы проверить услышанное.
# ''Выберите второстепенную деятельность''. Вы можете выполнить два других небольших второстепенных вида деятельности - встретиться с кем-нибудь, пройтись по лавкам и т.д.
# ''Подведите итоги''. В конце недели получите результаты вашей основной деятельности, проверьте исцелились ли ваши раны и какие расовые и классовые особенности восстановились. Если у вас есть какие-либо непогашенные долги - рассчитайтесь.
---
<<tabs "[tag[Шаги продолжительного отдыха]]" "" "$:/state/tab1">>
Проецирование - это способность с помощью псионической силы выводить то, что находится в вашем разуме, во внешний мир.
---
!!!Проекция предмета
Действием вы можете использовать свои силы, чтобы спроецировать в свои руки представляемый вами неодушевленный предмет. Он не может быть длиннее 1 м с любой стороны или весить более 5 кг, и имеет явно бесплотную природу. Предмет ведет себя как твердый объект. Оружие, созданное с помощью этого умения, наносит урон силовым полем.
Проецируемые предметы исчезают через 1 минуту, и у вас может быть не более 3 проецируемых предметов одновременно.
---
!!!Астральный конструкт
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 12 м
''Компоненты:'' С
''Длительность:'' Концентрация, вплоть до 1 минуты
Вы проецируете бесплотное творение из своего разума в видимое вам пространство в пределах досягаемости, принимающее форму Среднего или меньшего существа, оружия или другого объекта. Это творение явно бесплотно по своей природе. Когда вы его создаете, и в последующие ходы, используя свое действие для мысленного управления им, вы можете перемещать его на расстояние до 6 м в любом направлении и атаковать, если оно не выходит за пределы дистанции действия способности. Чтобы атаковать с его помощью, совершите рукопашную атаку заклинанием. При попадании цель получает 1к8 урона силовым полем. Если Астральный конструкт выходит из зоны действия заклинания, он исчезает, прекращая действие способности.
Пока Астральный конструкт активен, вы можете в свой ход тратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы отдавать команды, которые влияют на ваш конструкт и расширяют его возможности. Команды не требуют никаких действий, но каждая команда может быть отдана только один раз в ход.
* ''Затвердевание (1 пси-очко):'' Ваш конструкт становится твердым, блокируя свое пространство до начала вашего следующего хода. Вы можете использовать эту команду, только если он находится в незанятом пространстве. Его Класс Доспеха равен 16, а хиты равны вашему мод. Интеллекта + ваш уровень псиона. Конструкт снова становится бесплотным, если его хиты падают до нуля.
* ''Перенос (1 пси-очко):'' Конструкт исчезает и появляется в любом месте в пределах 12 м от вас.
* ''Поддержка (1+ пси-очко):'' В начале своего хода вы можете сохранить эффект команды Затвердевание , Рост или Репликация на дополнительный раунд. Эффект, который был реплицирован, может быть поддержан во всех репликах конструкта за одно использование, но каждый эффект может быть поддержан только один раз за ход (например, вы никогда не сможете поддержать более одной реплики конструкта). За каждый поддерживаемый эффект тратится 1 пси-очко. Поддержание эффекта Затвердевание восстанавливает хиты конструкта до максимального значения.
* ''Репликация (3 пси-очка):'' Вы используете Перенос, но оригинал не исчезает. До конца вашего хода у вас есть еще один конструкт, и вы можете управлять обоими с помощью одного действия (команды действуют только на одного по вашему выбору). В начале вашего следующего хода выберите конструкт, который исчезнет, или используйте Поддержку.
* ''Рост (1 пси-очко):'' Размер вашего конструкта увеличивается на одну категорию, а количество его костей урона увеличивается на одну кость. Он возвращается к своему нормальному размеру в начале вашего следующего хода. Он может получить только одну дополнительную кость (например, до 2к8).
* ''Удар (2 пси-очка):'' Конструкт совершает атаку (даже если он уже атаковал).
* ''Хватание (1 пси-очко):'' Можно использовать, только когда ваш конструкт Затвердевший. Выбранное вами существо в пределах 1 м от вашего конструкта, размер которого не превышает размер конструкта больше чем на одну категорию, должно преуспеть в спасброске Силы, иначе будет [[опутано|Опутанный]] конструктом. В конце каждого своего хода опутанное существо может повторить спасбросок, высвобождаясь при успехе. Состояние оканчивается, если конструкт снова становится бесплотным или становится меньше цели более чем на одну категорию.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Проецирования, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//невидимый слуга//, //Тензеров парящий диск// |
| !2 |//отражения// |
| !3 |//призрачный скакун// |
| !4 |//магический глаз// |
| !5 |//сотворение// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
Происхождения - это расы, которые персонажи могут получить в результате значительных событий. Они затмевают их первоначальную расу, если таковая имеется, становясь их новой расой. Персонаж может выбрать расу во время создания персонажа, и его трансформация произойдет до начала игры. Или же во время приключений могут произойти события, которые приведут персонажа к замене его расы на новую расу. Обсудите с вашим ДМом, приемлемо ли для вас такое развитие событий и как будут развиваться такие истории.
---
!!!Что случилось со мной?
Происхождения, представленные в этом разделе, представляют собой физическую и магическую трансформацию, которая изменяет вас фундаментальным образом. Вы все еще можете выглядеть так же, как и раньше, но вы изменились существенным образом, что может перечеркнуть ваши прежние физические или магические способности. Например, [[драконорождённый|Драконорождённый]], ставший [[дампиром|Дампир]], теряет связь со своим драконьим происхождением, так как в него проникает бессмертная сила вампиризма. Если раньше [[драконорожденный |Драконорождённый]]мог выдыхать разрушительную энергию, то теперь он чувствует внутри себя сильный голод, а его укус способен высасывать жизнь. Некоторые расовые особенности могут сохраниться после получения происхождения, что отражено в особенности "Наследие рода". Имейте это в виду при создании персонажа, когда будете изучать детали того, как вы изменитесь после получения происхождения.
---
!!!Создание персонажа
На 1 уровне вы выбираете, является ли ваш персонаж представителем человеческой расы или одной из фантастических рас игры. Также вы можете выбрать одно из следующих происхождений. Если вы выбрали происхождение, возможно, когда-то вы были представителем другой расы, но теперь это не так. Теперь вы обладаете только расовыми особенностями своего происхождения.
Когда вы создаете персонажа, используя приведенный здесь вариант происхождения, следуйте этим дополнительным правилам при создании персонажа.
''Увеличение характеристик''
При [[определении ваших значений характеристик|Шаг 5. Определите значения характеристик]], значение одной из этих характеристик на ваш выбор увеличивается на 2, а значение одной другой характеристики на ваш выбор увеличиваются на 1. Либо значение трёх разных характеристик на ваш выбор увеличивается на 1. Вы следуете этому правилу независимо от способа, который вы используете для определения значений.
Какие бы вы значения ни решили увеличить, ни одно из них не может быть поднято выше 20.
Если вы заменяете свою расу происхождением, замените старую особенность "Увеличение характеристик" на эту.
''Языки''
Вы можете говорить, читать и писать на Общем и ещё на одном языке, который вы и ваш Мастер сочтёте подходящим для персонажа.
Если вы заменяете свою расу происхождением, вы сохраняете свои владения языками и не получаете новых.
''Вид существа''
Каждое существо в D&D, включая персонажа игрока, обладает специальным тегом в правилах, который определяет вид существа, к которому оно относится. Большинство персонажей игроков относятся к виду "Гуманоид". Представленная здесь особенность расы подскажет вам, к какому виду существ относится ваш персонаж.
У этих видов нет собственных правил, но некоторые правила в игре по-разному влияют на существ определенных видов. Например, в тексте заклинания //лечение ран// указано, что заклинание не действует на существ вида "Конструкт".
---
!!!Перечень происхождений
<div class="tc-table-of-contents">
<<toc-selective-expandable "Происхождения">>
</div>
Бонусным действием вы можете вызвать болезненное вздутие у видимого вами существа в пределах 6 м от вас до конца вашего следующего хода. На время действия этого проклятия существо совершает проверки Силы и Ловкости с помехой, а также, если в свой ход оно совершает более одной рукопашной или дальнобойной атаки, получает 1к8 урона некротической энергией.
//''Усиление.''// Это проклятие длится 1 минуту. Проклятое существо может совершать спасбросок Телосложения в конце каждого своего хода, оканчивая проклятие на себе при успехе.
Бонусным действием вы можете посягнуть на тело или разум видимого вами существа в пределах 6 м от вас, делая его восприимчивым к волевому давлению. Проверки Харизмы (Запугивание) против проклятого существа совершаются с преимуществом до конца вашего следующего хода.
//''Усиление.''// Следующий спасбросок Мудрости, совершаемый проклятым существом до окончания этого проклятья, совершается с помехой.
//Требование: 18 уровень, Орден Оборотней//
Действием вы издаете леденящий кровь вой. Выбранные вами существа в пределах 6 м от вас, способные слышать вас, должны совершить спасбросок Мудрости. При провале существо становится [[испуганным|Испуганный]] вами до конца вашего следующего хода. Если существо проваливает спасбросок на 5 и более, оно становится [[ошеломлённым|Ошеломлённый]] пока [[испугано|Испуганный]] этим проклятием. При упехе существо невосприимчиво к этому проклятию крови в течение следующих 24 часов.
//''Усиление.''// Дальность проклятия увеличивается до 12 м.
//Требование: 18 уровень, Орден Нечестивых душ//
Когда хиты видимого вами существа, не являющегося нежитью или конструктом, в пределах 6 м от вас опускаются до 0, вы можете реакцией предложить его жизненную энергию своему покровителю в обмен на силу. Вы совершаете атаки оружием с преимуществом и получаете сопротивление ко всем видам урона до конца вашего следующего хода.
//''Усиление.''// Кроме того, вы восстанавливаете одну потраченную ячейку заклинаний колдуна. Усилив это проклятие, вы не можете сделать этого снова, пока не завершите продолжительный отдых.
Когда хиты видимого вами существа в пределах 6 м от вас опускаются до 0, вы можете реакцией немедленно заставить это существо совершить одну атаку оружием по выбранной вами цели в пределах его досягаемости.
//''Усиление.''// Перед этой атакой вы можете заставить проклятое существо переместиться на половину его скорости и предоставить ему бонус к броску атаки, равный вашему модификатору Интеллекта (минимум +1).
Когда видимое вами существо в пределах 6 м от вас получает урон от атаки или заклинания, вы можете реакцией временно ослабить его устойчивость к этому урону. Цель теряет сопротивление ко всем видам урона, вызвавшей реакцию атаки или заклинания, до конца своего следующего хода (включая урон, вызвавший реакцию).
//''Усиление.''// Вместо этого цель теряет иммунитет ко всем видам урона, вызвавшей реакцию атаки или заклинания, но получает сопротивление к ним до конца своего следующего хода.
Бонусным действием вы можете вызвать помутнение рассудка у видимого вами существа в пределах 6 м от вас, концентрирующегося на заклинании, либо испольщующего особенность, трубующую концентрацию. Цель совершает следующий спасбросок Телосложения с целью поддержания концентрации с помехой до конца вашего следующего хода.
//''Усиление.''// Проклятое существо совершает все спасброски Телосложения до конца вашего следующего хода с целью поддержания концентрации с помехой
Бонусным действием вы можете пометить видимое вами существо в пределах 6 м от вас. До конца вашего хода, когда вы попадает по проклятому существу атакой оружием, на котором активирован Алый обряд, вы добавляете дополнительную Кость Гемократии к урону этого обряда.
//''Усиление.''// Вы совершаете следующий бросок атаки по этой цели с преимуществом до конца вашего хода.
//Требование: 15 уровень, Орден Мутантов//
Бонусным действием вы можете заставить видимое вами существо в пределах 6 м от вас совершить спасбросок Телосложения. При провале цель [[отравлена|Отравленный]]. Проклятое существо может повторять спасбросок в конце каждого своего хода, оканчивая проклятие на себе при успехе.
//''Усиление.''// Проклятое существо получает 4к6 урона некротической энергией при наложении этого проклятия и получает этот урон снова после каждого проваленного спасброска Телосложения, совершаемого для окончания этого проклятья.
Бонусным действием вы можете попытаться связать видимое вами существо Большого или меньшего размера в пределах 6 м от вас. Цель должна преуспеть в спасброске Силы, иначе её скорость уменьшится до 0, и она не может совершать реакции до конца вашего следующего хода.
//''Усиление.''// Это проклятие длится 1 минуту и может повлиять на существ любого размера. Проклятое существо может повторять спасбросок в конце каждого своего хода, оканчивая проклятие на себе при успехе.
Когда видимое вами существо в пределах 6 м от вас совершает атаку, вы можете реакцией совершить бросок кости гемомантии и вычесть результат броска из броска атаки существа. Вы можете принять решение об использовании этой способности после объявления результата броска существа, но до вступления его эффекта в силу. Существо невосприимчиво к этому проклятью, если оно обладает иммунитетом к [[ослеплению|Ослеплённый]].
//''Усиление.''// Эффект проклятия применяется к каждому броску атаки существа до конца его следующего хода. Вы совершаете новый бросок кости гемомантии для каждой атаки.
//Требование: 15 уровень, Орден Истребителей призраков//
Бонусным действием вы можете завершить действующие на видимое вами существа в пределах 6 м от вас состояния [[испуга|Испуганный]], [[очарования|Очарованный]] или одержимости.
//''Усиление.''// Существо, которое вызвало состояние [[испуга|Испуганный]], [[очарования|Очарованный]] или одержимости на цели проклятия, получает 3к6 урона психической энергией и должно преуспеть в спасбросоке Мудрости, иначе станет [[ошеломлённым|Ошеломлённый]] до конца вашего следующего хода.
<<<
Вы используете магию преобразования, чтобы придать стреле свойство бесплотности.
<<<
Когда вы применяете этот вариант, вы не совершаете бросок атаки. Вместо этого выстрел летит по 6-метровой линии шириной в 30 см, прежде чем исчезнуть. Выстрел безвредно проходит сквозь объекты, игнорируя укрытия. Все существа в области действия выстрела должны совершить спасбросок Ловкости. При провале существо получает обычный урон выстрела и дополнительно 1к6 колющего урона. При успехе существо получает половину этого урона.
После достижения вами 18 уровня в этом классе, дополнительный урон этого выстрела увеличивается до 2к6.
!!!Лёгкое простое оружие
|!Дробящее |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Боевое кропило |9 см |1к6 Д | - | - | 1 кг|Грубое, особое |
|Лёгкая булава |5 см |1к6 Д | - | - | 1 кг|Грубое |
|Походный чайник |5 см |1к6 Д | - | - | 1 кг|Грубое, особое |
|!Клинковое|!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Выкидной нож |32 см |1к4 К/Р | - | 4 м | 0.5 кг| |
|Кинжал |2 см |1к4 К/Р | 19-20 | 4 м | 0.5 кг| |
|Клинковая бритва |9 см |1к4 Р | - | - | 0.5 кг| |
|Нож |2 см |1к4 К/Р | - | 4 м | 0.5 кг| |
|Серп |5 см |1к4 К/Р | - | - | 1 кг| |
|Складной нож |9 см |1к4 К/Р | - | 4 м | 0.5 кг| |
|Тычковый нож |2 см |1к4 К | - | - | 0.5 кг| |
|!Контактное|!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Кастет |1 см |1к4 Д | - | - | 0.2 кг|Грубое |
|Цестус |5 см |1к4 Д+К | - | - | 0.2 кг|Грубое |
|!Метательное|!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Дротик |1 см |1к6 К | - | 15 м | 1 кг| |
|Метательная дубинка |1 см |1к4 Д | - | 4 м | 0.5 кг|Грубое |
|!Стрелковое|!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Праща | |1к4 Д | - | - | | |
|Ручной арбалет | |1к8 К | - | - | |Летальное |
|!Топоры |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Ремённый топор | |1к6 Р | - | - | |Летальное |
!!!Одноручное простое оружие
|!Древковое |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Короткое копье | |1к6 (1к8) К | - | - | | |
|!Дробящее |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Дубинка | |1к6 (1к8) Д | - | - | |Грубое |
|Моргенштерн | |1к8 (1к10) Д+К | - | - | |Грубое |
|Тяжёлая булава |8 см |1к8(1к10) Д | - | - | 2.5 кг|Грубое |
|!Клинковое |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Макуавитль | |1к8 (1к10) Д/Р | - | - | | |
|!Стрелковое|!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Лёгкий арбалет | |2к6 К | - | - | | |
|Пусковой арбалет | |1к4 Д | - | - | | |
|Пулевой арбалет | |1к10 Д | - | - | | |
|Духовая трубка | |1 К | - | - | | |
|!Топоры |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Топор дровосека | |1к6 (1к8) Р | - | - | | |
!!!Двуручное простое оружие
|!Древковое |!Цена |!Урон | !Крит. | !Дальн. | !Вес|!Свойства |
|Боевой посох | |1к8 Д | - | - | | |
|Годендаг | |1к8 Д/К | - | - | | |
|Длинное копье | |1к8 К | - | - | |Длинное |
|Коса | |1к6 К/Р | - | - | |Длинное, летальное, подсекающее |
|Пастуший посох | |1к6 Д | - | - | |Длинное, подсекающее |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
| | | | - | - | | |
//Стоимость перемещения:// +1 м за 1 м.
Существо может протиснуться в пространство, достаточное для существа на одну размерную категорию меньше него. Таким образом, Большое существо может протиснуться в проход шириной 1 м. Протискиваясь, существо совершает с помехой броски атаки и спасброски Ловкости. Броски атаки по существам, находящимся в тесном пространстве, совершаются с преимуществом.
У всех предметов есть время изготовления, измеряемое в часах. Изготовление предметов происходит отрезками по 8 часов (1 день). В конце каждого отрезка совершается проверка ремесла.
При успехе вы отмечаете 8 часов (1 день) прогресса в изготовлении. При провале прогресс не достигается, и время, потраченное на последний отрезок изготовления теряется.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
Персонаж не может тратить больше 8 часов в день на ремесло.
---
!!!Требования для ремесла
Для каждого ремесла указан соответствующий инструмент и характеристика, используемые для расчета модификатора проверки ремесла. В большинстве случаев попытка изготовления предмета без соответствующего инструмента невозможна. Ваш Мастер может разрешить использовать подручные средства, но в этом случае проверка совершается с помехой.
Ниже приведен список некоторых дополнительных требований по ремеслам:
* Кузнечное дело допускает выполнение мелкой работы с помощью простого источника тепла, но для изготовления новых предметов требуется горн и наковальня.
* Алхимия и кулинария почти всегда требуют источника тепла.
* Ремонтное дело, ювелирное дело и ядоварение иногда требуют источника тепла.
* Зачаровывание, начертание свитков, резьба по дереву, вырезание палочек, кожевенное дело, инженерное дело и рунное дело редко требуют чего-либо, кроме соответствующих инструментов.
---
!!!Компетентность
Особенности и умения, предоставляющие компетентность в инструменте (возможность добавлять удвоенный бонус мастерства к проверкам, совершённым с помощью инструмента), учитываются в ваших проверках ремесла, но не увеличивают расчётную Сл эффектов изготавливаемого предмета.
---
!!!Бонусы
Проверка ремесла - это особый вид проверки характеристик, и вы не можете добавлять к нему временные бонусы (такие как вдохновение барда или заклинание //указание//), поскольку проверка ремесла отражает всё время, потраченное на отрезок работы над предметом.
Как правило, предполагается, что никакие сторонние бонусы не применяются, если только в них не указано обратное. Это относится к чертам (например, тем, которые позволяют вам перебрасывать определенные броски), умениям класса (например, тем, которые позволяют вам добавлять кости к определенным броскам) и т. д.
Вы можете получить преимущество на проверку ремесла, если другой персонаж, владеющий соответствующим инструментом, помогает вам в течение всего отрезка изготовления.
---
!!!Взятие 10
Когда вы изготавливаете что-то, вы можете удовить время изготовления (с 8 часов (1 день) до 16 часов (2 дня) на проверку), чтобы "взять 10" на проверку ремесла. Это означает, что вы не совершаете бросок к20, а результат проверки становится равен:
10 + бонус мастерства соответствующего инструмента + модификатор соответствующей характеристики
Это обеспечивает минимальный уровень, на котором вы всегда сможете добиться успеха, если решите не торопиться.
Если вы "берёте 10" и другой персонаж, владеющий соответствующим инструментом, помогает вам в течение всего отрезка изготовления, проверка ремесла не получает бонуса от помощи, но и время изготовления не удваивается.
<<<
//''Ремесло НИП''//
//Предполагается, что когда НИП занимаются ремеслом, они используют эту опцию, и, следовательно, делают это медленнее, но надежнее. Скоростное ремесло - это в основном удел Игроков, хотя, по усмотрению Мастера, Игроки могут убедить НИП работать быстрее, принимая на себя риск провала.//
<<<
//Требование: 17 уровень//
Вы можете потратить 5 очков ци, чтобы сотворить на себя заклинание //каменная кожа//.
//Стоимость перемещения:// 1 м за 1 м.
Если вы совершаете прыжок в высоту, вы поднимаетесь в воздух на количество метров, равное 1 + модификатор Атлетики/4, если непосредственно перед прыжком переместились минимум на 2 м.
Если вы совершаете прыжок в высоту без разбега, прыгнуть можно только на половину этой дистанции.
Руки можно вытянуть вверх на половину своего роста. Таким образом, вы дотягиваетесь до расстояния, равного высоте прыжка плюс полтора ваших роста.
В некоторых случаях Мастер может позволить совершить проверку Силы (Атлетика), чтобы прыгнуть выше, чем обычно.
//Стоимость перемещения:// 1 м за 1 м.
Если вы совершаете прыжок в длину, вы покрываете количество метров, равное (10 + модификатор Атлетики)/4, если непосредственно перед прыжком переместились минимум на 2 м.
Если вы совершаете прыжок в длину без разбега, прыгнуть можно только на половину этой дистанции.
Это правило предполагает, что высота прыжка не имеет значения, как в случае перепрыгивания ручья или пропасти.
Если Мастер решит, вы должны преуспеть в проверке Силы (Атлетика) со Сл 10, чтобы перепрыгнуть через препятствие (не выше четверти расстояния прыжка), такое как изгородь или невысокая стена. В противном случае вы ударяетесь об него.
Если вы приземляетесь в труднопроходимую местность, вы должны преуспеть в спасброске Ловкости (Акробатика) со Сл 10, чтобы приземлиться на ноги. В противном случае вы падаете ничком.
Пробудивший в себе псионическую силу, Пси-боец - это воин, который дополняет свою физическую мощь пропитанными пси-энергией ударами, телекинетическими выпадами и барьерами ментальной силы. Многие гитьянки тренируются, чтобы стать такими воинами, как и некоторые из самых дисциплинированных высших эльфов. В мире Эберрона немало молодых калаштаров мечтают стать пси-бойцами.
Пси-боец, возможно, оттачивал свои псионические способности самостоятельно, раскрывал их под руководством мастера или совершенствовал в академии, посвященной использованию силы разума в качестве оружия и щита.
---
!!! [img[3.png]] Псионическая сила
Вы таите в себе источник псионической энергии. Эта энергия представлена в Костях Псионической энергии - к6. Количество этих костей равно вашему удвоенному бонусу мастерства, и они подпитывают ваши различные псионические способности, которые подробно описаны ниже.
Некоторые из ваших способностей расходуют Кость Псионической энергии при использовании, как указано в описании способности, и вы не можете применять способность, расходующую кость, если все ваши кости уже израсходованы. Вы восстанавливаете все израсходованные Кости Псионической энергии после завершения продолжительного отдыха.
Кроме того, бонусным действием вы можете восстановить одну израсходованную Кость Псионической энергии, но не можете сделать это повторно, пока не завершите короткий или продолжительный отдых.
Ваша Кость Псионической энергии изменяется с ростом вашего уровня в этом классе. Она становится к8 на 5 уровне, к10 на 11 уровне и к12 на 17 уровне.
Приведенные ниже способности используют ваши Кости Псионической энергии.
<<tabs "[tag[Псионическая сила]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[7.png]] Адепт телекинетики
<<<
Вы освоили новые способы использования своих телекинетических способностей, подробно описанных ниже.
<<<
<<tabs "[tag[Адепт телекинетики]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[10.png]] Защищённый разум
<<<
Псионическая энергия, текущая через вас, укрепила ваш разум.
<<<
У вас есть сопротивление к урону психической энергией. Кроме того, если вы начинаете свой ход [[очарованным|Очарованный]] или [[испуганным|Испуганный]], вы можете потратить Кость Псионической энергии и окончить на себе действие любого эффекта, накладывающего на вас эти состояния.
---
!!! [img[15.png]] Оплоты силы
<<<
Вы можете оградить себя и других с помощью телекинетической силы.
<<<
Бонусным действием вы можете выбрать видимых вами существ (включая себя) в пределах 6 м от вас в количестве, не превышающем ваш модификатор Интеллекта (минимум 1). Выбранные существа получают [[укрытие на половину|Укрытие]] на 1 минуту, или пока вы не станете [[недееспособны|Недееспособный]].
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых, либо не потратите Кость Псионической энергии, чтобы использовать его снова.
---
!!! [img[18.png]] Мастер телекинетики
<<<
Ваша способность перемещать существ и предметы силой мысли уступает лишь немногим.
<<<
Вы можете сотворить заклинание //телекинез// без необходимости в компонентах. Базовой характеристикой для использования этого заклинания является Интеллект. В каждый свой ход, пока вы концентрируетесь на этом заклинании, включая ход, когда вы его сотворяете, вы можете бонусным действием совершить одну атаку оружием.
Вы не можете сотворить заклинание этим умением повторно, пока не завершите продолжительный отдых, либо не потратите кость Псионической энергии, чтобы использовать его снова.
Бонусным действием вы можете привести свое тело в движение силой мысли. Вы получаете скорость полёта, равную удвоенной скорости ходьбы, до конца текущего хода. Вы не можете совершить это действие повторно, пока не завершите короткий или продолжительный отдых, либо не потратите Кость Псионической энергии, чтобы совершить его снова.
Когда ваши непсионические методы подводят вас, псионические могут помочь: если вы проваливаете проверку характеристики, используя навык или инструмент, которым вы владеете, вы можете совершить бросок Кости Псионической энергии и добавить выпавшее значение к значению, полученному при проверке, потенциально обращая провал в успех. Вы расходуете кость только в том случае, если бросок успешен.
<<<
Вы можете установить телепатическую связь с другими — это идеально для тихого проникновения.
<<<
Действием выберите одно или нескольких существ, которых вы можете видеть — вы можете связаться с количеством существ, не превышающим ваш бонус мастерства, после чего совершите бросок Кости Псионической энергии. Результат броска определяет то, в течение скольких часов выбранные существа могут телепатически общаться с вами, а вы с ними. Чтобы отправлять или получать сообщения (действий не требуется), вы и другие существа должны быть на расстоянии не дальше 1 км друг от друга. Существо не может использовать эту телепатию, если оно не может говорить ни на одном языке. Оно может оборвать телепатическую связь в любой момент (действий не требуется). Вам и существу необязательно говорить на Общем языке, чтобы понимать друг друга.
Каждый раз, когда вы впервые используете эту способность после завершения продолжительного отдыха, вы не расходуете Кость Псионической энергии. Во всех остальных случаях, когда вы используете способность, ваша кость расходуется.
[img width=385 class="centerme" [https://i.imgur.com/jniOzjV.png]]
<<tabs "[[Описание псионов]] [[Классовые умения псионов]] [[Псионические архетипы]]" "" "$:/state/tab1">>
<<tabs "[tag[Псионический архетип]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
<<<
Вы способны разгонять свое оружие с помощью псионической силы.
<<<
Раз в каждый свой ход, сразу после попадания атакой оружием по существу в пределах 6 м от вас, вы можете потратить одну Кость Псионической энергии, и нанести цели дополнительный урон силовым полем в количестве, равном броску вашей Кости Псионической энергии + ваш модификатор Интеллекта.
Бонусным действием вы проявляете один из своих психических клинков, расходуете кость Псионической энергии и бросаете её, после чего вы мечете клинок в видимое вами незанятое пространство на количество метров, не превышающее 2-кратный результат броска Кости Псионической энергии. После этого вы телепортируетесь в это пространство, а клинок исчезает.
Психокинез - это способность спонтанно создавать и управлять энергией; поглощая энергию для заморозки или создавая её в виде вспышек огня и дуг молний.
---
!!!Управление энергией
<<<
Вы можете по своему желанию манипулировать энергией в незначительных пределах.
<<<
Действием вы можете создать свет, испускающий яркий свет в пределах 6 м и тусклый свет в пределах ещё 6 м; вызвать возгорание предмета, к которому вы прикасаетесь, как от спички; вызвать небольшую дугу электричества; заморозить или разморозить куб воды стороной до 1 м. Любой созданный вами продолжительный эффект длится 1 минуту. Вы можете одновременно активировать несколько эффектов в количестве, равном вашему модификатору Интеллекта, после чего создание нового эффекта прекращает действие самого старого.
---
!!!Всплеск стихии
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 6 м
''Компоненты:'' С
''Длительность:'' 1 раунд
Вы можете с помощью своего разума создать всплеск силы стихий, поражающий цель, видимую вами в пределах дистанции. Совершите по цели дальнобойную атаку заклинанием. При попадании она получает 1к8 урона силовым полем, огнём, холодом или электричеством (на ваш выбор).
За каждую кость урона огнём первоначальной атакой от Всплеска стихии, полученного целью, она получает 1к4 урона огнём в начале своего следующего хода. За каждую кость урона холодом от Всплеска стихии, полученного целью, её скорость уменьшается на 1 м до конца её следующего хода. За каждую кость урона электричеством от Всплеска стихии, полученного целью, дуга поражает другую выбранную вами цель в пределах 4 м от оригинальной, нанося 1к4 урона электричеством (несколько дуг могут поразить одну и ту же цель). Вы не добавляете никаких бонусов к урону этих вторичных эффектов (например, от умения Усиленная псионика).
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Всплеску стихии (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Огромный (1-3 пси-очка):'' Вы выпускаете огромный всплекс - вместо броска атаки, все существа в пределах 3-метрового конуса, исходящего от вас, должны совершить спасбросок Ловкости. При провале они подвергаются эффекту Всплеска стихии. Размер конуса удваивается за каждое потраченное очко (до 6-метрового конуса за 2 очка, до 12-метрового конуса за 3 очка).
* ''Перегруженный (0 пси-очков):'' Вы получаете 1к4 урона силовым полем, который не может быть уменьшен никаким образом, и не добавляете свой бонус мастерства к броску атаки или Сл спасброска Всплеска стихии, но добавляете к броску урона удвоенный бонус мастерства.
* ''Продолжительный (1 пси-очко):'' Ваш Всплеск стихии оставляет после себя в месте попадания разрушительную сферу радиусом 1 м до начала вашего следующего хода. Все существа, которые впервые за ход входят в эту область или заканчивают в ней свой ход, должны преуспеть в спасброске Телосложения, иначе пострадают от вторичного эффекта Всплеска стихии (замедление, ожог, дуга).
* ''Усиленный (1+ пси-очко):'' При попадании цель получает дополнительно 1к8 урона выбранного вида за каждое дополнительно потраченное очко.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Психокинеза, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//ведьмин снаряд//, //огненные ладони// |
| !3 |//палящий луч//, //пылающий шар// |
| !5 |//огненный шар//, //эфирное копьё// |
| !7 |//огненная стена//, //скачущий разряд// |
| !9 |//конус холода//, //эфирная буря// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
---
!!!Специализации
Когда вы изучаете эту Дисциплину, вы можете (но не обязаны) выбрать специализацию из следующего списка. Вы можете выбрать специализацию только во время получения Дисциплины, и не можете изменить или удалить ее после выбора.
''Криокинез''
Вы можете выбирать только урон холодом при использовании вашего Всплеска стихии. Если вы попадаете Всплеском стихии по существу, либо оно проваливает спасбросок против него, оно становится обмороженным до конца своего следующего хода, получая помеху на свой следующий бросок атаки или спасбросок Ловкости, а его скорость уменьшается дополнительно на 1 м за каждую кость урона.
Если вы совершаете критическое попадание Всплеском стихии по существу, либо оно проваливает спасбросок против него на 5 или больше, оно становится [[опутанным|Опутанный]] до конца своего следующего хода.
Следующий список заклинаний заменяет ваш список Альтернативных эффектов:
| !ПО |!Заклинания |
| !1 |//арктическое дыхание//, //замурование// |
| !3 |//заморозки//, //сковывающий лёд Райма// |
| !5 |//мгновенная заморозка//, //метель// |
| !7 |//град//, //ледяное копьё// |
| !9 |//конус холода// |
//ПО - Пси-очки//
''Пирокинез''
Вы можете выбирать только урон огнём при использовании вашего Всплеска стихии, а его кость урона увеличивается до 1к10 для первоначального урона и до 1к6 для урона ожогом в начале хода цели. Дополнительный урон от модификатора Усиленный увеличивается до 1к10 за каждое очко.
Следующий список заклинаний заменяет ваш список Альтернативных эффектов:
| !ПО |!Заклинания |
| !1 |//адское возмездие//, //огненные ладони// |
| !3 |//палящий луч//, //пылающий шар// |
| !5 |//огненный шар//, //огненный циклон// |
| !7 |//огненная стена//, //огненный щит// |
| !9 |//небесный огонь// |
//ПО - Пси-очки//
''Электрокинез''
Вы можете выбирать только урон электричеством при использовании вашего Всплеска стихии, а его кость урона увеличивается до 1к10 для первоначального урона и до 1к6 для урона дугой. Дополнительный урон от модификатора Усиленный увеличивается до 1к10 за каждое очко.
Следующий список заклинаний заменяет ваш список Альтернативных эффектов:
| !ПО |!Заклинания |
| !1 |//ведьмин снаряд//, //удар грома// |
| !3 |//молниевая подзарядка//, //разряд// |
| !5 |//молния//, //поражение током// |
| !7 |//скачущий разряд// |
| !9 |//разверзнувшиеся небеса// |
//ПО - Пси-очки//
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Кошка |— |
| 0 |Гиена |— |
| 0 |Шакал |— |
| 0 |Скорпион |— |
| 0 |Гриф |Скорость полёта |
| 1/8 |Верблюд |— |
| 1/8 |Летающая змея |Скорость полёта |
| 1/8 |Мул |— |
| 1/8 |Ядовитая змея |Скорость плавания |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Удав |Скорость плавания |
| 1/4 |Гигантская ящерица |— |
| 1/4 |Гигантская ядовитая змея |Скорость плавания |
| 1/4 |Гигантский паук-волк |— |
| 1 |Гигантская гиена |— |
| 1 |Гигантский паук |— |
| 1 |Гигантская жаба |Скорость плавания |
| 1 |Гигантский гриф |Скорость полёта |
| 1 |Лев |— |
| 2 |Гигантский удав |Скорость плавания |
| 3 |Гигантский скорпион |— |
Дикая природа опасна, а путешествия за стены города редко обходятся без инцидентов. Многие приключенцы навсегда теряются в тёмных лесах. Другие погибают от нехватки продовольствия. Третьи становятся жертвами бандитов и монстров. Мир не делает поблажек неподготовленному путешественнику.
Путешествия на дальние расстояния проводятся в виде [[испытания навыков|Испытания навыков]]. Ниже перечислены особенности этого вида испытаний:
* Сложность испытания напрямую зависит от длительности и темпа путешествия, и высчитывается согласно таблице Темп перемещения.
* Правило трёх провалов не используется. Персонажи могут продолжать проходить испытание, пока не доберутся до цели, либо не пожелают прервать его.
* Последствием провала может быть случайная сцена (в т.ч. боевая).
* Сл проверок может расти при путешествии в ночное время.
* Прохождение заготовленной Мастером сцены (не случайной) считается успешной проверкой.
* Правило "[[Голод и жажда]]" не перестаёт действовать во время испытания. Учтите употреблённое количество пищи и воды после завершения испытания. Если запасы группы иссякли во время путешествия, совершайте проверки на истощение от голода и жажды после последней в день проверки испытания.
---
!!!Темп перемещения
Предполагается, что персонажи тратят на перемещение 10 часов в день. В учёт идут перерывы на отдых, отвлекающие факторы и паузы, требующиеся персонажу в течении дня.
Во время перемещения группа искателей приключений может перемещаться в нормальном, быстром или медленном темпе, как показано в приведённой ниже таблице. В таблице указано расстояние, на которое может переместиться группа за день и эффекты выбранного темпа, если они есть.
| !Темп | !Скорость | !Расстояние в день | !Сложность | !Проверки |
| Медленный | 2 км/ч | 20 км | 1 × день | Преимущество |
| Нормальный | 4 км/ч | 40 км | 2 × день | - |
| Быстрый | 6 км/ч | 60 км | 3 × день | Помеха |
''Труднопроходимая местность''
Скорость, указанная в таблице, подразумевает путешествие по относительно нормальной местности: дороги, открытые равнины или ровные коридоры подземелья. Однако приключенцы часто забредают в густые леса, глубокие болота, заваленные булыжниками руины, крутые горы и закованные в ледяной панцирь реки — всё это труднопроходимая местность.
По труднопроходимой местности вы перемещаетесь с вдвое меньшей скоростью и преодолевате вдвое меньшее расстояние за сутки.
''Форсированный марш''
Персонажи могут продлить день путешествия, рискуя своим здоровьем.
В конце каждого дополнительного часа путешествия сверх 10 часов персонаж должен преуспеть в проверке Телосложения (Выносливость) со Сл = 10 + 1 за каждый час сверх 10, иначе получит одну степень [[истощения|Истощённый]].
''Скакуны и транспорт''
Персонажи, перемещающиеся верхом на скакунах, скорость которых не меньше 10 м, преодолевают вдвое большее расстояние за сутки, чем при ходьбе.
В фургонах, каретах и прочем наземном транспорте персонажи преодолевают то же расстояние за сутки, что и при ходьбе. Основным плюсом такого метода перемещения является грузоподъёмность транспорта.
Персонажи на водном транспорте ограничены скоростью судна, и они не получают ни штрафы за быстрый темп, ни преимущества от медленного темпа. В зависимости от
судна и размера экипажа, корабли могут перемещаться и по 24 часа в сутки.
|!Судно | !Скорость |
|Военный корабль | 4 км/ч |
|Воздушный корабль | 12 км/ч |
|Галера | 6 км/ч |
|Ладья | 4 км/ч |
|Лодка | 2 км/ч |
|Парусник | 4 км/ч |
|Шлюпка | 2 км/ч |
---
!!!Деятельность во время путешествия
[img [https://i.imgur.com/lYaBvye.png]]
<<tabs "[tag[Путь дикости]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Пути престижа - это способ добавить еще один уровень колорита персонажу без использования уровней класса. Они представляют собой нечто среднее между классом и предысторией.
Персонаж не может следовать более чем одному пути престижа. Каждый путь престижа делится на четыре ранга. Ранг персонажа зависит от его уровня, как показано в таблице ниже.
| !Ранг пути престижа | !Уровень персонажа |
| 1 | 5-8 |
| 2 | 9-12 |
| 3 | 13-16 |
| 4 | 17+ |
---
!!!Описание пути престижа
Каждый путь престижа включает в себя историю и сведения о том, как этот путь вписывается в мир. В конце каждого раздела по истории даются советы по включению пути в различные сеттинги.
''Предварительные условия ''
У всех путей престижа есть определенные предварительные условия, которые должны быть выполнены. Это может быть уровень, деньги, способность к заклинаниям, и они всегда подлежат согласованию с Мастером, подобно магическим предметам. Ваш Мастер решает, есть ли дополнительные условия для пути престижа, например, посещение святого места или совершение определенного особого подвига.
Когда эти дополнительные требования выполнены, персонаж также должен найти учителя более высокого ранга, чем он сам. Представитель пути престижа не может повысить кого-либо выше своего ранга.
''Умения''
Это краткое описание особенностей и умений, которые персонаж приобретает на каждом ранге пути престижа.
---
!!!Обучение умениям пути
Персонажи получают умения престижа путём осуществления соответствующей деятельности во время продолжительного отдыха или простоя. Для этого персонаж должен найти учителя, владеющего этим умением, а также потратить одну неделю и указанную в таблице ниже сумму на сопутствующие расходы.
| !Ранг | !Затраты|
| 1 | (1к6+1)x100 см|
| 2 | 2к10x1000 см|
| 3 | (1к4+1)x10000 см|
| 4 | 2к6x25000 см|
По завершению обучения, вы получаете одно умение соответствующего ранга на ваш выбор. Вы должны повторять это для каждого умения отдельно. Вы можете пропускать умения, которые вас не интересуют, прежде чем изучить умения рангом выше.
Для некоторых варваров ярость это способ достижения цели, и этой целью является насилие. Путь берсерка это путь, залитый кровью, путь безудержной ярости. Впадая в ярость берсерка, вы бросаете себя в хаос боя, не заботясь более о собственном здоровье.
---
!!! [img[3.png]] Бешенство
Пребывая в ярости, вы можете впасть в бешенство (действие не требуется). В этом случае, пока ваша ярость не прекратилась, вы можете в каждый свой ход совершать бонусным действием одну рукопашную атаку оружием. После окончания бешенства, вы получаете одну степень [[истощения|Истощённый]].
---
!!! [img[6.png]] Бездумная ярость
Вы не можете быть [[испуганы|Испуганный]] или [[очарованы|Очарованный]], пока пребываете в ярости. Если вы были [[испуганы|Испуганный]] или [[очарованы|Очарованный]] до того, как впали в ярость, эти эффекты приостанавливаются до прекращения вашей ярости.
---
!!! [img[10.png]] Пугающее присутствие
<<<
Вы можете пугать других своим ужасающим видом.
<<<
Действием выберите видимое вами существо в пределах 6 м от вас. Если оно может видеть или слышать вас, оно должно совершить успешный спасбросок Мудрости (Сл равна 8 + ваш бонус мастерства + ваш модификатор Харизмы), иначе станет [[испуганным|Испуганный]] вами до конца вашего следующего хода. В последующие ходы вы можете действием поддерживать этот эффект до конца своего следующего хода. Эффект оканчивается, если цель оказалась вне линии обзора, или далее чем в 12 м от вас.
Если существо преуспело в спасброске, вы не можете использовать на нём это умение следующие 24 часа.
---
!!! [img[14.png]] Ответный удар
При получении урона от существа, находящегося в пределах 1 м от вас, вы можете реакцией совершить по нему рукопашную атаку оружием.
Все варвары утаивают свою ярость внутри. Их гнев даёт им их превосходную силу, выносливость и скорость. Варвары, следующие по Пути Буревестника, учатся трансформировать эту ярость в покров первобытной магии, который кружится вокруг них. Будучи в ярости, варвары этого пути используют силы природы для создания могущественных магических эффектов.
Буревестники – это обычно элитные чемпионы, тренирующиеся вместе с друидами, следопытами и другими поклявшимися защищать природу. Другие буревестники оттачивают свое мастерство в областях, сокрушаемых бурями, на ледяных вершинах на краю света или в глубинах самых горячих пустынь.
---
!!! [img[3.png]] Аура бури
Пребывая в ярости, вы излучаете штормовую магическую ауру. Аура распространяется от вас на 2 м во всех направлениях, но не через полные укрытия.
У вашей ауры есть эффект, который активируется когда вы впадаете в ярость, и вы можете активировать эффект снова бонусным действием в каждый свой последующий ход.
Выберите //''пустыню''//, //''море''// или //''тундру''//. Ваш эффект ауры зависит от выбранной среды как описано ниже. Вы можете сменить выбор окружающей среды когда получаете уровень в этом классе.
Если эффект вашей ауры требует спасброска, Сл равна 8 + ваш бонус мастерства + мод. Телосложения.
//''Пустыня.''// Когда этот эффект активируется, все остальные существа в вашей ауре получают 2 урона огнем. Урон увеличивается когда вы достигаете определенных уровней в этом классе - до 3 на 5 уровне, 4 на 10 уровне, 5 на 15 уровне и 6 на 20 уровне.
//''Море.''// Когда этот эффект активируется, вы можете выбрать другое видимое вами существо внутри вашей ауры. Цель должна совершить спасбросок Ловкости. Цель получает 1к6 урона электричеством при провале или половину урона при успехе. Урон увеличивается когда вы достигаете определенных уровней в этом классе - до 2к6 на 10 уровне, 3к6 на 15 уровне, и 4к6 на 20 уровне.
//''Тундра.''// Когда активируется этот эффект, каждое существо по вашему выбору внутри вашей ауры получает 2 временных хита, так как ледяные духи делают их менее чувствительными к страданиям. Количество временных хитов увеличивается, когда вы достигаете определенных уровней в этом классе - до 3 на 5 уровне, 4 на 10 уровне, 5 на 15 уровне и 6 на 20 уровне.
---
!!! [img[6.png]] Душа бури
<<<
Буря дает вам преимущества даже когда ваше аура не активна.
<<<
Преимущества зависят от окружающей среды, которую вы выбрали для вашей Ауры бури.
//''Пустыня.''// Вы получаете сопротивление урону огнем и не страдаете от эффектов невероятной жары. Более того, действием вы можете дотронуться до горючего объекта, который никто не носит или несёт, и поджечь его.
//''Море.''// Вы получаете сопротивление урону электричеством и можете дышать под водой. Вы также получаете скорость плавания 6 м.
//''Тундра.''// Вы получаете сопротивление урону холодом, и не страдаете от эффектов сильного холода. Более того, действием, вы можете дотронуться до 1 куб. метра воды и превратить её в лёд, который растает через 1 минуту. Действие провалено если в кубе находится существо.
---
!!! [img[10.png]] Ограждающая буря
<<<
Вы научились использовать свое мастерство бури, чтобы защищать других.
<<<
Каждое существо по вашему выбору получает сопротивление урону, которое вы получили от умения Душа бури, пока существо находится внутри вашей Ауры бури.
---
!!! [img[14.png]] Неистовство бури
<<<
Сила бури, которую вы призываете, становится могущественнее и обрушивается на ваших врагов.
<<<
Эффект основан на окружающей среде, которую вы выбрали для вашей Ауры бури.
//''Пустыня.''// Сразу же после того как существо в вашей ауре попадет по вам атакой, вы можете использовать вашу реакцию, чтобы заставить это существо совершить спасбросок Ловкости. При провале, существо получает урон огнем равный половине вашего уровня варвара.
//''Море.''// Когда вы попадаете по существу в вашей ауре атакой, вы можете использовать свою реакцию, чтобы заставить существо пройти спасбросок Силы. При провале существо сбивается с ног как будто ударом волны.
//''Тундра.''// Когда эффект вашей Ауры бури активирован, вы можете выбрать одно видимое ваме существо в ауре. Это существо должно успешно пройти спасбросок Силы или его скорость уменьшается до 0 до начала вашего следующего хода, так как его покрывает магический мороз.
Варвары, следующие Пути Бушующего в бою, берут своё начало у дварфских бойцов, поклоняющихся богам войны и именуемых "Калджарх" (буквально "идиот с топором" с дварфского). Они специализируются в использовании громоздких шипованных доспехов, которые помогают им использовать своё тело в качестве оружия, когда они, поддавшись ярости, бросаются в пекло битвы.
---
!!! [img[3.png]] Доспех Бушующего в бою
Вы получаете владение [[инструментами кузнеца|Инструменты кузнеца]] и "//шипованными//" доспехами. Вы (или другой умелый кузнец) можете модифицировать немагический средний доспех, потратив 4 часа работы и сырьё (железо, сталь или другой подходящий металл) стоимостью 25 см, сделав его "//шипованным//". Модификация магического доспеха требует 8 часов работы и сырьё стоимостью 100 см. "//Шипованная//" версия доспеха весит на 2 кг больше стандартного.
Пока вы носите "//шипованные//" доспехи вы получаете следующие преимущества:
* Ваши безоружные атаки наносят 1к4 + мод. Силы колющего урона. Если ваш "//шипованный//" доспех является магическим, то и ваши безоружные атаки считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
* Пребывая в ярости, если вы в свой ход совершаете действие [[Атака]], вы можете частью этого действия совершить одну дополнительную безоружную атаку. Вы не можете совершить более одной дополнительной атаки частью действия [[Атака]], в том числе с помощью других умений и особенностей (умение Дополнительная атака является исключением).
* Если вы успешно берёте в [[захват|Захват]] существо, или существо успешно берёт в [[захват|Захват]] вас, вы наносите ему урон вашей безоружной атаки.
* Ваше [[пробегание|Пробегание *]] через пространство существа наносит ему урон вашей безоружной атаки.
---
!!! [img[6.png]] Полное безрассудство
Пребывая в ярости, если вы атакуете безрассудно, вы получаете временные хиты в количестве равном вашему мод. Телосложения (минимум 1). Эти временные хиты пропадают, когда ваша ярость прекращается.
---
!!! [img[10.png]] Яростный налёт
Пребывая в ярости, вы можете совершить Рывок бонусным действием.
---
!!! [img[14.png]] Шипованное возмездие
Если существо, находящееся в 1 м от вас, попадает по вам рукопашной атакой, оно получает урон вашей безоружной атаки, пока вы пребываете в ярости, дееспособны и носите "//шипованные//" доспехи.
Многие места в мультивселенной изобилуют красотой, бурными эмоциями и необузданной магией; Страна Фей, Верхние Планы и другие царства сверхъестественной мощи излучают такие силы и могут оказывать серьёзное влияние на людей. Будучи людьми сильных эмоций, варвары особенно восприимчивы к этим диким влияниям, а некоторые из них преображаются под воздействием магии. Эти варвары, подверженные магии, идут по Пути Дикой магии. Эльфы, тифлинги, аасимары и дженази часто выбирают этот путь, стремясь проявить потустороннюю магию своих предков.
---
!!! [img[3.png]] Магическое осознание
Действием вы можете открыть своё сознание для обнаружения присутствия концентрированной магии. До конца вашего следующего хода вы знаете местоположение всех магических эффектов или предметов, не находящихся за полным укрытием, в пределах 12 м от вас. Когда вы ощущаете эффект заклинания, вам известна школа этого заклинания.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[3.png]] Дикий всплеск
<<<
Магическая энергия, бурлящая внутри вас, иногда вырывается наружу.
<<<
Когда вы впадаете в ярость, совершите бросок по таблице ниже, чтобы определить полученный магический эффект.
Если эффект требует совершения спасброска, его Сл равна 8 + ваш бонус мастерства + ваш модификатор Телосложения.
| !к8 |!Магический эффект |
| 1 |Теневые щупальца извиваются вокруг вас. Выбранные вами существа, видимые в пределах 6 м от вас, должны преуспеть в спасброске Телосложения, иначе получат 1к12 урона некротической энергией. Кроме того, вы получаете 1к12 временных хитов. |
| 2 |Вы телепортируетесь в видимое вами незанятое пространство в пределах 6 м от вас. Пока ваша ярость не прекратилась, вы можете в каждый свой последующий ход совершать бонусным действием использовать этот эффект снова. |
| 3 |Нематериальный дух, похожий на фламфа или пикси (на ваш выбор), появляется в 1 м от существа, видимого вами в пределах 6 м от вас, по вашему выбору. В конце этого хода дух взрывается и все существа в радиусе 1 м от него должны преуспеть в спасброске Ловкости, иначе получат 1к6 урона силовым полем. Пока ваша ярость не прекратилась, вы можете в каждый свой последующий ход совершать бонусным действием использовать этот эффект снова, призывая нового духа. |
| 4 |Магия пропитывает одно удерживаемое вами оружие по вашему выбору. Пока ваша ярость не прекратилась, вид урона оружия изменяется на силовое поле, и оно приобретает свойства лёгкого и эффективеную дальность метания 4 м. Если оружие покидает вашу руку, оно снова появляется в вашей руке в конце этого хода. |
| 5 |Пока ваша ярость не прекратилась, каждое существо, попадающее по вам атакой, получает 1к6 урона силовым полем от ударяющей в ответ магии. |
| 6 |Пока ваша ярость не прекратилась, вас окружают разноцветные защитные огни. Вы и ваши союзники, находящиеся в пределах 2 м от вас, получаете бонус +1 к КД. |
| 7 |Вокруг вас временно вырастают цветы и лианы. Пока ваша ярость не прекратилась, земля в радиусе 3 м от вас считается труднопроходимой местностью для ваших врагов. |
| 8 |Из вашей груди выстреливает световой снаряд. Другое выбранное вами существо, видимое в пределах 6 м от вас, должно преуспеть в спасброске Телосложения, иначе получит 1к6 урона излучением и станет ослеплённым до начала вашего следующего хода. Пока ваша ярость не прекратилась, вы можете в каждый свой последующий ход совершать бонусным действием использовать этот эффект снова. |
---
!!! [img[6.png]] Укрепляющая магия
<<<
Вы можете использовать свою дикую магию, чтобы усилить себя или своего союзника.
<<<
Действием вы можете коснуться одного существа (включая себя) и наделить это существо одним из следующих преимуществ по вашему выбору:
* В течении 10 минут, если цель совершает бросок атаки или проверку характеристик, она может бросить к3 и добавить выпавшее число к результату.
* Совершите бросок к3. Цель восстанавливает одну потраченную ячейку заклинаний, уровень которой не превышает выпашвее значение (по выбору цели). Цель не может повторно восстановить ячейку таким образом, пока не завершит продолжительный отдых.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Неустойчивая реакция
<<<
Когда вы подвергаетесь опасности во время ярости, магия внутри вас может вырваться наружу.
<<<
Пребывая в ярости, сразу после получения урона или провала спасброска вы можете совершить реакцией бросок по таблице Дикого всплеска и немедленно произвести магический эффект. Этот эффект заменяет ваш текущий эффект Дикого всплеска.
---
!!! [img[14.png]] Контролируемый всплеск
Каждый раз, когда вы совершаете бросок по таблице Дикого всплеска, вы можете бросить одну дополнительную кость и выбрать одно из двух значений. Если на обоих костях выпало одинаковое число, вы можете игнорировать результат и выбрать любой эффект из таблицы.
Варвары, идущие по Пути Зверя, черпают свою ярость из животной искры, горящей в их душах. Этот зверь вырывается наружу в порыве ярости, физически преображая варвара.
Такой варвар может быть вместилищем первородного духа или потомком оборотня. Вы можете выбрать происхождение своей дикой силы или определить его, совершив бросок по таблице ниже.
| !к4 |!Происхождение |
| 1 |Один из ваших родителей - ликантроп, и вы унаследовали часть его проклятия. |
| 2 |Вы потомок архидруида и унаследовали способность частично менять форму. |
| 3 |Фейский дух одарил вас способностью принимать различные звериные обличья. |
| 4 |В вас живет древний звериный дух, который позволил вам пойти этим путем. |
---
!!! [img[3.png]] Форма зверя
Когда вы впадаете в ярость, вы можете трансформироваться, раскрывая звериную силу в себе. Пока ваша ярость не прекратилась, вы проявляете природное оружие. Оно считается для вас простым оружием ближнего боя, и вы добавляете свой модификатор Силы к броскам атаки и урона, когда атакуете им, как обычно.
Форму оружия вы выбираете каждый раз, когда впадаете в ярость:
//''Укус.''// Ваш рот превращается в звериный оскал или огромные мандибулы (на ваш выбор). При попадании он наносит 1к8 колющего урона. Один раз в каждый свой ход, когда вы наносите урон существу этим укусом, вы восстанавливаете количество хитов, равное вашему бонусу мастерства, если в момент попадания у вас было меньше половины хитов.
//''Когти.''// Ваших руки превращаются в когтистые лапы, которые вы можете использовать как оружие, если они свободны. При попадании они наносят 1к6 рубящего урона. Один раз в каждый свой ход, когда вы атакуете когтями действием [[Атака]], вы можете совершить ещё одну атаку когтями частью того же действия.
//''Хвост.''// У вас вырастает колючий хвост, который наносит 1к8 колющего урона при попадании и обладает свойством "длинное". Если видимое вами существо в пределах 2 м от вас атакует вас, вы можете реакцией взмахнуть хвостом, совершить бросок к8 и прибавить полученный результат к своему КД против этой атаки.
---
!!! [img[6.png]] Душа зверя
Сила зверя в вас возрастает, в результате чего природное оружие вашей Формы зверя считается магическим для преодоления сопротивления и иммунитета к немагическим атакам и урону.
Вы также можете изменять свою форму, чтобы помочь адаптироваться к окружающей обстановке. Когда вы завершаете короткий или продолжительный отдых, выберите одно из следующих преимуществ, которое действует до следующего короткого или продолжительного отдыха:
* Вы получаете скорость плавания, равную вашей скорости ходьбы, и можете дышать под водой.
* Вы приобретаете скорость карабканья, равную вашей скорости ходьбы, и можете карабкаться по сложным поверхностям, включая потолки, без совершения проверок характеристик.
* Дальность ваших прыжков увеличивается в три раза.
---
!!! [img[10.png]] Заражающая ярость
Когда вы попадаете по существу атакой своим природным оружием, пребывая в ярости, зверь внутри вас может проклясть вашу цель вспышкой бешенства. Цель должна преуспеть в спасброске Мудрости (Сл равна 8 + ваш бонус мастерства + ваш модификатор Телосложения), иначе попадёт под действие одного из следующих эффектов (на ваш выбор):
* Цель должна реакцией совершить рукопашную атаку против другого видимого вами существа по вашему выбору.
* Цель получает 2к12 урона психической энергией.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[14.png]] Объявление охоты
<<<
Зверь внутри вас становится настолько сильным, что вы можете распространять его свирепость на других и приобретать стойкость от того, что они присоединяются к вашей охоте.
<<<
Когда вы впадаете в ярость, вы можете выбрать количество других согласных видимых вами существ в пределах 6 м от вас, равное вашему модификатору Телосложения (минимум 1). Вы получаете 5 временных хитов за каждое такое существо. Пока ваша ярость не прекратилась, выбранные существа один раз в каждый свой ход могут добавить 1к6 к броску урона попавшей атаки.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
Некоторые варвары происходят из культур, где почитают своих предков. Эти племена учат своих воинов, что ушедшие остаются в этом мире в качестве могучих духов, которые могут направлять и защищать живущих. Когда варвары, следующие этому пути, впадают в ярость, они пересекают барьер между нашим миром и миром духов и взывают к таким духам-хранителям за помощью.
Варвары, которые призывают своих предков-хранителей, могут лучше защитить свое племя и своих союзников. Чтобы укрепить связь со своими предками-хранителями, варвары, которые следуют этому пути, покрывают себя детально проработанными татуировками, которые отмечают дела их предков. Эти татуировки несут в себе истории о победах над ужасными монстрами или другими страшными противниками.
---
!!! [img[3.png]] Древние защитники
<<<
Призрачные воины появляются, когда вы впадаете в ярость.
<<<
Пока вы пребываете в ярости, первое существо по которому вы попадаете атакой в свой ход, становится целью духов, которые мешают его атакам. До начала вашего следующего хода цель получает помеху на любой бросок атаки, целью которой не являетесь вы. Если цель попадает атакой по существу, отличному от вас, оно получает сопротивление к урону от этой атаки. Эффект на цели заканчивается раньше, если ваша ярость прекращается.
---
!!! [img[6.png]] Щит предков
<<<
Духи-хранители, которые помогают вам, могут дать сверхъестественную защиту тем, кого вы пытаетесь уберечь.
<<<
Пока вы пребываете в ярости, и другое видимое вами существо в пределах 6 м от вас, получает урон, вы можете использовать свою реакцию, чтобы уменьшить этот урон на 2к6.
При достижении определенных уровней в этом классе, вы можете значительнее уменьшать урон: на 3к6 на 10 уровне и на 4к6 на 14 уровне.
---
!!! [img[10.png]] Совет предков
<<<
Вы получаете способность советоваться с духами предков.
<<<
Вы можете сотворять заклинания //гадание// или //подсматривание// без траты ячеек заклинаний или материальных компонентов. Вместо создания сферического сенсора, подобное сотворение //подсматривания// призывает одного из ваших невидимых духов предков в выбранное место. Базовой характеристикой для использования этих заклинаний является Мудрость.
После того как вы сотворили любое из этих заклинаний с помощью этого умения, вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[14.png]] Мстительные предки
<<<
Ваши духи предков становятся достаточно могущественными, чтобы давать отпор.
<<<
Когда вы используете свой Щит предков, чтобы уменьшить урон от атаки, атакующий получает урон силовым полем в количестве, равном уменьшенному урону.
Путь Тотемного воина — духовный путь, в котором дух зверя становится для варвара наставником, защитником и вдохновителем. В бою тотемный дух дарует вам сверхъестественную мощь, наполняя вашу ярость магической силой.
Большинство варварских племён связывают свои кланы с конкретным тотемным духом, и это необычно для одного варвара иметь несколько тотемных духов, хотя такие исключения и встречаются.
---
!!! [img[3.png]] Искатель духов
<<<
Ваш путь, тесно связанный с дикой природой, даёт вам близость с животными.
<<<
Вы получаете возможность сотворять заклинания //животные чувства// и //разговор с животными// в виде ритуалов. Базовой характеристикой для использования этих заклинаний является Мудрость.
---
!!! [img[3.png]] Тотемный дух
<<<
Встав на этот путь, вы выбираете своего тотемного духа, и получаете его умения.
<<<
Вы должны сделать или приобрести тотем: физический предмет (амулет или похожее украшение), содержащий мех, кожу, перья, когти, зубы или кости тотемного животного.
Если хотите, можете приобрести незначительные физические изменения, напоминающие ваше тотемное животное. Например, если вашим тотемным животным является //''медведь''//, вы можете получить необычную волосатость и толстокожесть, а если это //''орёл''//, то ваши глаза могут приобрести ярко-жёлтый цвет.
Ваше тотемное животное может быть родственным одному из перечисленных ниже, если оно более подходит для вашей родной местности. Например, вместо //''орла''// может быть ястреб или гриф.
<<tabs "[tag[Тотемный дух]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[6.png]] Аспект зверя
Вы получаете магическое свойство, зависящее от выбранного вами тотемного животного. Вы можете выбрать то же животное, что и ранее, либо другое.
<<tabs "[tag[Аспект зверя]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[10.png]] Гуляющий с духами
Вы можете сотворять заклинание //общение с природой// в виде ритуала. Когда вы делаете это, призрачная версия одного из ваших тотемных животных является вам и сообщает необходимую информацию. Базовой характеристикой для использования этого заклинания является Мудрость.
---
!!! [img[14.png]] Гармония тотема
Вы получаете магическое свойство, зависящее от выбранного вами тотемного животного. Вы можете выбрать то же животное, что и ранее, либо другое.
<<tabs "[tag[Гармония тотема]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Некоторые божества вдохновляют своих последователей вводить себя в свирепый боевой раж. Такие варвары – фанатики, воины, которые преобразуют свой гнев в могущественную демонстрацию божественной мощи.
Множество богов в мирах D&D вдохновляют своих последователей принимать этот путь. Темпус из Забытых Королевств или Гектор и Эритнул в Грейхоуке – отличные примеры.
В целом, боги, которые вдохновляют фанатиков, – это боги войны, разрушения и насилия. Не все они злые, но мало кто из них добр.
---
!!! [img[3.png]] Божественный гнев
<<<
Вы можете вкладывать божественный гнев в ваши удары оружием.
<<<
Пока вы пребываете в ярости, первое существо, по которому вы попадаете атакой оружием, получает дополнительный урон, равный 1к6 + половина вашего уровня варвара. Урон наносится некротической энергией или излучением; тип урона вы выбираете при получении этого умения.
---
!!! [img[3.png]] Воин богов
<<<
Ваша душа отмечена для вечной битвы.
<<<
Если заклинание, такое как //оживление// имеет единственный эффект – вернуть вас к жизни (но не нежитью), заклинателю не требуются материальные компоненты, чтобы сотворить его на вас.
---
!!! [img[6.png]] Концентрация фанатика
<<<
Божественная сила, что питает вашу ярость, может защитить вас от вреда.
<<<
Если вы провалили спасбросок, пребывая в ярости, вы можете перебросить его и должны использовать новое значение. Вы можете использовать эту способность только один раз в течение одной ярости.
---
!!! [img[10.png]] Фанатичное присутствие
<<<
Вы научились использовать божественную силу, чтобы вдохновлять на фанатизм других.
<<<
Бонусным действием вы можете испустить боевой клич, наполненный божественной энергией. До 10 слышащих вас существ по вашему выбору в пределах 12 м от вас, получают преимущество на броски атак и на спасброски до начала вашего следующего хода.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[14.png]] Ярость превыше смерти
<<<
Божественная сила, что питает вашу ярость, позволяет вам игнорировать смертельные удары.
<<<
Если вы становитесь [[умирающим|Умирающий]], пребывая в ярости, вы не теряете сознание. Вы по-прежнему должны совершать спасброски от смерти, но, если вы должны умереть от провала спасбросков от смерти, вы не умрете, пока не прекратится ваша ярость, и только если вы всё ещё являетесь [[умирающим|Умирающий]].
Этот поистине уникальный путь часто определяется его точной природой, но такая природа широко варьируется. Возможно, это утраченная часть технологии, например, давно погибший доспех боевого кузнеца, который приобрел странные свойства, а возможно, это инопланетный симбионт, имеющий свою собственную цель или задачу (возможно, такую простую, как безвредное питание вашей яростью или вашими врагами).
Вы можете выбрать один из вариантов из приведенной ниже таблицы или вместе с вашим Мастером придумать совершенно новую концепцию. Оно может быть биологическим или механическим по своей природе, или даже быть частью вашей расы или происхождения. Возможно, это что-то, что вы найдете или сделаете сами, но каково бы ни было его происхождение, оно наделяет вас ужасающими возможностями на поле боя.
| !к6 |!Пример экзокостюма |
| 1 |Сложная машина, которая разворачивается из маленького металлического шарика. |
| 2 |Странный симбионт, который окутывает вас и хранится в вашей крови. |
| 3 |Кристаллический костюм, возникающий из кулона, похожего на драгоценный камень. |
| 4 |Набор мистических рун, покрывающих ваше тело. |
| 5 |Механический доспех, который становится частью вашего тела. |
| 6 |Разумный комплект доспехов, который разгуливает рядом, экипируя себя на вас в бою. |
!!!Изобретение или артефакт?
В целом, этот путь представляет собой контакт персонажа с продвинутым и мощным экзокостюмом. Увеличение силы представляет собой освоение персонажем его способностей, их восстановление, или же персонаж становится достаточно сильным, чтобы поддерживать используемые системы. Изобретение экзокостюма, как правило, больше представлено у [[Бронником|Бронник]] изобретателя.
---
!!! [img[3.png]] Экзокостюм
Вы становитесь связанным с экзокостюмом, хотя вам не обязательно всегда носить его. Вы постоянно поддерживаете с ним некую взаимосвязь, и даже если он потерян или уничтожен, он восстанавливает себя благодаря своей привязке к вам.
В неактивном состоянии он принимает маленькую свернутую форму, прячется в вашем теле или вообще не имеет формы (в зависимости от его природы). Когда вы впадаете в ярость, он активируется, превращаясь в полный доспех. Он поглощает любой доспех, который вы носите, когда активируется, принимая КД этого доспеха (если вы не носите доспехов, он принимает КД вашей защиты без доспехов). Кроме того, он наделяет вас следующими преимуществами:
* //''Железные кулаки.''// Ваши свободные руки считаются для вас лёгким контактным оружием, наносящим 1к8 дробящего урона.
* //''Регенерирующая броня.''// Ваш экзокостюм защищает вас от ударов, уменьшая получаемый вами урон на значение вашего бонуса мастерства.
* //''Сокрушительная сила.''// Каждый раз, когда вы преуспеваете в проверке Силы (Атлетика), совершая особую атаку [[Толкание существа]] или [[Захват]], вы можете нанести цели этой атаки 1к4 + ваш модификатор Силы дробящего урона.
---
!!! [img[6.png]] Усиление движения
<<<
Интеграция с экзокостюмом дает вам новые возможности передвижения.
<<<
Вы получаете скорость карабканья равную вашей скорости ходьбы. Кроме того, дальность ваших прыжков увеличивается в три раза..
---
!!! [img[6.png]] Силовой кулак
Когда вы совершаете бросок атаки своими Железными кулаками, вы можете решить не добавлять свой бонус мастерства к броску атаки. Если атака попадает, вы можете добавить к броску урона удвоенный бонус мастерства. Кроме того, ваши Железные кулаки считаются магическими при определении преодоления сопротивления и иммунитета к немагическим атакам и урону.
---
!!! [img[10.png]] Тяжеловес
Пока вы пребываете в ярости [[движение в захвате|Движение в захвате]] не уменьшает вашу скорость.
---
!!! [img[10.png]] Слэм
Один раз в свой ход, когда вы перемещаете схваченное существо, вы можете ударить его о какие-нибудь объекты на поле боя. Если движение схваченного существа остановлено столкновением с Большим или большим объектом, Маленьким или большим существом или неподвижной местностью, то и схваченное существо, и объект, с которым оно столкнулось, получают 1к6 дробящего урона за каждые 3 м, на которые вы переместились до столкновения.
---
!!! [img[14.png]] Безграничный скачок
Пока вы пребываете в ярости, вы получаете скорость полёта равную вашей скорости ходьбы.
Когда ничего другого не остаётся, приключенец может заняться честным трудом, чтобы заработать на жизнь. Этот вид деятельности – попытка найти временную работу, характер и оплату которой трудно предсказать.
//''Ресурсы''//. Работа занимает одну неделю.
//''Определение результата.''// Чтобы определить, сколько денег получит персонаж, он совершает одну из проверок: Сила (Атлетика), Ловкость (Акробатика), Интеллект при использовании набора инструментов, Харизма (Выступление) или Харизма при игре на музыкальном инструменте. Обратитесь к таблице ниже, чтобы узнать, сколько денег получил персонаж в соответствии с результатом проверки.
|!Результат |!Заработок|
|9 или меньше |Бедное существование в течение недели|
|10-14 |Скромное существование в течение недели|
|15-20 |Комфортное существование в течение недели|
|21+ |Комфортное существование в течение недели + 25 см|
//''Осложнения''//. Обычная работа редко приводит к значительным осложнениям. За каждую неделю, потраченную на работу, с вероятностью 10% персонаж может столкнуться с осложнением.
| !к6 |!Осложнение |
| 1 |Из-за жалобы клиента или драки с коллегой ваш заработок уменьшился на одну категорию.|
| 2 |У вашего нанимателя возникли финансовые трудности, поэтому он не может вам заплатить.|
| 3 |Сотрудник, знакомый с одной из влиятельных семей города, вас невзлюбил.|
| 4 |Ваш наниматель оказался связан с тёмным культом или преступностью. |
| 5 |Банда преступников выбрала ваше дело как цель рэкета.|
| 6 |Вы получили репутацию лентяя (заслуженно или нет – на ваш выбор), следующие 6 проверок для этого вида деятельности в течение шести недель совершаются с помехой.|
Работа с камнем - это искусство обработки камня. Каменщики могут предоставлять квалифицированную рабочую силу для крупномасштабных проектов по обработке камня или создавать статуи и небольшие резные изделия из камня.
```
Модификатор работы с камнем = бонус мастерства инструментов каменщика + модификатор Силы
```
Обычно поиск подходящего места и разбивка лагеря не вызывает трудностей у персонажей и не требует совершения проверок. Но непросто разбить лагерь, если вы полагаетесь только на матушку-природу в предоставлении вам комфортного убежища.
Если у группы нет подходящего лагерного снаряжения для всех персонажей (такого как спальники или палатки) или магического способа обеспечить себе убежище (например, заклинание //Леомундова хижина//), Мастер может потребовать совершить проверку Мудрости (Выживание) с целью поиска природного убежища. Сл проверки определяется по таблице ниже в зависимости от местности.
| !Сл |!Описание окружения|
| 10 |Сухое и безопасное место просто найти / ясная погода|
| 15 |Поиск места для лагеря требует усилий / плохая погода - дождь, снег, туман и т.п.|
| 20 |Безопасное место сложно найти / ужасная погода - ливень, ураган, метель и т.п.|
При успехе вы находите подходящее для ночлега убежище. При провале вы безуспешно теряете 1 час на поиски. Вы можете повторять попытки, теряя по 1 часу на каждый провал. Это время считается временем, проведённым в путешествии, и подвергается правилу [[форсированного марша|Путешествие]].
В течении дня разведчик продвигается вперёд группы и высматривает потенциальную угрозу. Если разведчик провалится, вы можете попасть во вражескую засаду или вляпаться в иную неприятность.
Если вы взяли на себя роль разведчика, вы отвечаете за совершение проверок Мудрости (Внимательность) для обнаружения приближающихся угроз в течении дня. Мастер сообщит вам, если нужно совершить проверку.
''Успех''. Вы заметили угрозу и смогли вовремя предупредить группу. У вас есть шанс полностью избежать угрозы или встретить её на своих условиях.
''Провал''. Вы не успели вовремя заметить опасность, и группу застали врасплох.
Вы можете общаться любыми доступными вам средствами, короткими фразами и жестами.
Любое оружие имеет обозначение размерной категории, указывающее размер существа, для которого это оружие предназначено.
Использование оружия неподходящего размера:
* Маленькие и Средние существа используют оружие одной размерной категории.
* Вы не можете использовать оружие, отличающееся от вашего размера больше чем на одну размерную категорию.
* Лёгкое оружие на размер больше считается для вас одноручным. Вы не можете пользоваться лёгким оружием на размер меньше.
* Одноручное оружие на размер больше считается для вас двуручным. Одноручное оружие на размер меньше считается для вас лёгким.
* Вы не можете пользоваться двуручным оружием на размер больше. Двуручное оружие на размер меньше считается для вас одноручным.
* Атаки оружием, размер которого отличается от размера владельца, совершаются с помехой. Вы можете избавиться от этого минуса, воспользовавшись услугами ремесленников, чтобы подогнать оружие под свой размер. Стоимость этой работы составляет от 5 до 20 процентов от рыночной стоимости предмета.
* Кость урона оружия изменяется с его размером:
** Кость урона Маленького и Среднего оружия указана в колонке Урон таблицы Оружие одинакова для обоих случаев.
** Кость урона Крохотного оружия уменьшается на 1к4, по сравнению с его Маленькой/Средней версией (урон не может быть меньше 1).
** Кость урона Большого оружия увеличивается на 1к4, по сравнению с его Маленькой/Средней версией.
** Кость урона Огромного оружия увеличивается на 2к4, по сравнению с его Маленькой/Средней версией.
<<<
Вы наделяете ваш выстрел энергией силы, почерпнутой из школы воплощения.
<<<
Существо, по которому попал выстрел, и все существа в пределах 2 м от цели получают дополнительно 2к6 урона силовым полем.
После достижения вами 18 уровня в этом классе, дополнительный урон этого выстрела увеличивается до 4к6.
[img [https://i.imgur.com/wJBifzA.png]]
Люди - наиболее распространённый народ в D&D, но они проживают бок о бок с дварфами, эльфами, полуросликами и другими бесчисленными фантастическими расами. Ваш персонаж принадлежит к одному из этих народов.
Не всякая разумная раса подходит для персонажа игрока. Стандартные группы искателей приключений в основном состоят из дварфов, эльфов, полуросликов и людей. Прочие расы и некоторые подрасы (например дроу - разновидность эльфов) встречаются реже.
Выбор расы влияет на разные аспекты вашего персонажа. Он определяет основные качества, которые будут у вашего персонажа на протяжении всей его карьеры. Раса персонажа даёт не только увеличение характеристик и расовые особенности, но также предоставляет зацепки для создания истории персонажа.
В описании каждой расы в этой главе содержится информация, которая поможет отыгрывать персонажа этой расы. Она включает в себя общие сведения о характере, внешнем виде, общественном укладе и преимущественном мировоззрении. Эти подробности — отправная точка для размышлений о вашем персонаже, искатели приключений могут существенно отличаться от среднего представителя своей расы. Для создания предыстории и личности персонажа стоит подумать, почему он не такой, как все.
---
!!!Расовые особенности
В описание каждой расы входят расовые особенности,общие для всех её представителей. Следующие разделы встречаются в описании большинства рас:
''Увеличение характеристик''
Каждая раса увеличивает одно или несколько значений характеристик.
''Возраст''
В этом разделе указывается, в каком возрасте представитель той или иной расы считается взрослым, а также примерная продолжительность его жизни. Вы можете начать игру персонажем любого возраста, и это может послужить обоснованием некоторых значений его характеристик. Например, при игре очень молодым или старым персонажем, возраст может быть причиной низких значений Силы или Телосложения, в то время как зрелый возраст хорошо объясняет высокие показатели Мудрости и Интеллекта.
''Размер''
Персонажи большинства рас считаются Средними. В эту категорию попадают существа ростом от 120 до 250 см. Представители некоторых рас считаются Маленькими (от 65 до 120 см ростом), и из-за этого некоторые правила игры действуют на них по-другому.
''Скорость''
Скорость определяет, как далеко сможет продвинуться персонаж во время сражения.
''Языки''
В зависимости от расы, ваш персонаж может говорить, читать и писать на определённых языках.
''Разновидности''
У некоторых рас есть разновидности. Их представители сочетают в себе качества основной расы с особенностями, присущими только этой разновидности. Отношения между представителями разных разновидностей одной расы могут существенно различаться в зависимости от расы и игрового мира.
---
!!!Перечень рас
<div class="tc-table-of-contents">
<<toc-selective-expandable "Расы" "sort[title]">>
</div>
Реагенты могут быть самыми разными; чаще всего это растения, содержащие некую магическую сущность, но почти так же часто их собирают с различных монстров, склонных к магии. Точный источник реагента обычно не имеет значения, кроме определения его типа, так как используемая часть реагента - это содержащийся в нем фрагмент магии, который извлекается в процессе дистилляции.
Существует множество различных способов приготовления зелья. Соответственно, материалы сортируются по категориям. К ним относятся ''реактивные'', ''целительные'' и ''ядовитые''. Каждый из них обладает стандартной редкостью: обычный, необычный, редкий, очень редкий и легендарный.
Реагенты не могут быть повторно использованы, если они были объединены в другую форму (например, зелья, эссенции или чернила).
Принято считать, что каждый реагент весит 0.2 кг.
Некоторые особые умения, заклинания и ситуации позволяют совершать особые действия, называемые реакциями. Реакция — это мгновенный ответ на срабатывание некоего условия, который может происходить как в ваш, так и в чужой ход. Провоцированная атака, которая будет описана ниже, — самый распространённый пример реакции.
Если вы совершили реакцию, вы не сможете совершить вторую реакцию до начала своего следующего хода. Если реакция прерывала ход другого существа, это существо может продолжить свой ход после реакции.
<<tabs "[tag[Реакции в бою]nsort[]]" "Атака" "$:/state/tab1" "tc-vertical">>
Вы можете действием попытаться оживить существо в состоянии клинической смерти, потратив одно использование //комплекта целителя//. Существо может быть оживлено, если оно мертво не более чем 1 + мод. Телосложения существа (минимум 1) раунд.
Совершите проверку Мудрости (Медицина) со Сл 20. При провале Сл следующей проверки реанимации возрастает на 5. При успехе цель становится ''умирающей'' и может продолжать совершать //спасброски от смерти// в начале каждого своего раунда, пока не провалит один из них, после чего погибает и больше не может быть реанимирована.
Существо не может быть реанимировано повторно, пока не окончит ночлег.
<<<
By carving sigils of strength and power into the air, I support my allies and foretell the doom of my foes.
— Aedar Windblade, sigil carver of the Hidden Grove
<<<
Bereg-arnadh is the ancient eladrin art of drawing calligraphy with a blade. Bodyguards of the legendary eladrin queen Suiradrun were the first to use bereg-arnadh, and the practice has since become more widespread. Practitioners of this arcane tradition inscribe magical, glowing characters of Rellanic script into the air with their blades. These hovering runes are charged with arcane power from the calligrapher. The sigils hover for a short time, emitting a lambent radiance that evokes protection for allies or enmity toward foes.
Your mastery of arcane and martial arts makes you an ideal practitioner of bereg-arnadh. Whether you studied texts to learn the art yourself, or you earned the right to study under a master of bereg-arnadh, you have gained the ability to wield the arcane art on the battlefield. On the tip of your weapon, you sculpt runes, the mere sight of which strikes fear into your adversaries.
''Sigil Carvers in the World:'' The lone traveler walking along a distant, borderland road; a hero described in epic poems by bards; an eladrin with wild hair and glyphs for tattoos; a human youth trained in the Feywild with a skill that few understand-any of these individuals might be a sigil carver. Sigil carvers are more unusual than your average warrior. The combination of mental and physical skills makes a sigil carver a rare find. In the tavern, a sigil carver tends to draw curious glances at the least; more often, a sigil carver is regarded with fear or respect.
A sigil carver might make a living as a scribe, running a magic shop the party wanders into. Perhaps these individuals also possess knowledge of ancient wardings and old magics.
''Sigil Carvers in the Game:'' Sigil carvers are consummate tacticians, and they recognize the value of teamwork. As a result, you focus your arcane talents on preserving allies against foes' attacks. You have learned to create an arcane link between yourself and your enemy. This ancient magic is the sigil carver's aegis, and it allows you to deflect the attack of a foe that dares to assault your allies.
<<<
''Sigil Carver Weapons''
As a sigil carver, a sword might seem the most obvious weapon for drawing runes in the air. However, the look of your runes depends on the type of weapon you're wielding. A piercing weapon might deliver clean elegant lines like those seen in calligraphy. A slashing weapon yields sharp slashing cuts into the air, exaggerated lines that often overlap one another. A bludgeoning weapon appears to leave broad strokes of arcane energy in the air, almost like a massive paint brush.
<<<
!!!Aegis of Shielding
The Spell Carver prestige path enhances the //Aegis of Shielding// arcane exploit. If you are not normally using the book, ''Arcane Exploits'', then consider granting this exploit as the first feature of the Spell Carver.
It is similar to the exploits granted by many prestige paths and rules for them can be found in the ''Prestige Path: Primer''. This exploit, is a little different than most, in that in recharges at the start of each of the character's turns. It also makes use of the Marking variant rule on page 271 of the ''Dungeon Master's Guide.''
<<<
!!!Aegis of Shielding
You create an arcane link between you and an enemy, allowing you to blunt its attacks against your allies.
//Swordmage • Abjuration, Arcane, Utility (Recharges at the start of your turn) //
As a bonus action, you mark one creature you can see within 10 feet. The target remains marked for 1 minute or until you use this exploit against another target. If you mark other creatures using other means, the target is still marked. A creature can be subject to only one mark at a time. A new mark supersedes a mark that was already in place.
If a creature you have marked makes an attack against a creature other than you, it suffers disadvantage on the attack roll. If that attack hits and the marked target is within 50 feet of you, you can use your reaction to reduce the damage dealt by the triggering attack by 1d10 + 2.
The damage reduced by this exploit increases when you reach 5th level (2d10 + 3), 11th level (3d10 + 4), and 17th level (4d10 + 6).
<<<
---
!!Резчик знаков
| !Ранг |!Умения |
| !1 |Aegis Sigil, Bolstering Sigil |
| !2 |Energizing Sigil, Sigil of Safety |
| !3 |Punishing Sigil |
| !4 |Sigil of Enmity |
---
!!!Предварительные условия:
* ''Владение навыками.'' Магия.
* ''Инкантации.'' Арканная инкантация //Aegis of Shielding//.
* ''Особое.'' Победа над врагом только силой оружия, без использования заклинаний.
---
!!Ранг 1
!!!Aegis Sigil
<<<
You etch the air with sigils of power. The runes linger for a moment and then burn into a struck foe.
<<<
//Sigil Carver • Abjuration, Arcane, Offensive, Weapon (Recharges on a short or long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 2d10 damage, and until the end of the target's next turn, it is marked by your aegis of shielding. Marking the target in this way does not remove the mark on another target already affected by your aegis of shielding.
The extra damage increases when you reach 9th level (3d10), 13th level (4d10), and 17th level (5d10).
!!!Bolstering Sigil
Your allies gain a +2 bonus to AC while within 5 feet of you.
---
!!Ранг 2
!!!Energizing Sigil
You can spend an inspiration on your turn (no action required) to grant one ally within 30 feet of you a saving throw against each effect on them that a save can end.
!!!Sigil of Safety
<<<
Just as your ally is about to suffer a blow, you carve a few quick runes in the air and transport the ally out of harm's way.
<<<
//Sigil Carver • Abjuration, Arcane, Teleportation, Utility (Recharges on a short or long rest) //
When an attack hits an ally you can see within 30 feet of you, you can use your reaction before damage is dealt to teleport the triggering ally to an unoccupied space you can see within 30 feet of you. If the target is still within range of the triggering attack, it gains a +4 bonus to AC against the triggering attack, potentially causing it to miss.
---
!!Ранг 3
!!!Punishing Sigil
Whenever an enemy marked by you within 30 feet of you hits an ally who is adjacent to you, you can use your reaction to make a melee weapon attack against that enemy as an opportunity attack. You can make the attack even if the creature is beyond your normal reach.
---
!!Ранг 4
!!!Sigil of Enmity
<<<
Your rune-enhanced weapon strike marks a foe as the nemesis of you and your allies, making attacks against it more potent.
<<<
//Sigil Carver • Arcane, Enchantment, Offensive, Weapon (Recharges on a long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 5d10 damage. In addition, for 1 minute, when any of your allies hits the target with a melee weapon attack during their turn, that attack deals an extra 2d6 damage.
Резьба по дереву - это вид ремесла, связанный с созданием предметов из дерева, в основном это работа с ветвями для изготовления луков, музыкальных инструментов и некоторых простых доспехов. Это простое ремесло, но оно обеспечивает многие предметы первой необходимости, особенно для тех, кто предпочитает действовать на расстоянии. Хороший резчик по дереву никогда не боится, что у него закончатся стрелы, и может легко найти материалы для них.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления предмета в самой простой форме:
* Выберите предмет, который вы хотите изготовить, из таблицы [[Резьба по дереву|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=1547973661]].
* Приобретите предметы, перечисленные в колонке Материалы для этого предмета.
* Используйте свои [[инструменты резчика по дереву|Инструменты резчика по дереву]] для изготовления предмета в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Ловкости + ваш бонус мастерства [[инструментов резчика по дереву|Инструменты резчика по дереву]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Резьба по дереву основана на использовании [[инструментов резчика по дереву|Инструменты резчика по дереву]]. Попытка вырезать предмет из дерева без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на изготовление таких предметов. Резьба по дереву использует ваш модификатор Ловкости.
---
!!!Материалы: древесина
Резьба по дереву немного проще, чем другие виды ремесел, поскольку в ней используется только одна категория материалов: древесина. Она может иметь несколько различных форм, но измеряется в ветвях -
цельных кусках полезной древесины.
---
!!!Проверка ремесла
Когда вы хотите поработать над резьбой по дереву, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор резьбы по дереву = бонус мастерства инструментов резчика по дереву + модификатор Ловкости
```
!!!Успех и провал
Для резьбы по дереву, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Резные ветви
Резчики по дереву могут увеличить редкость ветви с помощью искусной техники резьбы. Деревянная ветвь более высокого качества полученная с помощью резьбы по дереву, не может быть использована в качестве материала для изготовления ветви еще более высокой редкости, но в остальном резная ветвь служит в качестве ветви своей конечной редкости для ремесла (например, для Зачаровывания или других изделий из дерева, для которых требуется ветвь этой редкости).
//Требование: 17 уровень//
Вы можете потратить 5 очков ци, чтобы сотворить заклинание //огненная стена//.
Иногда лучшее, что можно сделать между приключениями, это отдохнуть. Независимо от того, хочет персонаж получить свой заработанный тяжким трудом отпуск или просто оправиться от травм, рекреация – идеальный вариант для искателей приключений, которым нужен перерыв. Этот вариант также идеально подходит игрокам, которые не хотят использовать систему деятельности на отдыхе.
//''Ресурсы''//. Рекреация занимает одну неделю. Персонаж должен поддерживать хотя бы скромное существование во время отдыха, чтобы получить преимущества от этой деятельности.
//''Определение результата''//. Персонажи, которые поддерживают хотя бы скромное существование во время рекреации, получают несколько преимуществ. Во время отдыха персонаж получает преимущество на спасброски против долгодействующих болезней и ядов.
Кроме того, в конце недели персонаж может завершить действие одного эффекта, который мешает персонажу восстанавливать хиты, или может восстановить одну характеристику, значение которой было опущено ниже нормального значения. Это преимущество не может быть использовано, если вредоносный эффект был вызван заклинанием или иным постоянно действующим магическим эффектом.
//''Осложнения''//. Рекреация редко приводит к осложнениям.
Религиозные персонажи могут посвятить время простоя служению храму, помогая в проведении обрядов или проповедуя в народе. Тот, кто занимается этой деятельностью, может получить благосклонность высших иерархов храма.
//''Ресурсы''//. Выполнение религиозной службы требует доступа в храм и частых его посещений. Вера и мораль храма должны совпадать с верой и моралью персонажа. Если такое место доступно, деятельность занимает одну неделю, но не требует расходов в виде серебра.
//''Определение результата.''// В конце затраченного времени персонаж выбирает, какую проверку совершить – Интеллекта (Религия) или Харизмы (Убеждение). Результат проверки определяет полученные преимущества в соответствии с таблицей ниже.
| !Результат |!Последствия|
| 1-10 |Нет эффекта. Ваши усилия не производят стойкого впечатления.|
| 11-20 |Вы получаете одну благосклонность.|
| 21+ |Вы получаете две благосклонности.|
В общем смысле благосклонность – это обещание помощи от представителей храма. Его можно потратить на помощь храма в решении конкретной проблемы, на политическую или социальную поддержку со стороны храма или на снижение стоимости жреческого заклинания в 2 раза. Благосклонность может также принимать форму божественного вмешательства, такую как предзнаменование, видение или незначительное чудо, случившееся в ключевой момент. Таким образом благосклонность тратится по решению Мастера, он также определяет ее характер.
Заработанную благосклонность не нужно тратить немедленно, но хранить можно только определённое их количество. Персонаж может иметь максимальное количество неиспользованных благосклонностей, равное 1 + модификатор Харизмы (минимум 1).
//''Осложнения''//. Храмы могут быть лабиринтами политических и социальных интриг. Даже действующее из самых добрых побуждений религиозное течение может впасть во внутренние склоки. Служащий храму персонаж рискует быть втянутым в эти дрязги. За каждую неделю, потраченную на религиозное служение, с вероятностью 10% может возникнуть осложнение, примеры которых приведены в таблице ниже.
| !к6 |!Осложнение |
| 1 |Вы оскорбили священника словом или делом.|
| 2 |Богохульство всегда богохульство, даже случайное. |
| 3 |Секретная секта, находящаяся в храме, предлагает вам членство. |
| 4 |Другой храм пытается завербовать вас в качестве шпиона.|
| 5 |Старейшины храма умоляют вас взяться за выполнение священной миссии. |
| 6 |Вы случайно обнаружили что одна из ключевых фигур храма – дьяволопоклонник. |
<div class="tc-table-of-contents">
<<toc-selective-expandable "Ремесло">>
</div>
Ремонтное дело - это применение творческого подхода к хламу для создания новых вещей. Иногда даже полезных новых вещей. Начиная от скромных поделок и заканчивая сложными устройствами, ремонтное дело - это обширная область, из которой может извлечь пользу любая группа приключенцев.
Зачастую это сфера деятельности торговцев и странников, которые обладают широким набором навыков и, как правило, работают с ограниченными ресурсами и своей смекалкой, а не с перечнем дорогих материалов. Многие скажут, что у них есть плохая привычка собирать слишком много хлама с мыслью, что вещи могут пригодиться, когда вы меньше всего этого ожидаете...
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления предмета в самой простой форме:
* Выберите предмет, который вы хотите изготовить, из таблицы [[Ремонтное дело|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=2017284789]].
* Приобретите предметы, перечисленные в колонке Материалы для этого предмета.
* Используйте свои [[инструменты ремонтника|Инструменты ремонтника]] для изготовления предмета в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Интеллекта + ваш бонус мастерства [[инструментов ремонтника|Инструменты ремонтника]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Ремонтное дело основано на использовании [[инструментов ремонтника|Инструменты ремонтника]]. Попытка изготовить предмет из Ремонтного дела без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на изготовление таких предметов. Ремонтное дело использует ваш модификатор Ловкости.
В большинстве случаев ремонтникам для работы требуется лишь минимальный жар от огня и их инструменты, однако любое ремесло, для которого требуется слиток, может нуждаться в кузнице (по усмотрению Мастера).
---
!!!Материалы: детали и обрезки
В Ремонтном деле используются металлические обрезки, различные детали (называемые просто "деталями") и, в случаях создания более магически действующих вещей, эссенции для придания им силы. Термин "детали" используется для обозначения шестеренок, проводов, пружин, заводных частей, винтов, гвоздей и прочего. Детали могут быть найдены, извлечены или выкованы из металлических обрезков (или даже прямо из слитков кузнецом). Точная природа каждого предмета, составляющего эту коллекцию, остается абстрактной.
Металлические обрезки - это груды использованных материалов, обычно попадающих в категорию вещей "слишком маленьких, чтобы отслеживать", которые затем могут быть использованы для творений ремонтников. В дополнение ко всему этому, иногда ремонтники используют слитки, особенно олова.
Как и в других ветвях ремесла, здесь также используются именные компоненты для более знаковых предметов снаряжения - деревянная ложа, например. Стоимость этих предметов можно найти в таблице [[Материалы|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=2046152386]], и, как правило, она невелика.
И наконец, ремонтники используют эссенции при создании вещей, выходящих за рамки обыденных принципов правдоподобия, встраивая магические свойства в свои изобретения.
<<<
''//Именные компоненты//''
//Почти во всех случаях именные компоненты (например, "деревянная ложа" для арбалета) можно просто абстрагировать как незначительную трату, но, как всегда, уровень абстракции зависит от Мастера. //
<<<
---
!!!Проверка ремесла
Когда вы хотите поработать над ремонтным делом, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор ремонтного дела = бонус мастерства инструментов ремонтника + модификатор Интеллекта
```
!!!Успех и провал
Для ремонтного дела, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Спасбросок ремонтного дела
Некоторые приспособления, создаваемые ремотниками, требуют совершения спасброска. В таких случаях для расчета Сл спасброска используется следующая формула.
```
Сл спасброска ремонтного дела = 8 + бонус мастерства инструментов ремонтника + модификатор Интеллекта
```
Спасбросок рассчитывается в момент создания предмета на основе характеристик и бонуса мастерства создателя и не меняется после создания. Спасбросок не включает в себя компетентность и прочие бонусы к броску ремесла.
---
!!!Модификаторы и улучшения
Вы можете изготавливать особые варианты стандартной экипировки, используя различные модификаторы изготовления, а также впоследствии улучшать их. Эти модификаторы и улучшения подчиняются следующим правилам:
* Приступая к изготовлению предмета вы можете добавить ему один модификатор изготовления.
* При добавлении модификаторов Сл каждой проверки ремесла увеличивается как указано в соответствующих таблицах.
* Указанная стоимость готовых предметов с модификаторами и улучшениями является ориентиром для Мастера. Такие предметы могут быть как широко распространены, так почти также редки как магические, и их цена может резко разниться.
* Проваленная проверка ремесла при изготовлении //превосходного// или //мастерского// предмета не является таковой, если её результат удовлетворяет обычной Сл изготовления предмета. Готовый предмет считается //превосходным// или //мастерским//, если все успешные проверки при его изготовлении соответствовали модифицированной сложности. Таким образом, например, в результате изготовления //мастерского// предмета вы можете получить //превосходный// предмет, если вы провалили одну или несколько проверок при его изготовлении, но они всё ещё удовлетворяли Сл изготовления //превосходного// варианта.
Когда вы совершаете дальнобойную атаку этим оружием, вы можете выбрать для неё вторую цель в пределах 2 м от первой, используя один и тот же бросок атаки и бросок урона для обеих целей; наносимый урон уменьшается вдвое для второй цели. Это оружие возвращается в вашу руку после совершения им дальнобойной атаки.
Вы можете действием на некоторое время взять под контроль расположенные в пределах 6 м от вас стихийные силы, чтобы вызвать один из следующих эффектов (на ваш выбор):
* Вы создаёте безвредный мгновенный сенсорный эффект, связанный с водой, воздухом, землёй или огнём, такой как сноп искр, дуновение ветра, поток лёгкого тумана или тихая дрожь камня.
* Вы мгновенно разжигаете или тушите свечу, факел или небольшой костёр.
* Вы нагреваете или остужаете до 1 кг неживой материи на время до 1 часа.
* Вы заставляете землю, огонь, воду или туман, умещающиеся в куб с ребром 30 см, принять выбранную вами грубую форму на 1 минуту.
Вы можете действием переместиться в пространство согласного дееспособного существа, находящегося в пределах 1 м от вас. Существо перемещается в пространство, которое вы занимали до этого. Вы и перемещаемое существо должны умещаться (не протискиваться) в пространство, в которое перемещаетесь. Это перемещение не провоцирует атаки, не должно тратить дополнительную скорость (труднопроходимая местность, карабканье, ползание и т.п.), а ваша скорость и скорость существа должна быть выше 0.
Вы можете использовать к6 вместо обычной кости урона ваших безоружных ударов и контактного оружия. Когда вы успешно захватываете цель, вы можете нанести ей 1к4 дробящего урона. Пока вы удерживаете цель в захвате, вы можете наносить ей этот урон всякий раз, когда попадаете по ней рукопашной атакой.
<<<
Магия этой руны воплощает в себе рассудительность, присущую каменным великанам.
<<<
Когда вы носите или несете предмет с этой руной, вы совершаете проверки Мудрости (Проницательность) с преимуществом и получаете ночное зрение с радиусом 40 м.
Кроме того, когда видимое вами существо заканчивает свой ход в пределах 6 м от вас, вы можете реакцией задействовать руну и вынудить его совершить спасбросок Мудрости. При провале существо [[очаровано|Очарованный]] вами на 1 минуту. Пока существо очаровано таким образом, его скорость равна 0, оно [[недееспособно|Недееспособный]] и впадает в сонное оцепенение. Существо повторяет спасбросок Мудрости в конце каждого своего хода, оканчивая эффект при успехе. Вы не можете задействовать эту руну повторно, пока не завершите короткий или продолжительный отдых.
<<<
Магия этой руны напоминает о могуществе тех, кто выживает в холодных пустошах, таких как ледяные великаны.
<<<
Когда вы носите или несете предмет с этой руной, вы совершаете проверки Мудрости (Уход за животными) и Харизмы (Запугивание) с преимуществом.
Кроме того, вы можете бонусным действием задействовать эту руну и на 10 минут получить бонус +2 к проверкам характеристик и спасброскам, использующим Силу или Телосложение. Вы не можете задействовать эту руну повторно, пока не завершите короткий или продолжительный отдых.
<<<
Эта руна имитирует обманчивую магию, используемую некоторыми облачными великанами.
<<<
Когда вы носите или несете предмет с этой руной, вы совершаете проверки Ловкости (Ловкость рук) и Харизмы (Обман) с преимуществом.
Кроме того, когда по вам или видимому вами существу в пределах 6 м от вас попадают атакой, вы можете реакцией задействовать руну и выбрать другое существо в пределах 6 м от вас, кроме атакующего. Выбранное существо становится целью этого броска атаки. Эта магия может передавать эффекты атаки независимо от ее дальности. Вы не можете задействовать эту руну повторно, пока не завершите короткий или продолжительный отдых.
<<<
Магия этой руны воплощает в себе мастерство великих кузнецов.
<<<
Когда вы носите или несете предмет с этой руной, ваш бонус мастерства для любых проверок, использующих ваше владение инструментами, удваивается.
Кроме того, когда вы попадаете по существу атакой оружием, вы можете задействовать эту руну, чтобы вызвать огненные оковы: цель получает дополнительно 2к6 урона огнём, и должна преуспеть в спасброске Силы, иначе она станет [[опутана|Опутанный]] на 1 минуту. Пока цель опутана оковами, она получает 2к6 урона огнём в начале каждого своего хода. В конце каждого своего хода цель может повторить спасбросок Силы, уничтожая оковы при успехе. Вы не можете задействовать эту руну повторно, пока не завершите короткий или продолжительный отдых.
//7 уровень или выше//
<<<
Магия этой руны наделяет вас стойкостью холмового великана.
<<<
Когда вы носите или несете предмет с этой руной, вы совершает спасброски с целью избежания или окончания состояния [[Отравленный]] на себе с преимуществом. Кроме того, вы получаете сопротивление к урону ядом.
Кроме того, вы можете бонусным действием задействовать эту руну и на 1 минуту получить сопротивление к дробящему, колющему и режущему урону. Вы не можете задействовать эту руну повторно, пока не завершите короткий или продолжительный отдых.
//7 уровень или выше//
<<<
Используя эту руну, вы можете предвидеть будущее, подобно прорицателю штормовых гигантов.
<<<
Когда вы носите или несете предмет с этой руной, вы совершаете проверки Интеллекта (Магия) с преимуществом, и вас не могут застать врасплох, пока вы дееспособны.
Кроме того, вы можете бонусным действием задействовать эту руну и войти в пророческое состояние на 1 минуту, либо пока не станете [[недееспособным|Недееспособный]]. Пока это состояние не окончится, когда вы или другое видимое вами существо в пределах 12 м от вас совершает бросок атаки, проверку характеристик или спасбросок, вы можете реакцией дать преимущество или помеху на этот бросок. Вы не можете задействовать эту руну повторно, пока не завершите короткий или продолжительный отдых.
Рунное дело - это искусство нанесения специальных магических усилений в виде рун. Это символические изображения, которые направляют и концентрируют энергию для придания особого магического эффекта предмету, на который они нанесены.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги нанесения рун в самой простой форме:
* Выберите предмет, на который вы хотите нанесити руну. Это может быть обычный предмет, драгоценный камень, немагическое оружие или немагические доспехи.
* Выберите руну, которую вы хотели бы нанести на этот предмет, из таблицы [[Рунное дело|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=46497658]] в зависимости от типа предмета.
* Приобретите предметы, перечисленные в колонке Материалы для этой руны.
* Используйте свои соответствующие инструменты для нанесения руны в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор соответствующей характеристики + ваш бонус мастерства соответствующих инструментов).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Вырезание рун представлено двумя различными традициями; вы можете наносить руны любой из них, но для этого требуются разные инструменты и характеристики.
''Древняя традиция''
Руны великанов, дварфов и других древних традиций. Древняя традиция рунного дела использует ваш модификатор Мудрости, а соответствующий инструмент вы можете выбрать из [[инструментов каменщика|Инструменты каменщика]] или [[инструментов художника|Инструменты художника]].
''Академическая традиция ''
Руны магов, учёных и эльфов, эти традиции не обязательно менее древние, но мастера рун этих традиций стремятся к новым знаниям и самовыражению, а не укореняются в старых традициях. Академическая традиция рунного дела использует ваш модификатор Интеллекта, а соответствующий инструмент вы можете выбрать из [[инструментов каллиграфа|Инструменты каллиграфа]] или [[инструментов резчика по дереву|Инструменты резчика по дереву]].
---
!!!Материалы
Рунное дело использует в основном магические чернила и эссенции, чтобы придать рунам необходимые магические свойства.
---
!!!Проверка ремесла
Когда вы хотите поработать над рунным делом, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор древней традиции рунного дела = бонус мастерства инструментов каменщика или художника + модификатор Мудрости
```
```
Модификатор академической традиции рунного дела = бонус мастерства инструментов каллиграфа или резчика по дереву + модификатор Интеллекта
```
!!!Успех и провал
Для рунного дела, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Спасбросок рунного дела
Некоторые руны требуют совершения спасброска. В таких случаях для расчета Сл спасброска используется следующая формула.
```
Сл спасброска рунного дела = 8 + бонус мастерства соответствующих инструментов + модификатор соответствующей характеристики
Модификатор броска атаки рунного дела = бонус мастерства соответствующих инструментов + модификатор соответствующей характеристики
```
Спасбросок рассчитывается в момент создания предмета на основе характеристик и бонуса мастерства создателя и не меняется после создания. Спасбросок не включает в себя компетентность и прочие бонусы к броску ремесла.
---
!!!Нанесение руны
Вы можете нанести руну на немагическое оружие, комплект доспехов или предмет. После того как вы нанесете руну на предмет, этот предмет будет требовать настройку. Когда на него настроено существо, руна дает владельцу некоторые преимущества, определенные руной. При нанесении руны на предмет он становится магическим предметом такой же редкости, как и нанесенная на него руна.
!!!Руны на магических предметах
Нанести руну на магический предмет чрезвычайно сложно. Магические предметы сопротивляются модификации, а их магия противодействует руне. Это может быть сделано с дополнительной сложностью в соответствии с приведенной ниже таблицей. Если предмет требует настройку, руна все равно требует отдельной настройки.
|!Редкость предмета | !Мод. Сл руны |
|Обычный | +5 |
|Необычный | +7 |
|Редкий | +10 |
|Очень редкий | +14 |
|Легендарный | +20 |
Рунные рыцари укрепляют свое боевое мастерство, используя сверхъестественную силу рун, - древнюю практику, которая зародилась у великанов. Мастеров по вырезанию рун можно найти в любой семье великанов, и вы, скорее всего, научились своим техникам из первых или вторых рук такого таинственного ремесленника. Нашли ли вы работу великана, высеченную на холме или в пещере, узнали ли о рунах от мудреца или встретили великана лично, вы изучили его ремесло и научились применять магические руны для усиления своего снаряжения.
---
!!! [img[3.png]] Дополнительные владения
Вы получаете владение [[инструментами кузнеца|Инструменты кузнеца]], и можете говорить, читать и писать на Великаньем языке.
---
!!! [img[3.png]] Могущество великана
<<<
Вы научились наделять себя могуществом великанов.
<<<
Бонусным действием вы можете магическим образом получить следующие преимущества на 1 минуту:
* Если ваш размер Средний или меньше, вы становитесь Большим вместе со всем, что вы носите. Если вам не хватает места, чтобы стать Большим, ваш размер не меняется.
* Вы совершаете проверки и спасброски Силы с преимуществом.
* Раз в ход, вы можете нанести дополнительно 1к6 урона одной из ваших атак оружием или безоружных атак.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[3.png]] Рунный резчик
<<<
Вы можете использовать магические руны для улучшения своего снаряжения.
<<<
Вы изучаете две руны по своему выбору, из числа описанных ниже, и, каждый раз, когда вы получаете уровень в этом классе, вы можете заменить одну известную вам руну на другую из этой характеристики. Когда вы достигаете определенных уровней в этом классе, вы изучаете дополнительные руны, как показано в таблице ниже.
| !Ур. воина | !Кол-во рун |
| 3 | 2 |
| 7 | 3 |
| 10 | 4 |
| 15 | 5 |
Каждый раз, когда вы завершаете продолжительный отдых, вы можете коснуться нескольких предметов, равных количеству известных вам рун, и нанести на каждый из них разные руны. Чтобы соответствовать требованиям, предмет должен быть оружием, доспехом, щитом, украшением или чем-то еще, что можно носить или держать в руке. Одновременно на предмете может находиться только одна из ваших рун, и она остаётся на предмете до тех пор, пока вы не завершите продолжительный отдых.
При изучении руны вам доступны следующие варианты рун. Если у руны есть требование к уровню, то для изучения руны вы должны быть не ниже этого уровня в этом классе. Если руна требует спасброска, его Сл равна 8 + ваш бонус мастерства + ваш модификатор Телосложения.
<<tabs "[tag[Руна]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!! [img[7.png]] Рунический щит
<<<
Вы научились использовать магию рун для защиты своих союзников.
<<<
Когда другое видимое вами существо в пределах 12 м от вас становится целью броска атаки, вы можете реакцией заставить атакующего перебросить к20 и использовать новое значение.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Великая стать
<<<
Магия ваших рун навсегда изменяет вас.
<<<
Когда вы получаете это умение, совершите бросок 5к6. Ваш рост увеличивается на количество см, равное выпавшему значению.
Кроме того, дополнительный урон, наносимый вами с помощью умения Могущество великана увеличивается до 1к8.
---
!!! [img[15.png]] Мастер рун
Вы можете вызывать каждую руну, которую вы знаете благодаря своему умению Рунный резчик, дважды, а не один раз. Потраченные использования этого умения восстанавливаются после завершения короткого или продолжительного отдыха.
---
!!! [img[18.png]] Рунический крушитель
<<<
Вы научились усиливать свою руническую трансформацию.
<<<
Дополнительный урон, наносимый вами с помощью умения Могущество великана увеличивается до 1к10. Кроме того, когда вы используете это умение, ваш размер может увеличиться до Огромного, а пока вы такого размера, ваша досягаемость увеличивается на 1 м.
Вы игнорируете ограничение на количество атак в свойстве "механическое". Вам не требуется свободная рука для перезарядки этого оружия. Один раз в ход, когда вы совершаете атаку этим оружием частью действия [[Атака]], если у вас нет помехи на бросок этой атаки, вы можете дать себе помеху на эту атаку, чтобы совершить частью этого действия дополнительную атаку этим оружием с помехой.
Если вы совершаете действие Рывок, вы получаете дополнительное перемещение в текущем ходу, равное вашей скорости после применения всех модификаторов.
<<<
Begone devils! You have no power here!
— Knight Commander Cassiah
<<<
Devils scheme amid the layers of the Nine Hells and infest the world with evil. You are sworn to protect innocents from their infernal machinations. To this end, you have joined an order of like-minded warriors.
The Knights of the Chalice take their order's name from an artifact belonging to the deity slain by Asmodeus when he ascended to godhood. It is rumored that with a single draught of water from the chalice of that deity, the drinker can atone for any wrong and completely purify his or her soul. Some say that drinking from the cup can turn any being, even Asmodeus himself, from evil to good. Whether or not these tales of these legendary properties are true, the chalice is undoubtedly a powerful artifact for good, and many Knights of the Chalice seek it. Some pursue a loftier goal still: to resurrect the chalice's divine owner and restore him to his throne.
As a Knight of the Chalice, you remain vigilant for any signs of infernal activity. You aid all of good heart who stand in the path of devilish influence, and you answer the call of your fellow knights when the powers of the Nine Hells gather in force.
''Knights of the Chalice in the World:'' A knight of the Chalice is a member of an elite knightly organization devoted to fighting demons and other evil outsiders. Motivated by a pious hatred of these creatures that embody the principles of evil and routinely invade the Material Plane, Knights of the Chalice learn tactics and gain special abilities to help them in their crusade.
''Adaptation:'' Knights of the Chalice are often lone crusaders, maintaining only loose connections to their order. NPC knights sometimes gather adventuring bands around themselves for combat support. A knight of the Chalice could become a temporary ally of a group of adventurers while the party is engaged in a campaign against a demon.
---
!!Рыцарь Чаши
| !Ранг |!Умения |
| !1 |Ensnaring Judgment, Fiendslaying, Saving Inspiration |
| !2 |Heavenly Courage |
| !3 |Aura Suppression, Consecrated Casting |
| !4 |Blessing of the Chalice |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Законно-доброе.
* ''Владение навыками.'' Религия.
* ''Особое.'' Должен быть членом законно-доброй церкви или религиозного ордена.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Ensnaring Judgment
<<<
You bind your foe with ancient magic used to imprison demons and devils.
<<<
//Tier 1 Prayer (Recharges on a short or long rest)//
When you hit a creature with a melee attack using a weapon, the target is restrained until the end of your next turn.
If the target is a fiend, it takes an extra 2d10 damage and for 1 minute, it can't teleport. The target can make a Wisdom saving throw at the end of each of its turns, ending the effect on a success.
The extra damage this prayer does against fiends increases when you reach 5th level (3d10), 11th level (4d10), and 17th level (6d10).
!!!Fiendslaying
Whenever you deal damage to a fiend with an attack roll or the result of a failed saving throw, the target takes an extra 1d6 damage.
This extra damage increases when you reach 5th level (2d6), 11th level (3d6), and 17th level (4d6).
!!!Saving Inspiration
When you spend an inspiration for any reason, you can also making a saving throw against each effect on you that a save can end. If an effect was caused by a fiend, you gain advantage on the saving throw against that effect.
---
!!Ранг 2
!!!Heavenly Courage
You are immune to charm, dominate, and fear effects cast or created by fiends.
At tier 4, this effect extends to any allies within 10 feet of you.
---
!!Ранг 3
!!!Aura Suppression
When you hit any creature that has an aura with an attack, the aura is suppressed until the end of your next turn.
!!!Consecrated Casting
<<<
The attacks, spells, and abilities you use on fiends are harder to resist.
<<<
When a fiend makes a saving throw against an effect you've created, you can add your proficiency bonus twice to the DC of the saving throw.
Additionally, you can add your proficiency bonus on any ability check made to dispel or counterspell magical effects created by fiends.
---
!!Ранг 4
!!!Blessing of the Chalice
<<<
Invoking the power of your order's oath, you infuse your weapon with holy light to thwart your enemy.
<<<
//Tier 4 Prayer (Recharges on a long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 1d10 radiant damage, and the target suffers disadvantage on attack rolls for 1 minute. If the target is a fiend, it also takes 2d4 radiant damage at the beginning of each of its turns for 1 minute. The target can make a Constitution saving throw at the end of each of its turns, ending both effects on a success.
The extra damage dealt by the initial hit of this prayer increases when you reach 5th level (3d10), 11th level (4d10), and 17th level (6d10).
The radiant damage fiends suffer at the start of their turn increases when you reach 5th level (2d6), 11th level (2d8), and 17th level (2d12).
Если вы совершаете бросок атаки, используя свои психические клинки, и промахиваетесь по цели, то вы можете совершить бросок одной Кости Псионической энергии и добавить выпавший результат к броску атаки. Если вы попадаете атакой с использованием этого бонуса, то ваша Кость Псионической энергии расходуется.
Драконорождённые, несущие в себе наследие самоцветных драконов, являются последователями тех, кто называет себя наследниками рубинового дракона по имени Сардиор. Цвета и мистические силы самоцветных драконов — аметистового, кристального, изумрудного, сапфирового и топазового — видны на их чешуе и струятся по венам этих драконорождённых. Они — это чудеса разума, сила воли, слепящий свет проницательности, громогласное эхо открытий и затухание отчаянья.
|!Особенность |!Описание |<|
|^Увеличение характеристик |^Значение вашего Интеллекта или Мудрости на ваш выбор увеличивается на 1. |<|
|^Наследие самоцветного дракона |^Ваш предок - самоцветный дракон даровал вам особую магическую предрасположенность. Выберите один вид дракона из таблицы ниже. Ваш выбор определяет вид урона для других ваших особенностей. |<|
|~|^!Дракон |^!Вид урона |
|~|^Аметистовый |^Силовое поле |
|~|^Изумрудный |^Психическая энергия |
|~|^Кристальный |^Излучение |
|~|^Сапфировый |^Звук |
|~|^Топазовый |^Некротическая энергия |
|^Сопротивление дракона |^Вы получаете сопротивление к урону того вида, который указан в вашем Наследии самоцветного дракона. |<|
|^Псионический разум |^Вы можете посылать телепатические сообщения видимому вами существу в пределах 6 м от вас. Вам не нужно знать общий с существом язык для того, чтобы оно понимало ваши телепатические сообщения, но существо должно быть способно понимать как минимум один язык. |<|
Самурай - это воин, который одерживает верх над врагами, опираясь на свой неукротимый боевой дух. Решимость самурая почти несокрушима, и у врагов на его пути есть два варианта: сдаться или погибнуть в бою.
---
!!! [img[3.png]] Дополнительные владения
Вы получаете владение одним из следующих навыков на ваш выбор: Выступление, История, Проницательность или Убеждение.
В качестве альтернативы вы можете выучить один язык на ваш выбор.
---
!!! [img[3.png]] Боевой дух
<<<
Ваша собранность в битве может помочь вам защититься и нанести точный удар.
<<<
Бонусным действием вы можете дать себе преимущество на броски атаки до конца этого хода. При этом вы так же получаете 5 временных хитов. Количество временных хитов увеличивается, когда вы достигаете определенных уровней в этом классе, увеличиваясь до 10 на 10 уровне и 15 на 15 уровне.
Вы можете использовать это умение три раза. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[7.png]] Элегантный придворный
<<<
Ваши воинская дисциплина и внимание к деталям позволяют вам преуспевать в социальных ситуациях.
<<<
Каждый раз, когда вы совершаете проверку Харизмы (Убеждение), вы получаете бонус к проверке, равный вашему модификатору Мудрости.
К тому же ваш самоконтроль позволил вам получить владением спасбросками Мудрости. Если у вас уже есть это владение, вы получаете владение спасбросками Интеллекта или Харизмы (на ваш выбор).
---
!!! [img[10.png]] Неутомимый дух
Если на момент броска инициативы у вас не осталось непотраченных использований Боевого духа, вы получаете одно.
---
!!! [img[15.png]] Стремительный удар
<<<
Вы научились жертвовать точностью для совершения более быстрых ударов.
<<<
Один раз в свой ход, если вы совершаете атаку, и у вас есть преимущество на бросок атаки, вы можете отказаться от преимущества и совершить ещё одну атаку оружием по этой цели частью того же действия.
---
!!! [img[18.png]] Стойкость перед смертью
<<<
Ваш воинственный дух может отсрочить наступление смерти.
<<<
Если урон опускает ваши хиты до 0, но не убивает вас, вы можете использовать свою реакцию, чтобы отсрочить потерю сознания и немедленно сделать дополнительный ход, прервав текущий ход. Если вы получаете урон во время этого хода, когда у вас уже 0 хитов, вы получаете проваленный спасбросок от смерти. В случае трёх провалов вы умираете. Если к завершению этого хода у вас всё ещё 0 хитов, вы теряете сознание.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
Сапожное дело - это искусство изготовления туфель и сапог, обычно из кожи. Достаточно узкое, но иногда полезное ремесло - в конце концов, большинство искателей приключений и простых людей предпочитают носить обувь. Зачастую это лучший способ изготовления сапог, пригодных для магических чар.
```
Модификатор сапожного дела = бонус мастерства инструментов сапожника + модификатор Ловкости
```
* Вы способны перемещаться только ползком, пока не встанете, прервав тем самым это состояние.
* Вы совершаете броски атаки с помехой.
* Броски рукопашных атак по вам совершаются с преимуществом.
* Броски дальнобойных атаки по вам совершаются с помехой, если только атакующий не находится на высоте не менее 5 м над вами.
Вы можете попытаться собрать яд со свежеубитых ядовитых существ. Сбор яда требует наличия [[инструментов отравителя|Инструменты отравителя]] и занимает 10 минут. Совершите проверку Интеллекта (Природа) с использованием [[инструментов отравителя|Инструменты отравителя]] против Сл спасброска от яда за каждое существо. При успехе вы собираете одну дозу яда (100г). При провале яд теряется, а если вы не владеете [[инструментами отравителя|Инструменты отравителя]], вы подвергаетесь эффекту яда.
Вы можете действием покрыть одной дозой собранного яда одно колющее или рубящее рукопашное оружие, либо три боеприпаса. Нанесённый яд эффективен 1 минуту, либо пока вы не попадёте атакой оружием или боеприпасом, покрытым им.
| !_к100_ |!Событие |
| 01-05 |Вы были околдованы феей и пленены на 1к6 лет, прежде чем сумели освободиться. |
| 06-10 |Вы видели демона и сумели сбежать прежде, чем он смог что-либо совершить с вами. |
| 11-15 |Вы были соблазнены дьяволом. Совершите спасбросок Мудрости со Сл 10. При провале вы должны дьяволу услугу и начинаете игру с дополнительными 1к20 + 50 см. |
| 16-20 |Однажды утром вы проснулись за много километров от вашего дома, не имея понятия, как это случилось. |
| 21-30 |Вы посетили некое священное место, где почувствовали божественное присутствие. |
| 31-40 |Вы видели красную комету, лицо, появившееся среди метели, или другое странное событие. Для вас очевидно, что это – некое предзнаменование. |
| 41-50 |Вы избежали верной гибели и верите, что вас спасло вмешательство божества. |
| 51-60 |Вы стали свидетелем небольшого чуда. |
| 61-70 |Вы исследовали пустующий дом и обнаружили, что он населён призраками. |
| 71-75 |Вы были недолго одержимы некой сущностью. Бросьте к6, чтобы определить тип сущности: 1 – небожитель; 2 – дьявол; 3 – демон; 4 – фея; 5 – элементаль; 6 – нежить. |
| 76-80 |Вы видели привидение. |
| 81-85 |Вы видели упыря, пожирающего мёртвое тело. |
| 86-90 |Небожитель или божество посетили вас в ваших снах, чтобы предупредить о надвигающейся угрозе. |
| 91-95 |Вы ненадолго оказались в Стране Фей или в Царстве Теней. |
| 96-00 |Вы видели портал, который, по вашему убеждению, ведёт на другой план существования. |
Ваш ход может содержать множество других мелких действий, не являющихся притом перемещением.
<<tabs "[tag[Свободное действие]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
//''Внезапное''//. Вы игнорируете бонус к КД от щита цели, совершая рукопашную атаку этим оружием.
---
//''Грубое''//. Вы используете модификатор Силы при совершении бросков атаки и урона этим оружием.
---
//''Длинное''//. Досягаемость этого оружия равна 2 м, но вы совершаете с помехой атаки по целям, находящимся в пределах 1 м от вас. Это свойство игнорируется при езде верхом.
---
//''Закреплённое''//. Вас нельзя лишить этого оружия особой атакой Обезоруживание, кроме как критическим попаданием.
---
//''Летальное''//. При критическом попадании этим оружием вы совершаете бросок по таблице критических попаданий с преимуществом.
---
//''Механическое''//.
* Вы не добавляете модификатор характеристики к броскам урона этим оружием.
* Из-за долгой перезарядки этого оружия вы можете выстрелить из него только один боеприпас одним действием, бонусным действием или реакцией, вне зависимости от количества положенных атак.
* Вы не получаете помеху на броски атаки этим оружием из-за того, что лежите ничком.
---
//''Обезоруживающее''//. Вы совершаете особые атаки Обезоруживание этим оружием с преимуществом.
---
//''Особое.''// Оружие с этим свойством используется по специальным правилам, указанным в его описании.
---
//''Подсекающее''//. Вы получаете преимущество на проверку Силы (Атлетика) при совершении особой атаки Толкание этим оружием с намерением сбить цель с ног.
---
//''Скрытное''//. Вы получаете преимущество на проверку Ловкости (Скрытность) при попытке спрятать это оружие на себе.
---
//''Хрупкое''//. Если вы выбрасываете «1» при броске атаки этим оружием, оно ломается. Атаки сломанным оружием совершаются с помехой. Если вы выбрасываете «1» при броске атаки сломанным оружием, оно уничтожается.
<<tabs "[tag[Священная клятва]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Чародеи этого происхождения питаются глубокой связью с необработанной арканной энергией, их душа затронута сырым материалом самого плетения. Большинство из них не понимают своей связи с этой силой, но они могут овладеть ею с врожденной легкостью, манипулируя магией только силой воли.
Иногда природа этого искусственна - например, кованые могут черпать силу из своего арканного сердца, - а в других случаях это знак того, что кто-то подвергся воздействию сырой сущности эфира, влившись в него и неразрывно связавшись с ним. Для них характерно легкое сродство к искажающей магии и простота манипулирования ею в ее сырых и чистых формах.
Ниже перечислены некоторые опциональные причуды для чародея Сердца эфира. Вы можете самостоятельно выбрать причуду для вашего персонажа или определить её случайным образом по таблице.
| !к6 |!Причуда |
| 1 |Пребывание в зоне высокой магии похоже для вас на приятное принятие солнечных ванн. |
| 2 |Ваши глаза бледнеют и светятся в течение нескольких часов после использования магии. |
| 3 |Вы зависимы от использования магии. |
| 4 |Вам трудно использовать магию, когда вам грустно. |
| 5 |Иногда вы видите вещи так, как они выглядят в плетении. |
| 6 |В ожидании вы бездумно плетете нити магии вокруг своих рук. |
---
!!! [img[1.png]] Заклинания источника
Вы узнаёте заклинания источника на указанных уровнях чародея. Заклинания источника считаются для вас заклинаниями чародея и не учитываются при подсчёте количества известных вам заклинаний чародея.
Когда вы получаете уровень в этом классе, вы можете выбрать одно из известных вам заклинаний, изученных с помощью этого умения, и заменить его другим заклинанием из списка заклинаний волшебника, колдуна или чародея того же уровня. Новое заклинание должно принадлежать школе Воплощения или Ограждения.
| !УЧ |!Заклинания |
| !1 |//волшебная стрела//, //доспехи мага//, //фокусы// |
| !3 |//звёздная пыль//, //туманный шаг// |
| !5 |//контрзаклинание//, //эфирное копьё// |
| !7 |//магический глаз//, //переносящая дверь// |
| !9 |//длань Бигби//, //силовая стена// |
//УЧ - Уровень чародея//
---
!!! [img[1.png]] Эфиророжденный
Вы получаете сопротивление к урону силовым полем. Кроме того, при достижении 3 уровня чародея, вы дополнительно получаете вариант Метамагии [[Усиленное заклинание]] и можете использовать его без траты очков чародейства количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Перегруженная метамагия
<<<
Вы научились высвобождать силу, бушующую в вашем сердце
<<<
Когда вы изменяете заклинание, наносящее урон, с помощью своих вариантов Метамагии, вы можете добавить свой модификатор Харизмы к одному броску урона этого заклинания.
---
!!! [img[14.png]] Арканное топливо
Вы получаете иммунитет к урону силовым полем. Когда вы должны были бы получить урон силовым полем (без учета иммунитета), вы восстанавливаете хиты в количестве, равном половине урона, который вы получили бы. Вы можете получить таким образом количество хитов, равное вашему уровню чародея, после чего вы больше не получаете хитов с помощью этого умения, пока не завершите короткий или продолжительный отдых.
Кроме того, вы изучаете заклинание //рассеивание магии//, или другое заклинание чародея на ваш выбор, если оно уже известно вам. Это заклинание не учитывается в общее количество известных вам заклинаний. Когда вы успешно оканчиваете магический эффект //рассеиванием магии// или прерываете заклинание //контрзаклинанием//, вы восстанавливаете одно потраченное очко чародейства, поскольку вы втягиваете в себя остатки разрушенной магии.
---
!!! [img[18.png]] Прикосновение к силе
<<<
Вы можете задействовать силу, проходящую через вас, чтобы восполнить свою магию.
<<<
Бонусным действием вы можете потратить одну Кость Хитов и получить очки чародейства, в количестве, равном результату броска + ваш модификатор Харизмы. Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
[img width=410 class="centerme" [https://i.imgur.com/ZC5V4tp.png]]
Серые орки ведут кочевой образ жизни. В их внешности меньше звериных черт, чем у их горных собратьев, а их кожа имеет серый оттенок. Они обитают в отдалённых пустынных уголках мира и влекут скудное существование, путешествуя между лагерями и пещерами от сезона к сезону. Хоть подобная варварская жизнь и комфортна для серых орков, они обычно более спокойные и собранные. Серые орки научились направлять свою ярость и ненависть внутрь себя, что позволяет им преуспевать в роли жрецов воинственных божеств. Серые орки - фанатики, а слово их племенных жрецов - закон. Жрецы из других племен обычно считаются еретиками, несмотря на тот факт, что скорее всего оба племени почитают одно и то же божество.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значения вашего Телосложения или Мудрости на ваш выбор увеличиваются на 1. |
|^Набожный |^Вы владеете навыком Религия. |
|^Кровавое бешенство |^Запах крови в разгаре битвы наполняет вас гневом. Если у вас осталось меньше половины от вашего максимума хитов, вы можете заменить одну из своих рукопашных атак свирепой атакой. Если эта атака попадает, вы получаете временные хиты в количестве равном вашему модификатору Телосложения, а цель должна преуспеть в спасброске Мудрости (Сл = 8 + ваш мод. Харизмы + ваш бонус мастерства) или будет испугана вами до конца своего следующего хода. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. Вы можете использовать эту особенность против существа, которое опустило хиты вашего союзника до 0 в свой последний ход, независимо от того сколько у вас хитов, и не тратя её использование. |
[img width=330 class="centerme" [https://i.imgur.com/JVCsvYN.png]]
Скальные гномы выделяются своей изобретательностью и стойкостью. Большинство гномов в мирах D&D являются скальными.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 1. |
|^Всё, что под рукой |^Вы владеете импровизированным оружием. Ваша кость урона импровизированным оружием - 1к4, вместо 1к2. |
|^Жестянщик |^Вы владеете инструментами ремонтника. С их помощью вы можете, потратив 1 час времени и материалы на сумму в 10 cм, создать Крошечное механическое устройство (КД 5, 1 хит). Это устройство перестаёт работать через 24 часа (если вы не потратите 1 час на поддержание его работы). Вы можете действием разобрать его; в этом случае вы можете получить обратно использованные материалы. Одновременно вы можете иметь не более трёх таких устройств. При создании устройства выберите один из следующих вариантов: |
|~|^//Заводная игрушка.// Эта заводная игрушка изображает животное, чудовище или существо, вроде лягушки, мыши, птицы, дракона или солдатика. Поставленная на землю, она проходит 1 м в случайном направлении за каждый ваш ход, издавая звуки, соответствующие изображаемому существу. |
|~|^//Зажигалка.// Это устройство производит миниатюрный огонёк, с помощью которого можно зажечь свечу, факел или костёр. Использование этого устройства требует действия. |
|~|^//Музыкальная шкатулка. //При открытии эта шкатулка проигрывает мелодию средней громкости. Шкатулка перестаёт играть если мелодия закончилась или если шкатулку закрыли. |
|^Ремесленные знания |^При совершении проверки Интеллекта (История) применительно к магическому, алхимическому или технологическому объекту, вы можете добавить к проверке удвоенный бонус мастерства вместо обычного. |
Вы обучены скрываться и выживать вдали от городских улиц, что позволяет вам во время экспедиций разведывать обстановку на пути своих компаньонов. Плуты, выбирающие этот архетип, чувствуют себя как дома в дикой местности и среди варваров и следопытов, и многие Скауты служат глазами и ушами военных отрядов. Налётчик, разведчик, охотник за головами – вот лишь некоторые из ролей, которые Скауты берут на себя, путешествуя по миру.
---
!!! [img[3.png]] Выживальщик
Вы получаете владение навыками Выживание и Природа. Ваш бонус мастерства для проверок этих навыков удваивается.
---
!!! [img[3.png]] Лазутчик
<<<
К вам трудно подобраться во время боя.
<<<
Вы можете реакцией переместиться на расстояние до половины вашей скорости, когда враг заканчивает свой ход в пределах 1 м от вас. Это перемещение не провоцирует атак.
---
!!! [img[9.png]] Превосходная мобильность
Ваша скорость увеличивается на 2 м.
---
!!! [img[13.png]] Мастер засад
<<<
Вы отлично умеете устраивать засады и действовать первым в бою.
<<<
Вы совершаете проверки инициативы с преимуществом. Кроме того, первое существо, по которому вы попадаете атакой в первый раунд боя, становится более лёгкой целью для вас и других; броски атаки по этой цели совершаются с преимуществом до начала вашего следующего хода
---
!!! [img[17.png]] Внезапный удар
<<<
Вы можете наносить удары со смертоносной скоростью.
<<<
Когда вы в свой ход совершаете действие [[Атака]], вы можете совершить одну дополнительную атаку бонусным действием. Эта дополнительная атаке может получить преимущества умения Коварный удар, даже если вы уже использовали Коварный удар в этот ход, но вы можете использовать Коварный удар против одной и той же цели только один раз за ход.
* Вы [[схвачены|Схваченный]] и [[опутанны|Опутанный]].
* Вы не можете совершать действия и реакции, кроме попытки высвобождения или сотворения заклинания, не требующего соматических или материальных компонентов.
* Вы не добавляете модификатор Ловкости и бонус от щита к своему КД.
* Состояние оканчивается, если вы перестаёте быть [[схваченным|Схваченный]] или [[опутанным|Опутанный]].
Скромное существование выводит вас из трущоб и означает, что вы можете поддерживать своё снаряжение. Вы живёте в старой части города, снимая комнату в пансионе, на постоялом дворе или в храме. Вас не мучают голод и жажда, и вы живёте в чистоте, хотя и по-простецки. Скромное существование ведут солдаты и их семьи, разнорабочие, студенты, священники, начинающие волшебники и другие.
//Стоимость перемещения:// +1 м за 1 м.
Вы можете попытаться переместиться незаметно для существа, от которого вы [[скрыты|Скрытый]].
В конце вашего перемещения, совершите проверку Ловкости (Скрытность). Если на протяжении всего перемещения существо вас не видит, вы совершаете проверку с преимуществом. Мастер сравнивает результат вашей проверки с пассивным значением Мудрости (Внимательность) существ от которых вы прячетесь. При успехе вы остаетесь [[скрытым|Скрытый]] во время перемещения и после него. При провале вы прекращаете быть [[скрытым|Скрытый]] с начала этого перемещения.
Если в конце перемещения вы видимы существом, вы прекращаете быть [[скрытым|Скрытый]].
* Вы считаетесь [[невидимым|Невидимый]] для существ, от которых вы скрыты.
* Существа, от которых вы скрыты, не знают, какое пространство вы занимаете, и не могут выбрать вас целью.
* Если существо, от которого вы скрыты, знает о вашем присутствии, оно может попытаться угадать, в какой клетке вы находитесь, и атаковать вас. Мастер сообщает попала атаки или промахнулась, но не уточняет, промахнулась ли атака из-за провала броска атаки или выбора неправильной клетки.
* Существа могут попытаться обнаружить вас, совершив действие [[Поиск|Поиск]].
* Вы прекращаете быть скрытым, если существо видит вас, вы издаёте шум, либо перемещаетесь, не используя [[Скрытное перемещение]].
* Если вы действием [[Атака]] атакуете существо, от которого вы скрыты, вы совершаете бросок атаки с преимуществом и прекращаете быть скрытым сразу после атаки. Если вы совершаете любое другое действие, кроме [[Засады|Засада]], вы прекращает быть скрытым непосредственно перед действием, если только Мастер не решит иначе. Мастер может разрешить вам выполнить незаметное действие, не теряя скрытности, для чего, возможно, потребуется еще одна проверка Ловкости (Скрытность).
[img width=325 class="centerme" [https://i.imgur.com/2FtVeC6.png]]
<<tabs "[[Описание следопытов]] [[Классовые умения следопытов]] [[Архетипы следопыта]]" "" "$:/state/tab1">>
Слитки - это куски металла, которые можно использовать для изготовления предметов. Предполагается, что они относительно чистые. Слитком по умолчанию во всех таблицах ремесел является слиток стали. Сталь стоит 2 см за слиток. Есть и более дешевые металлы (например, железо); чистое железо нельзя использовать для изготовления оружия и доспехов, но можно использовать для других предметов, в результате чего получается более дешевое изделие. С другой стороны, можно использовать более совершенные металлы, такие как мифрил и адамантин, придающие особые свойства, но гораздо более сложные в обработке и более дорогие.
Принято считать, что каждый слиток весит 1 кг.
---
!!!Повторное использование металлов
Металлические предметы можно довольно эффективно переплавлять в слитки, но для этого требуется кузнечный горн. При наличии горна и 8 часов (1 дня) на предмет, металлический предмет можно переработать в слитки. Для выплавки продвинутых металлов могут потребоваться специальные инструменты.
---
!!!Плавка руды
Создание слитков из сырой руды для большинства приключенцев по большей части недоступно, но вы можете создавать слитки из сырой руды, имея подходящее оборудование. Подробности см. в таблице "Компоненты и материалы" в разделе "Кузнечное дело".
!!!Мгновенная смерть
Большой урон может убить вас мгновенно. Если урон опускает ваши хиты до 0, и ещё остаются излишки, вы умираете, если излишки равны максимуму ваших хитов или превышают его.
---
!!!Спасброски от смерти
В отличие от других спасбросков, спасброски от смерти не привязаны ни к какой характеристике. Теперь вы находитесь в руках судьбы, и помочь вам могут только заклинания и умения, улучшающие шансы на совершение успешных спасбросков. Совершите бросок к20 и свертесь с таблицей ниже, чтобы определить результат.
| !к20 |!Результат |
| 01 |Вы получаете два провала. |
| 02-09 |Вы получаете один провал. |
| 10-19 |Без изменений. |
| 20 |Вы восстанавливаете 1 хит. |
Вы уменьшаете количество проваленных спасбросков от смерти на 1 в конце продолжительного отдыха.
---
!!!Стабилизация существа
Самый надёжный способ помочь существу с 0 хитов это его лечение. Если лечение недоступно, существо можно хотя бы стабилизировать, чтобы оно не умерло от проваленного спасброска от смерти.
Вы можете действием оказать первую помощь находящемуся без сознания существу и попытаться стабилизировать его, для чего требуется потратить одно использование //комплекта целителя// или //инструментов хирурга// и совершить проверку Мудрости (Медицина) со Сл 10. Если вы используете подручные средства вместо надлежащих инструментов, совершите проверку с помехой.
''Стабилизированное'' существо перестает быть ''умирающим'', но становится ''бессознательным'', пока не восстановит хотя бы 1 хит. Получив урон, существо снова становится ''умирающим''. ''Стабилизированное'' существо, не получившее лечения, восстанавливает 1 хит после 1к4 часов.
Получение временных хитов не приводит вас в сознание и не стабилизирует вас. Они всё ещё могут поглощать урон, причиняемый вам, но спасти вас может только настоящее лечение.
---
!!!Нокаутирование существа
Иногда нападающий хочет обезвредить врага, а не убивать его. Если атакующий опускает хиты существа до 0 рукопашной атакой, он может заявить, что нокаутирует его. Этот выбор можно сделать уже после причинения урона.
В этом случае цель теряет сознание, и может быть приведена в чувство оказанием первой помощи или лечением. Если цель не получает помощи или лечения, оно восстанавливает 1 хит и приходит в сознание через 1к4 часа.
---
!!!Чудовища и смерть
Большинство чудовищ под управлением Мастера сразу умирают, когда их хиты опускаются до 0.
Могущественные злодеи и особые неигровые персонажи могут стать исключением; Мастер может позволить им использовать правила, предназначенные для персонажей игроков.
Вы можете потратить 2 очка ци, чтобы сотворить заклинание //огненные ладони//.
Персонаж может выпить одно зелье, пока находится под действием другого, или попытаться смешать несколько зелий в одной ёмкости. В этом случае, необычные ингредиенты, используемые в создании зелий, могут привести к непредсказуемым последствиям.
Когда персонаж смешивает две зелья вместе, Мастер совершает бросок к100 по таблице «Смешивание зелий».
!!!Смешивание зелий
| !_к100_ |!Результат|
| 01 |Смесь взрывается, нанося персвонажу 6к10 урона силовым полем, а также 1к10 урона силовым полем всем существам в радиусе1 м от него. |
| 02–08 |Смесь становится пищевым ядом по выбору Мастера. |
| 09–15 |Оба зелья теряют свои свойства. |
| 16–25 |Одно из зелий теряет свои свойства. |
| 26–35 |Оба зелья продолжают работать, но их численные эффекты снижаются наполовину. Если в силу особенностей зелья эффект нельзя понизить, то зелье не работает. |
| 36–90 |Оба зелья работают нормально. |
| 91–99 |Численные эффекты и длительность действия одного из зелий удваиваются. Если ни одно зелье не может быть модифицировано таким образом, то в этом случае они работают как обычно. |
| 00 |Только одно зелье продолжает работать, но его эффект становится постоянным. Выберите наиболее простой эффект для того, чтобы сделать его постоянным, или же тот, который кажется вам наиболее забавным. Например, зелье лечения может увеличить максимум хитов на 4, а масло эфирности может навсегда заточить персонажа на Эфирном Плане. На ваше усмотрение, назначьте заклинание, такое как рассеивание магии или снятие проклятья, которое может рассеять этот длительный эффект. |
<<<
The faster they come, the sooner I shoot 'em down.
— Nalgas Darkbraid, dwarven Sharpshooter
<<<
Mastery of a chosen armament is a long-standing tradition among many peoples. Legends are full of examples: the fighter who is one with his sword or the assassin who can't miss with knives. Fables also tell of those who have consummate proficiency with the bow or the crossbow. Some warriors acquire skill with the bow to avoid close combat. Others do so because ability and purpose lead them that way. Sharpshooters work for all sorts of causes, military to mercenary, noble to malevolent.
''Sharpshooters in the World:'' Unlike other archers, the sharpshooter's purpose is to become legendary for accuracy and skill, as well as for the number and sorts of foes defeated. Quick shooting, accuracy, and deadliness are the sharpshooter's trademarks, along with the ability to use a bow or a crossbow in ways that few others can. Some who would become the ultimate sharpshooter look for other archers to challenge in contests of skill or even in duels to the death.
''Sharpshooters in the Game:'' You have honed your bow or crossbow skills with a desire to become the best of the best. You fire faster than most folk would think possible. When enemies try to move in close and shut you down, you shoot on without compromising defense. Those who watch you work could swear your arrows are alive. One day, you'll be targeting that one enemy whose defeat will make you a legend.
''Adaptation:'' Sharpshooters can easily come from anywhere, but the elves are often known as the best archers, while dwarves are generally regarded as the best crossbow users. However, even sheep herding or horse-trading humans from some backwater village with only two rivers might be known for impossible skills with bow or crossbow.
---
!!Снайпер
| !Ранг |!Умения |
| !1 |Opportunity Fire, Stab and Shoot |
| !2 |Perfect Aim, Rapid-Fire Inspiration |
| !3 |Seeking Missile |
| !4 |Escalating Barrage |
---
!!!Предварительные условия:
* ''Владение оружием.'' Любые луки или арбалеты.
* ''Особое.'' Победа на состязаниях по стрельбе.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Opportunity Fire
When an adjacent creature provokes an opportunity attack from you while you are wielding a bow or loaded crossbow, you can make a ranged weapon attack against the provoking creature as a reaction. This attack does not suffer disadvantage for being in melee.
!!!Stab and Shoot
<<<
You drive your arrow into an adjacent enemy, pull it out, load it, and fire it at another foe.
<<<
//Sharpshooter • Martial, Offensive, Weapon (Recharges after a short or long rest) //
When you hit a creature within 5 feet of you with a ranged attack using a bow or crossbow, the target suffers your attacks normal effects, and it can't take a reaction until the end of its next turn. Moreover, on its next turn, it must choose whether it gets a move, an action, or a bonus action; it gets only one of the three.
After the attack is resolved, you can make one additional ranged attack using the same weapon and same piece of ammunition against a different creature within your weapon's range. On a hit, your attack deals an extra 2d10 damage.
The extra damage of the additional attack increases when you reach 9th level (3d10), 13th level (4d10), and 17th level (5d10).
---
!!Ранг 2
!!!Perfect Aim
<<<
You take the time to line up a deadly shot.
<<<
//Sharpshooter • Martial, Utility (Recharges after a short or long rest)//
As a bonus action, while you are wielding a ranged weapon, your next ranged attack made before the end of your next turn gains a bonus to its attack roll equal to your Wisdom modifier. If the attack hits, it deals extra damage equal to your Wisdom modifier + half your level. If you move or take damage before making a ranged attack, the bonus is lost.
!!!Rapid-Fire Inspiration
When you take the Attack action on your turn, you can spend an inspiration to make one additional ranged attack using a bow or crossbow as part of the same action. This additional attack ignores the loading property of crossbows.
---
!!Ранг 3
!!!Seeking Missile
You ignore half cover and three-quarters cover when making a ranged attack against a creature provided you don't have disadvantage on the attack roll. Additionally, if a creature is heavily obscured from you but not hidden from you, you don't suffer disadvantage on attack rolls against it.
---
!!Ранг 4
!!!Escalating Barrage
<<<
With increasing accuracy and deadliness, you send your shots at multiple foes.
<<<
//Sharpshooter • Martial, Offensive, Weapon (Recharges after a long rest) //
When you hit a creature with a ranged attack using a bow or crossbow, your attack deals an extra 1d6 damage. Then make two additional ranged attacks using the same weapon against two different creatures other than the initial target. The first additional attack gains a +2 bonus on the attack roll and deals an extra 3d6 damage on a hit. The second additional attack gains a +4 bonus on the attack roll and deals an extra 5d6 damage on a hit.
These additional attacks ignore the loading property of crossbows.
[[Актуальные таблицы снаряжения|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=477193305]]
<div class="tc-table-of-contents">
<<toc-selective-expandable "Содержание">>
</div>
<div class="tc-table-of-contents">
<<toc-selective-expandable "Создание персонажа">>
</div>
<<<
//Для использования более глубокой системы создания свитков заклинаний обратитесь к подразделу Ремесла [[Начертание свитков]].//
<<<
Имея достаточно времени и терпения, заклинатель может перенести заклинание на свиток, создав свиток заклинания. Под свитком в данном случае может пониматься любой носитель информации на который можно записать заклинание и с которого его можно скопировать в книгу заклинаний. Например: береста, кусок кожи, глиняная скрижаль и т.д.
//''Ресурсы''//. Создание свитка заклинания требует времени и денег в зависимости от уровня заклинания, которое персонаж хочет записать.
Кроме того, персонаж должен владеть навыком Магия и использовать все материальные компоненты, необходимые для заклинания. А также, чтобы написать свиток, персонаж должен подготовить это заклинание или оно должно быть в списке известных персонажу заклинаний.
Если записываемое заклинание – заговор, то версия, записанная на свитке, будет работать так, как если бы заклинатель был 1 уровня.
| !Уровень заклинания |!Время |!Затраты|
| Заговор |1 день |15 cм|
| 1 |1 день |25 cм|
| 2 |3 дня |250 cм|
| 3 |1 рабочая неделя |500 cм|
| 4 |2 рабочих недели |2500 cм|
| 5 |4 рабочих недели |5000 cм|
| 6 |8 рабочих недель |15000 cм|
| 7 |16 рабочих недель |25000 cм|
| 8 |32 рабочих недели |50000 cм|
| 9 |48 рабочих недель |250000 cм|
//''Осложнение''//. Создание свитка заклинания – это затворническое дело, которое не привлекает к себе особого внимания. Осложнения, скорее всего, будут связаны с подготовкой к этому виду деятельности.
Каждую неделю, потраченную на написание свитка, существует 10% шанс что произойдёт осложнение, примеры которых можно найти в таблице ниже.
| !к6 |!Осложнение |
| 1 |Вы купили последние редкие чернила, использующиеся для создания свитков, чем рассердили городского волшебника. |
| 2 |Священник из храма доброго божества обвиняет вас в использовании тёмной магии.|
| 3 |Волшебник, желающий получить одно из ваших заклинаний, пытается заставить вас продать ему свиток. |
| 4 |Из-за странной ошибки, совершённой при создании свитка, он содержит случайное заклинание того же уровня. |
| 5 |На редком пергаменте, купленном для написания свитка, видна еле заметная карта. |
| 6 |В вашу мастерскую попытался проникнуть вор. |
В некоторых случаях вы можете захотеть изготовить что-то более ценное. Хотя продать более ценное снаряжение может быть довольно сложно, многие магические предметы, которые могут понадобиться Зачарователю, требуют предметов определенной стоимости.
Ниже приведены примеры конкретных модификаторов, которые вы можете добавить, чтобы увеличить стоимость предмета:
|!Модификатор | !Материал | !Сложность| !Добавленная стоимость|
|Инкрустированный камнями | Драгоценные камни | +1 за камень | Стоимость камня |
|Позолоченный | 10 золотых обрезков | +2 | +20 см |
Кроме того, ценность предмета можно повысить, сделав его более богато украшенным и проявив больше мастерства. Когда вы начинаете создавать предмет, вы можете искусственно повысить Сл и/или время создания этого предмета. При этом стоимость предмета пересчитывается с помощью [[таблицы Трудозатрат.|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=1617840951]]
Ниже приведен список примеров из [[таблицы Трудозатрат|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=1617840951]] для более дорогих обыденных предметов с использованием различных вариаций стоимости материала, Сл и количества проверок.
|!Предмет | !Материалы | !Проверки | !Сл | !Цена|
|Простой | 1 мм | 1 | Сл 8 | 2 мм|
|Специфичный | 1 мм | 2 | Сл 15 | 40 см|
|Сложный | 1 мм | 8 | Сл 15 | 160 см|
|Изысканный | 100 см | 8 | Сл 15 | 265 см|
|Роскошный | 250 см | 7 | Сл 15 | 402 см|
|Мастерский | 1 см | 5 | Сл 20 | 1001 см|
!!!Пример
Рассмотрим эти цены:
* На указанный в таблице простой предмет необходимо 1 мм материалов и одна проверка со Сл 8. Одна проверка со Сл 8 соответствует 1 мм трудозатрат. Сложив трудозатраты со стоимостью материалов получаем цену предмета - 2 мм.
* На изысканный предмет необходимо 100 см материалов и восемь проверок со Сл 15. Трудозатраты составят 8x20=160 см, а стоимость материалов с учётом множителя риска 100x1.05=105 см. Получаем цену предмета - 265 см.
* Представленный мастерский предмет требует небольшое количество материалов стоимостью всего 1 см, но его очень трудно изготовить - для этого требуется пять проверок со Сл 20. В результате трудозатраты и конечная цена составляют 1000 см.
Так, например, если вам нужен короткий меч стоимостью 1000 см, у вас есть несколько опций:
* Вы можете добавить драгоценный камень стоимостью 985 см к материалам при изготовлении, получив 15 см + 985 см.
* Вы можете увеличить количество проверок до пяти и Сл до 20.
* Вы можете потратить на материалы 190 см, увеличить количество проверок до восьми и Сл до 19, и получить в итоге меч стоимостью 1009 см.
Эти случаи в основном нужно рассматривать только при изготовлении предметов для зачарования, и все это гораздо проще, чем может показаться, поскольку это просто применение формулы, представленной таблицей Трудозатрат.
Один раз в свой ход, когда вы совершаете атаку оружием, вы можете совершить еще одну атаку тем же оружием по другому существу, находящемуся в пределах 1 м от изначальной цели, и находящемуся в пределах досягаемости вашего оружия.
Вы можете действием или бонусным действием спрятать на себе или в окружении маленький предмет (например, лёгкое оружие). Вы совершаете проверку Ловкости (Скрытность), результат которой определяет Сл обнаружения предмета.
Когда вы пытаетесь пронести спрятанный предмет мимо кого-то, кто может его заметить, Мастер сравнивает результат вашей проверки с пассивным значением Мудрости (Внимательность) существа.
Многие заклинания создают очевидные эффекты: огненные взрывы, стены льда, телепортацию и тому подобное. Другие заклинания, такие как //очарование личности//, не показывают видимых, слышимых или других ощутимых признаков от эффекта, и могут легко остаться незамеченными кем-то, кто ими не затронут. Вы обычно не знаете, что за заклинание было применено, если оно не создаёт видимого эффекта.
Сотворение заклинания может быть замечено, если оно включает вербальный, соматический или материальный компонент. Форма материального компонента не имеет значения, будь то объект, указанный в описании заклинания, мешочек с компонентами или магическая фокусировка.
В некоторых ситуациях вы можете попытаться сокрыть факт сотворения своего заклинания или выдать его за не представляющий угрозы эффект:
* Совершите проверку Ловкости/Интеллекта/Мудрости (Скрытность) на ваш выбор против пассивной Внимательности, если за вами нет активного наблюдения, или против проверки Мудрости (Внимательность), если за вами наблюдают.
* Если сотворение заклинания включает в себя больше одного компонента, то проверка заклинателя совершается с помехой.
* Окружающий шум или большое количество движения могут дать преимущество на проверку заклинателя.
* Если наблюдателю известно, что сотворяющий является заклинателем, он совершает свою проверку Мудрости (Внимательность) с преимуществом.
```
Сокрытие сотворения заклинания требует концентрацию.
```
---
Если потребность в компонентах для заклинания была отброшена с помощью специальных умений, таких как «Неуловимое заклинание» чародея или «Врождённое колдовство», которым обладают многие существа, то заклинание незаметно. Если незаметное сотворение заклинания создаёт видимый эффект, обычно невозможно определить, кто сотворил заклинание, не имея других доказательств.
Сколько вы помните, в вашей жизни всегда была война. С молодости вы проходили тренировки, учились использовать оружие и доспехи, изучали технику выживания, включая то, как оставаться живым на поле боя. Вы могли быть частью армии страны или отряда наёмников, а может, были местным ополченцем во время войны.
Выбрав эту предысторию, определите вместе с Мастером, в какой военной организации вы состояли, до какого звания вы дослужились, и что вам за это время довелось пережить.
* ''Владение навыками:'' Атлетика, Запугивание
* ''Владение инструментами:'' Один [[игровой набор,|Игровой набор]] [[наземный транспорт|Наземный и водный транспорт]]
* ''Экипировка:'' Знак отличия, трофей с убитого врага (кинжал, сломанный клинок или кусок знамени), игровой набор, которым вы владеете, комплект одежды солдата, кошель с 10 см
!!!Специализация
Будучи солдатом, вы выполняли особую роль. Совершите бросок к8 или выберите один из вариантов из таблицы самостоятельно:
| !к8 |!Специализация | !к8 |!Специализация |
| 1 |Офицер | 5 |Врач |
| 2 |Разведчик | 6 |Интендант |
| 3 |Пехотинец | 7 |Знаменосец |
| 4 |Кавалерист | 8 |Обслуживающий персонал (повар, кузнец, и т. п.) |
!!!Умение: Воинское звание
Будучи солдатом, вы заслужили звание. Солдаты, верные военной организации, которой вы раньше принадлежали, всё ещё признают вашу власть и влияние, и они подчиняются вам, если их звание ниже вашего. С помощью своего звания вы можете оказывать влияние на других солдат и брать во временное пользование простое снаряжение или лошадей. Возможно, вас пропустят внутрь военного лагеря или крепости, если к вашему званию отнесутся с уважением.
---
!!!Разновидность солдата: Городской стражник
Вы служили сообществу, в котором выросли, являясь первой линией обороны от преступного мира. Вы не солдат, чей взгляд скорее смотрит на внешних врагов. Вместо этого, ваша служба родному городу это охрана местного населения, защита жителей от правонарушителей и злоумышленников всех мастей.
Если вы решите, что во время службы вы занимались защитой поселения, вы владеете навыком Проницательность вместо навыка Запугивание, дополнительным языком вместо владения наземным транспортом, и можете выбрать умение Намётанный глаз вместо умения Воинское звание.
<<<
!!!Альтернативное умение: Намётанный глаз
Ваш опыт блюстителя закона и общения с правонарушителями, дает вам возможность легко понять местные законы и положение дел в преступном мире. Вы можете легко найти местный опорный пункт стражи, или подобной организации, и так же легко определить логово преступников в общине.
<<<
---
!!!Разновидность солдата: Наёмник
Будучи наёмником, сражающимся за звонкую монету, вы хорошо знакомы с риском для жизни и конечностей за долю в добыче. Теперь, вы смотрите в будущее уже в качестве искателя приключений, где также предстоят сражения с врагом, но гонорары больше. Вы опытны в том, что такое быть наёмником, и у вас наверняка имеются душераздирающие истории о событиях на поле боя. Вы могли служить в крупной организации, солдатом наёмной армии, или в небольшом отряде, а возможно и не одном.
Теперь вы ищете нечто иное, возможно большее вознаграждение за риск, которому вы подвергаетесь, или свободу выбора вашей деятельности. По какой бы причине вы не оставили позади жизнь наёмного солдата, ваши навыки несомненно подходят именно для битв, потому вы продолжаете сражаться, но теперь всё по-другому.
Если вы решите, что вы служили рыцарем ордена, вы владеете навыком Убеждение вместо навыка Запугивание, и можете выбрать умение Жизнь наёмника вместо умения Воинское звание.
<<<
!!!Альтернативное умение: Жизнь наёмника
Вы знаете жизнь наёмника так, как может только тот, кто испытал её на себе. Вы можете распознать компании наемников по их эмблемам и немного знаете о любой такой компании, в том числе о их последнем нанимателе. Вы можете найти таверны и корчмы, где обитают наемники, в любой области, если вы говорите на местном языке.
<<<
---
!!!Разновидность солдата: Рыцарь ордена
Вы принадлежите к рыцарскому ордену, давшему клятву добиться определенной цели. Суть цели зависит от того, какому ордену вы служите, но для вас эта цель является жизненно важным и достойным делом, не подлежащим обсуждению. Многие рыцарские ордена имеют схожие взгляды на свои действия и возложенные на себя обязанности.
Несмотря на то, что понятие «рыцарь» ассоциируется с тяжеловооруженным всадником благородных кровей, большинство рыцарских орденов не накладывают подобных ограничений на своих членов. Ордена ставят свои цели и философию выше снаряжения и стиля боя своих рыцарей, так что большинство орденов открыты для всех желающих сражаться и умирать за дело ордена, не ограничиваясь в способах ведения боевых действий.
Если вы решите, что вы служили рыцарем ордена, вы владеете навыком История вместо навыка Запугивание, дополнительным языком вместо владения наземным транспортом, и можете выбрать умение Рыцарское почтение вместо умения Воинское звание.
<<<
!!!Альтернативное умение: Рыцарское почтение
Вы получаете убежище и поддержку от членов вашего рыцарского ордена и тех, кто поддерживает его цели. Если ваш орден религиозный, вы можете получить помощь от храмов и других религиозных общин вашего божества. Рыцари гражданских орденов могут получить помощь от сообщества - будь то одинокое поселение или огромная страна - которому они служат, а рыцари философских орденов могут найти помощь у тех, кому они помогали в достижении своих идеалов, и у тех, кто разделяет эти идеалы.
Эта помощь приходит в виде ночлега и еды, а также в виде исцеления, когда это необходимо, но может выражаться и в рискованной помощи, например, когда группа
местных граждан вступает в неравный бой на стороне припёртого к стенке рыцаря, или поддерживающие орден помогают незаметно покинуть город несправедливо обвинённому рыцарю.
<<<
---
!!!Персонализация
Ужасы войны вкупе с жёсткой дисциплиной воинской службы оставляют следы на всех солдатах, формируя их идеалы, создавая привязанности, а также оставляя на них шрамы, как физические, так и ментальные.
| !к8 |!Черта характера |
| 1 |Я всегда вежлив и почтителен. |
| 2 |Меня терзают воспоминания о войне. Не могу забыть то насилие, что мне довелось увидеть. |
| 3 |Я потерял много друзей, и теперь с трудом завожу новых. |
| 4 |Я решаю проблемы прямолинейно. Простое решение — лучший путь к успеху. |
| 5 |У меня много воодушевляющих и предостерегающих рассказов из военного прошлого, подходящих практически к любой боевой ситуации. |
| 6 |Я могу смотреть прямо на адскую гончую, не отводя глаз. |
| 7 |Мне нравится быть сильным и крушить вещи. |
| 8 |У меня грубое чувство юмора. |
| !к6 |!Идеал |
| 1 |''Высшее благо.'' Наш жребий — отдать свои жизни ради других. |
| 2 |''Ответственность.'' Я делаю что должен, и подчиняюсь вышестоящим. |
| 3 |''Независимость.'' Если слепо следовать приказам, попадаешь под пяту тирании. |
| 4 |''Мощь.'' В жизни и войне побеждает сильнейший. |
| 5 |''Живи и не мешай другим.'' Идеалы не стоят того, чтобы ради них убивать или воевать. |
| 6 |''Нация.'' Мой город, нация и народ — вот что самое главное. |
| !к6 |!Привязанность |
| 1 |Я по-прежнему готов отдать свою жизнь за тех, кому поклялся служить. |
| 2 |Кое-кто спас мне жизнь на поле боя. С тех пор я никогда не оставляю друзей, оставшихся в бою. |
| 3 |Моя честь — моя жизнь. |
| 4 |Никогда не забуду сокрушительное поражение, которое потерпел наш отряд, или врага, устроившего это. |
| 5 |Те, кто сражаются рядом со мной, достойны того, чтобы за них умереть. |
| 6 |Я сражаюсь за тех, кто не может это сделать сам. |
| !к6 |!Слабость |
| 1 |Одно чудовище, с которым мы когда-то сразились, до сих пор заставляет меня дрожать от страха. |
| 2 |Я мало уважаю тех, кто не доказал, что является достойным воителем. |
| 3 |В одном сражении я совершил ужасную ошибку, стоившую жизни многим — и я сделаю что угодно, лишь бы это оставалось в тайне. |
| 4 |Ярость к врагам ослепляет меня и делает безрассудным. |
| 5 |Я подчиняюсь закону, даже если закон вызывает страдания. |
| 6 |Я скорее съем свой доспех, чем признаюсь, что был неправ. |
Иногда лучший способ очистить свой разум - это отключить его на некоторое время. Отдых - лучшее лекарство. Для сна персонажу требуется обычно 8 часов в сутки. Когда существо спит, оно находится в [[бессознательном|Бессознательный]] состоянии.
Непотревоженный сон восстанавливает одну потраченную Кость Хитов и снижает степень истощения на 1, при условии, что существо в течении дня употребило как минимум половину требуемого количества [[пищи и воды|Голод и жажда]].
---
!!!Без сна
Когда вы заканчиваете 24-часовой период, не поспав необходимое количество часов, вы должны пройти проверку Телосложения (Выносливость) со Сл 10 + 5 за каждые сутки без сна, иначе получите одну степень [[истощения|Истощённый]].
Счётчик дней без сна обнуляется, если у существа нет степеней истощения, полученных от недосыпа.
---
!!!Сон в доспехах
Доспехи, хоть и спасают вашу жизнь в битвах, лишают вас возможности комфортно отдохнуть. Сон в средних или тяжёлых доспехах не восстанавливает Кости Хитов и не снижает степень истощения.
---
!!!Транс
Представители некоторых рас не спят привычным людям образом. Вместо этого они впадают в состояние медитации, называемое Трансом. В этом состоянии ваш персонаж полусознателен и вы совершаете проверки Мудрости (Внимательность) с помехой.
---
!!!Пробуждение
Существо, которое спит по естественным причинам, в отличие от усыплённых магическим или химическим путём, просыпается, если получает любой урон, а также если кто-то другой действием встряхнёт его или разбудит пощёчиной.
Внезапный громкий шум, такой как вопль, раскат грома, или колокольный звон, также будит спящих по естественным причинам.
Шёпот не тревожит сон, кроме случаев, когда пассивное Восприятие спящего 20 и более, а источник шёпота в пределах 2 м от спящего.
Речь с обычной громкостью будит спящего, если без неё вокруг тихо (нет ветра, пения птиц, сверчков, уличных звуков и подобного), а спящий имеет пассивное Восприятие 15 и выше.
<div class="tc-table-of-contents">
<<toc-selective-expandable "Состояние персонажа">>
</div>
Состояния различными способами изменяют возможности существа и могут являться следствием заклинания, классового умения, атаки чудовища или другого эффекта. Большинство состояний, вроде состояния «ослеплённый», негативны, но некоторые из них, например, «невидим», могут быть полезны.
Состояние длится до тех пор, пока не будет прервано (например, состояние «сбитый с ног» прерывается, когда существо встаёт) или в течение времени, которое указано в эффекте, вызвавшем это состояние.
Если разные эффекты вводят существо в одно и то же состояние, каждый из случаев имеет отдельную длительность, но эффекты состояния не становятся сильнее. Существо либо имеет состояние, либо не имеет его.
Приведённые ниже описания определяют, что происходит с персонажем в том или ином состоянии.
<<tabs "[tag[Описания состояний]nsort[]]" "Бессознательный" "$:/state/tab1" "tc-vertical">>
Заклинатели, такие как волшебники и жрецы, а также многие чудовища, имеют доступ к заклинаниям, и могут очень эффективно использовать их в сражении. У каждого заклинания есть время сотворения, измеряющееся в действиях, минутах или даже часах. У большинства заклинаний время сотворения «1 действие», поэтому заклинатели часто тратят действие на сотворение заклинаний.
Вы не можете сотворить заклинание основным действием и другое заклинание бонусным действием за один ход, кроме случаев, когда одним из действий было сотворено заклинание не выше 2 уровня.
Цель заклинания должна находиться в пределах дистанции заклинания. Цель также должна быть в прямой видимости - поэтому у цели не должно быть полного укрытия.
Заклинания с материальным компонентом не расходуют компонент при сотворении, если обратное не сказано в описании заклинания. Если для компонента указана стоимость, то этот компонент не может быть заменен мешочком с компонентами или заклинательной фокусировкой.
Некоторые заклинания требуют от вас сохранения концентрации для поддерживания магии в активном состоянии. Если вы потеряете концентрацию, такое заклинание оканчивается. Вы можете окончить концентрацию в любое время (действие не требуется). Нормальная деятельность, такая как перемещение и сражение, не прерывают концентрацию. Её могут прервать следующие события: сотворение другого заклинания, требующего концентрацию; получение урона; недееспособность или смерть.
<<tabs "[tag[Специализация изобретателя]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Специалисты - это следопыты, которые в равной степени совершенствуют свою технику и снаряжение. Смертоносные и умные, они заставляют своих противников гадать, что последует дальше.
Ниже перечислены некоторые опциональные причуды для Специалиста. Вы можете самостоятельно выбрать причуду для вашего персонажа или определить её случайным образом по таблице.
| !к6 |!Причуда |
| 1 |Вы часто неоправданно сокращаете слова до аббревиатур, которые потом приходится объяснять. |
| 2 |Большинство ваших планов связано со сложными ловушками. |
| 3 |Вы никогда не любите использовать один и тот же план дважды. |
| 4 |Все проблемы можно решить с помощью правильной стрелы. |
| 5 |Вы предоставляете очень конкретные детали о простых вещах. |
| 6 |Вы всегда предпочитаете занимать высокую позицию. |
---
!!! [img[3.png]] Магия специалиста
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//град шипов// |
| !5 |//видение невидимого// |
| !9 |//мерцание// |
| !13 |//изготовление// |
| !17 |//силовая стена// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Мастак
Вы получаете владение [[инструментами ремонтника|Инструменты ремонтника]]. Если вы уже владеете этим набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[3.png]] Коварные выстрелы
<<<
Вы научились создавать особые боеприпасы.
<<<
У вас может быть количество таких особых выстрелов, равное вашему бонусу мастерства, и вы можете восстановить потраченные выстрелы и заменить неиспользованные на другие после завершения короткого или продолжительного отдыха.
Если выстрел требует от существа совершения спасброска, используется Сл спасбросков от ваших заклинаний следопыта.
Вы можете выбрать один из следующих вариантов специальных выстрелов. Вы можете создать несколько копий одного выстрела или выбрать несколько разных выстрелов, если их общее количество равно вашему бонусу мастерства.
''Направленный выстрел''
При стрельбе этот выстрел отслеживает цель. Эта атака совершается с преимуществом и игнорирует укрытия, включая полное укрытие, до тех пор, пока существует известный вам путь к цели, который должен быть меньше максимальной дальности используемого оружия.
''Разрывной выстрел''
Когда этот выстрел попадает в цель, раздается взрыв. Цель и все существа в пределах 2 м от нее должны преуспеть в спасброске Ловкости, иначе они получат 1к6 урона звуком и 1к6 урона огнём.
''Реактивный выстрел ''
Дальность этой атаки удваивается, а при попадании цель получает дополнительно 1к12 урона от оружия.
''Связывающий выстрел''
Вместо нанесения урона этот выстрел при попадании в цель превращается в сеть. Эта сеть получает дополнительные хиты в количестве, равном вашему уровню следопыта.
''Слепящий выстрел''
Когда этот выстрел попадает в цель, она испускает яркую вспышку света. Цель и все существа в пределах 3 м от нее должны преуспеть в спасброске Ловкости, иначе будут [[ослеплены|Ослеплённый]] до начала вашего следующего хода.
---
!!! [img[7.png]] Заклинательные выстрелы
<<<
Вы научились наделять особые выстрелы магическими способностями.
<<<
Бонусным действием вы можете потратить ячейку заклинаний, вложив в боеприпас одно из заклинаний из таблицы ниже.
| !УЯ |!Заклинания |
| !1 |//огненные ладони//, //туманное облако// |
| !2 |//дребезги//, //тьма// |
| !3 |//метель//, //огненный шар// |
| !4 |//град//, //Эвардовы чёрные щупальца// |
| !5 |//кислотный дождь//, //облако смерти// |
//УС - Уровень ячейки//
Заклинание не срабатывает сразу, а срабатывает при попадании выстрела. Вы можете выстрелить в точку или в существо в пределах дальности оружия. Независимо от того, попадает ли атака в существо или нет, эффект, заложенный в выстреле, срабатывает в выбранной вами точке в пределах 1 м от цели.
Если заклинание воздействует на линию или конус, вы можете выбрать направление распространения области от точки. Если заклинание требует концентрации, оно использует вашу концентрацию, как обычно.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[11.png]] Усиленные выстрелы
Каждый раз, когда вы используете Коварный выстрел или Заклинательный выстрел и наносите урон существу, это существо получает дополнительно 1к8 урона.
---
!!! [img[11.png]] Выстрел кошкой
Вы можете замнить одну из атак частью действия Атака особым выстрелом кошкой. Выберите целью существо, поверхность или предмет в пределах 6 м от вас и совершите дальнобойную атаку оружием. Этот выстрел не наносит урона, а при попадании существа и предметы размером меньше вашего притягиваются на расстояние до 6 м к вам. Если вы попадаете в поверхность, закрепленный предмет, либо в существо или предмет вашего или большего размера, вы притягиваетесь на расстояние 6 м к цели.
---
!!! [img[15.png]] Бесконечная инновация
Если в начале хода у вас не осталось использований Коварного выстрела, вы можете бонусным действием создать один Коварный выстрел.
<<tabs "[tag[Изменения]!sort[created]][[Архив 2021]][[Архив 2020]]" "" "$:/state/tab1" "tc-vertical">>
<div class="tc-table-of-contents">
<<toc-selective-expandable "Сражение">>
</div>
Если у вас выпало «1» или «2» на кости урона оружия при атаке, которую вы совершали рукопашным оружием, удерживая его двумя руками, то вы можете перебросить эту кость, и должны использовать новый результат, даже если снова выпало «1» или «2».
Рыцарь, скачущий на боевом коне, волшебник, накладывающий заклинания со спины грифона, жрец, парящий в небесах на пегасе — все они пользуются преимуществами в скорости и мобильности, предоставляемыми скакунами.
Согласное существо, чей размер как минимум на одну категорию больше вашего, и обладающее подходящей анатомией, может служить скакуном, используя следующие правила:
---
!!![[Посадка в седло и спешивание]]
В свой ход вы можете оседлать существо, находящееся в пределах 1 м от вас, или слезть с него. Это тратит половину вашей скорости
Если некий эффект перемещает вашего скакуна против его воли, либо вас сбивают с ног, пока вы находитесь на нём, вы должны преуспеть в спасброске Ловкости со Сл 10, иначе вы упадёте со скакуна, падая ничком в пространстве в пределах 1 м от него.
Если ваш скакун сбивается с ног, вы можете реакцией спешиться и приземлиться на ноги. В противном случае вы падаете ничком в пространстве в пределах 1 м от него.
---
!!!Управление скакуном
Во время езды верхом, вы можете сами управлять скакуном, обученным принимать всадника, либо позволить ему действовать самостоятельно. Подразумевается, что домашние лошади, ослы и подобные животные уже прошли такое обучение. Разумные существа, такие как драконы, всегда действуют самостоятельно.
Управляя скакуном, вы не можете перемещаться, кроме как с целью спешиться. Вместо этого ваш скакун перемещает вас обоих согласно вашим командам во время вашего хода, неся вас на себе. Он может совершать действия в любой момент во время вашего хода, но только [[Отход]], [[Рывок]] или [[Уклонение]].
Самостоятельный скакун сохраняет своё место в порядке инициативы. Всадник при этом не ограничивает действия скакуна, и он перемещается и действует как пожелает.
В любом случае, если ваш скакун провоцирует атаку, атакующий может нацелиться или на вас, или на скакуна.
Вы получаете бонус +1 к КД, когда держите в каждой руке по рукопашному оружию. Вы можете [[сражаться двумя оружиями|Атака]], используя одноручное оружие.
Средние доспехи предлагают лучшую защиту, чем лёгкие, но немного ограничивают перемещение. Если вы носите средний доспех, вы при определении Класса Доспеха к базовому числу, предоставленному доспехом, добавляете модификатор Ловкости, но не более +2. Под средними доспехами необходимо носить дублет, его стоимость включена в цену доспеха.
//''Ламеллярный''//. Доспех из сплетённых между собой шнуром кожаных, металлических или, реже, деревянных пластин в виде корсета-кирасы с длинным подолом и оплечьями.
//''Кольчужная рубаха''//. Сделанная из переплетённых металлических колец кольчужная рубаха носится между слоями одежды или кожи. Кольчужную рубаху можно улучшить до кольчуги за разницу в цене.
//''Чешуйчатый''//. Этот доспех состоит из кожаных куртки и поножей (а также, возможно, отдельной юбки), покрытых перекрывающимися кусочками металла, похожими на рыбную чешую. В комплект входят рукавицы.
//''Бригантина''//. Доспех из мелких металлических пластин, наклёпанных под кожаную или стёганную основу. Бригантину можно улучшить до наборного доспеха за разницу в цене.
//''Кираса''//. Этот доспех состоит из подогнанного металлического панциря, носимого с подкладкой из кожи. Несмотря на то, что руки и ноги остаются практически без защиты, этот доспех хорошо защищает жизненно важные органы, оставляя владельцу относительную подвижность. Кирасу можно улучшить до полулат за разницу в цене.
//''Полулаты''//. Полулаты состоят из сформированных металлических пластин, покрывающих большую часть тела владельца. В них не входит защита для ног кроме простых поножей, закреплённых кожаными ремнями. Полулаты можно улучшить до лат за разницу в цене.
//''Средний щит. ''//Самый популярный тип щитов, повсеместно использующийся пехотинцами. Средние щиты эффективны на поле боя, а также легки и дешевы в изготовлении.
Вы совершаете спасброски от [[испуга|Испуганный]] с преимуществом.
Стекловарение - это искусство обработки стекла с помощью выдуваемого воздуха для создания бутылок, флаконов и небольших декоративных изделий. Для выдувания стекла обычно требуются инструменты стеклодува и источник сильного жара (обычно это специальный источник тепла, или кузница, или магический источник).
```
Модификатор стеклоделия = бонус мастерства инструментов стеклодува + модификатор Ловкости
```
Стихийный разум - это псион, который может проявлять и контролировать стихию как продолжение своей воли.
---
!!! [img[1.png]] Сила стихий
<<<
Вы обрели глубокую внутреннюю связь со стихийной силой, что дало вам возможность манипулировать ею.
<<<
Вам известна псионическая дисциплина [[Психокинеза|Психокинез]].
{{Психокинез}}
---
!!! [img[1.png]] Первозданный аспект
Действием или когда вы наносите урон огнем, холодом или электричеством (действие не требуется), вы принимаете аспект этой стихии до конца вашего следующего хода или пока не примете новый первозданный аспект.
* ''Огонь:'' Вы приобретаете огненную ауру. Один раз в ход существо в пределах 1 м от вас, попадающее по вам рукопашной атакой, получает урон огнём, равный вашему бонусу мастерства.
* ''Холод:'' Вы приобретаете ледяной панцирь, уменьшающий любой получаемый вами немагический дробящий, колющий или рубящий урон на значение вашего бонуса мастерства.
* ''Электричество:'' Вы мерцаете молнией. Ваша скорость ходьбы увеличивается на 1 м.
Вы можете дополнительно потратить 1 пси-очко, чтобы получить сопротивление этой стихии до начала вашего следующего хода. Если вы специализируетесь в этой стихии, вы можете сделать это без траты пси-очка.
<<<
''Внешний вид аспекта''
Внешний вид проявляющегося аспекта может быть различным, возможно, ваши волосы становятся огненными и излучают тепло, или ваша кожа приобретает ледяной блеск, но каковы бы ни были природа и последствия аспекта, они очевидны для наблюдателей.
<<<
---
!!! [img[3.png]] Живая сила
<<<
Ваши силы становятся живым проявлением вашего разума, вплетая в реальность продолжение вашей воли, позволяя вам манипулировать своими силами более продвинутыми способами.
<<<
Когда вы используете силу или альтернативный эффект Психокинеза, вы можете применить один из следующих модификаторов:
''Формируемая сила''
Когда вы используете силу или заклинание, которое совершает дальнобойную атаку заклинанием, вы можете преобразовать ее в рукопашную атаку заклинанием (например, сформировать ее в форму оружия), и когда вы совершаете рукопашную атаку заклинанием, вы можете вместо этого придать ей форму и метнуть ее в цель в пределах 3 м, совершая дальнобойную атаку заклинанием.
''Контролируемая сила''
Когда вы используете силу или заклинание, направленное на область, вы можете выбрать количество существ, равное количеству потраченных пси-очков. Сила безвредно проходит вокруг выбранных существ, они автоматически преуспевают в спасброске от этого эффекта и не получают урона, если по описанию эффекта должны получить половину урона при успехе.
''Бушующая сила''
Когда вы используете силу или заклинание, вы можете позволить ей выйти из-под контроля. Когда вы совершаете бросок урона для силы или заклинания, вы можете перебросить количество костей, равное 1 + количество потраченных пси-очков. Вы должны использовать новый результат.
---
!!! [img[6.png]] Усиленная псионика
Когда вы наносите урон псионической способностью, вы можете добавить свой модификатор Интеллекта к наносимому урону.
---
!!! [img[10.png]] Полная манифестация
Когда вы принимаете первозданный аспект, вы можете потратить 1 пси-очко, чтобы полностью проявить эту стихию, заменив первозданный аспект следующим эффектом. Если вы специализируетесь в этой стихии, вы можете сделать это без траты пси-очка.
* ''Огонь:'' Огонь заполняет область в пределах 2 м от вас. Когда другое существо входит в эту область в первый раз за ход или начинает там свой ход, оно получает урон огнём, равный 1к4 + ваш бонус мастерства.
* ''Холод:'' Ваша скорость становится равной 0 до конца вашего следующего хода, но вы получаете сопротивление ко всем видам урона, кроме огня и силового поля.
* ''Электричество:'' Вы можете использовать свое перемещение для телепортации на расстояние, не превышающее вашу скорость.
---
!!! [img[14.png]] Стихийная форма
Вы можете сотворить заклинание //полное превращение// за 5 пси-очков. Когда вы сотворяете это заклинание таким образом, оно не требует верабальных или материальных компонентов, но вы можете принять форму только водяного элементаля, воздушного элементаля или огненного элементаля (на ваш выбор). Если вы специализируетесь в стихии, стоимость уменьшается до 3 пси-очков, но вы можете принять только форму, связанную с вашей специализацией (водяной элементаль - холод, воздушный элементаль - молния или огненный элементаль - огонь). Если вы принимаете форму водяного элементаля, у него нет особенности Замерзание.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
Столярное дело - изготовление мебели и мелкое строительство. Часто используется для изготовления простых обыденных предметов или модификаций.
```
Модификатор столярного дела = бонус мастерства инструментов плотника + модификатор Ловкости
```
<<<
Вы настраиваете свой доспех таким образом, чтобы быть в гуще сражения.
<<<
Доспех обладает следующими особенностями:
''Громовые перчатки.'' Каждая из латных перчаток вашего доспеха, пока вы ничего в них не держите, считается простым рукопашным оружием и наносит 1к8 урона звуком при попадании. Существо, по которому попали перчаткой, до начала вашего следующего хода совершает броски атаки с помехой против всех целей кроме вас, так как доспех магическим образом испускает отвлекающий импульс, когда существо атакует кого-то другого.
''Защитное поле.'' Бонусным действием вы можете получить количество временных хитов, равное вашему уровню в этом классе. Вы теряете эти временные хиты, если снимаете доспех. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха.
Странники горизонта охраняют мир от угроз, которые исходят из других планов, или которые стремятся навредить смертному миру с помощью потусторонней магии. Они ищут планарные порталы и следят за ними, углубляясь на Внутренние и Внешние Планы при необходимости нагнать своих врагов. Эти следопыты также являются друзьями любых сил в мультивселенной – особенно доброжелательныз драконов, фей и элементалей – которые работают над сохранением жизни и порядка на Планах.
---
!!! [img[3.png]] Магия странника горизонта
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//защита от добра и зла// |
| !5 |//туманный шаг// |
| !9 |//ускорение// |
| !13 |//изгнание// |
| !17 |//круг телепортации// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Обнаружение порталов
<<<
Вы научились ощущать присутствие планарных порталов.
<<<
Действием вы можете магическим образом определить расстояние и направление до ближайшего планарного портала в пределах 1 км от вас.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[3.png]] Планарный воин
<<<
Вы научились использовать энергию мультивселенной для усиления своих атак.
<<<
Бонусным действием вы можете выбрать одно видимое вами существо в пределах 6 м от вас. Весь урон вашей следующей атаки, попавшей по цели в этот ход, изменяет свой вид на силовое поле, а атака наносит дополнительно 1к8 урона силовым полем.
Дополнительный урон увеличивается до 2к6, когда вы достигаете 11 уровня в этом классе.
---
!!! [img[7.png]] Эфирный шаг
<<<
Вы научились перемещаться сквозь Эфирный План.
<<<
Бонусным действием вы можете сотворить заклинание //эфирность//, не тратя ячейку заклинания, но заклинание заканчивается в конце этого хода.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[11.png]] Отдалённый удар
<<<
Вы научились проходить между планами в мгновение ока.
<<<
Когда вы совершаете действие [[Атака]], вы можете телепортироваться на расстояние до 2 м перед каждой атакой в видимое вами незанятое пространство.
Если вы этим действием атакуете, по крайней мере, двух различных существ, вы можете частью этого же действия совершить одну дополнительную атаку против третьего существа.
---
!!! [img[15.png]] Спектральная защита
<<<
Ваша способность перемещаться между планами позволяет проскальзывать через планарные границы, чтобы уменьшать ущерб, причиняемый вам во время боя.
<<<
Когда вы получаете урон от атаки, вы можете реакцией дать себе сопротивление к урону этой атаки до конца этого хода.
| !к12 |!Что произошло |
| 1 |Вас обратили в жабу, которой вы оставались в течение 1к4 недель. |
| 2 |Вас обратили в камень, и вы оставались в виде каменной статуи некоторое время, пока кто-то не освободил вас. |
| 3 |Вы попали в рабство к карге, сатиру или кому-то другому, и провели так 1к6 лет. |
| 4 |Дракон держал вас в качестве заложника 1к4 месяца, пока группа искателей приключений не убила его. |
| 5 |Вас взяли в плен злые гуманоиды вроде куо-тоа или квагготов. В Подземье вы жили как раб, пока вам не удалось сбежать. |
| 6 |Вы служили могущественному искателю приключений в качестве наёмника. Недавно вы ушли с этой службы. Воспользуйтесь дополнительными таблицами и обсудите с вашим Мастером базовые детали относительно вашего прошлого нанимателя. |
| 7 |Вы потеряли рассудок на 1к6 лет, но недавно он вернулся к вам. У вас, возможно, сохранился тик или какая-то другая странность в поведении. |
| 8 |Ваш возлюбленный в тайне был серебряным драконом. |
| 9 |Вас взял в плен культ и почти принёс в жертву на алтаре сущности, которой служили культисты. Вы сбежали, но боитесь, что они найдут вас. |
| 10 |Вы встречались с полубогом, архидьяволом, архифеей, владыкой демонов или титаном, выжили и можете рассказать об этом. |
| 11 |Вас проглотила гигантская рыба, и вы провели месяц внутри неё, прежде чем вам удалось выбраться. |
| 12 |Могущественное существо готово было исполнить ваше желание, но вы прошляпили этот шанс на что-то глупое. |
[img width=420 class="centerme" [https://i.imgur.com/eJttIWW.png]]
|!Особенность |!Описание |
|^Крылья |^Ваша часть истинного дракона проявилась в виде драконьих крыльев. При падении вы можете реакцией замедлить свою скорость падения 12 м в раунд. Опускаясь таким образом, вы не получаете урон от падения и можете приземлиться на ноги, кроме того, вы можете перемещаться на 1 метр в горизонтальной плоскости за каждый метр падения. |
|~|^При достижении 5 уровня вы один раз можете бонусным действием наделить себя скоростью полёта равной вашей скорости ходьбы на 1 минуту. Вы не можете использовать эту особенность повторно, пока не завершите продолжительный отдых. |
|~|^При достижении 11 уровня вы получаете постоянную скорость полёта равную вашей скорости ходьбы. Если у вас уже есть скорость полёта, вместо этого она увеличивается на 4 м. |
|~|^Чтобы использовать эту особенность, вы не должны носить тяжёлые доспехи и щиты. Силы ваших крыльев достаточно только для подъёма одного существа размером не больше вашего. Ваши доспехи должны быть специально подогнаны под ваши крылья. Подгонка доспеха требует двух часов работы опытного ремесленника и оплату в размере четверти стоимости доспеха. |
Нахождение в 1 м от враждебного существа не накладывает помеху на ваши броски атаки стрелковым оружием.
Ваши атаки стрелковым оружием по целям в пределах 6 м от вас игнорируют укрытие на половину, а укрытие на три четверти для них считается укрытием на половину.
Вы получаете бонус +1 к броску урона, когда атакуете стрелковым оружием.
Вы получаете бонус +2 к броску атаки, когда атакуете стрелковым оружием.
Сумрачные охотники чувствуют себя как дома в самых тёмных местах: глубоко под землёй, в мрачных переулках, первобытных лесах и везде, где свет тускнеет. Большинство вступают в такие места с опаской, но Сумрачный охотник смело бросается во тьму, стремясь устранить угрозы, прежде чем они попадут в открытый мир. Такие следопыты часто встречаются в Подземье, но они последуют в любое место, где зло скрывается в тенях.
---
!!! [img[3.png]] Магия сумрачного охотника
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//маскировка// |
| !5 |//трюк с верёвкой// |
| !9 |//ужас// |
| !13 |//высшая невидимость// |
| !17 |//притворство// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Теневой взор
Вы получаете [[ночное зрение|Зрение и свет]] радиусом 20 м. Если у вас уже есть ночное зрение от вашей расы его радиус увеличивается на 10 м.
Вы также сведущи в уклонении от существ, которые полагаются на ночное зрение. Находясь в темноте, вы [[невидимы|Невидимый]] для любого существа, полагающегося на ночное зрение, чтобы видеть вас в этой темноте.
---
!!! [img[3.png]] Ужасающий налётчик
<<<
Вы овладели искусством засады.
<<<
Вы можете использовать сумму своих модификаторов Ловкости и Мудрости при совершении проверки инициативы.
В начале первого хода боя ваша скорость увеличивается на 2 м до конца этого хода. Если вы совершаете действие [[Атака]] в этот ход, вы можете совершить одну дополнительную атаку оружием частью этого действия. Эта атака наносит дополнительно 1к8 урона вида урона оружия.
---
!!! [img[7.png]] Железный разум
<<<
Вы отточили технику сопротивления воздействующим на разум способностям вашей добычи.
<<<
Вы получаете владение спасбросками Мудрости. Если у вас уже есть это владение, вы вместо этого можете получить владение спасброском Интеллекта или Харизмы (на ваш выбор).
---
!!! [img[11.png]] Натиск преследователя
<<<
Вы научились атаковать с такой непредсказуемой скоростью, что сможете превратить промах в очередной удар.
<<<
Один раз в каждый свой ход, когда вы промахиваетесь атакой оружием, вы можете совершить ещё одну атаку оружием частью того же действия.
---
!!! [img[15.png]] Теневое уклонение
<<<
Вы способны уклоняться непредвиденными способами, окружая себя сверхъестественными вихрями теней.
<<<
Каждый раз, когда существо совершает атаку по вам и не имеет преимущества на бросок, вы можете реакцией наложить на него помеху. Вы можете принять решение об использовании этого умения после объявления результата броска существа.
* Ваша скорость равна 0, и вы не получаете выгоды ни от каких бонусов к скорости.
* Вы совершаете броски атаки с помехой, кроме бросков атаки, совершаемых по цели, схватившей вас.
* Состояние оканчивается, если схвативший становится [[недееспособеным|Недееспособный]].
* Состояние оканчивается, если какой-либо эффект выводит вас из зоны досягаемости того, кто вас удерживает, или из зоны удерживающего эффекта. Например, когда вас отбрасывает заклинанием //волна грома//.
* Состояние оканчивается, если ваш размер начинает превышать размер схватившего больше чем на одну категорию.
[img width=450 class="centerme" [https://i.imgur.com/fNUWlUc.png]]
<<tabs "[tag[Табакси - описание]]" "Описание табакси" "$:/state/tab1">>
Умение Дикий облик позволяет превращаться в зверя, которого вы видели. Это правило дает вам потрясающую гибкость, позволяя легко изучить множество животных обликов, но вы должны соблюдать ограничения таблицы Дикий облик.
Когда вы получаете Дикий облик на 2 уровне друида, вы можете задаться вопросом, каких зверей вы уже видели. Следующие таблицы распределили зверей из //Бестиария //по их наиболее вероятным средам обитания. Подумайте, в какой среде вырос ваш друид, а затем обратитесь к соответствующей таблице за списком зверей, которых, вероятно, видел ваш друид ко 2 уровню.
Эти таблицы также могут помочь вам и вашему Мастеру определить, каких зверей вы можете увидеть в своих путешествиях. Кроме того, таблицы включают в себя показатель опасности каждого зверя и наличие у зверя скорости полета или плавания. Эта информация поможет вам определить, можете ли вы принять форму этого зверя.
Таблицы включают в себя всех отдельных зверей, которые могут быть использованы для Дикого облика (до показателя опасности 1) или для умения Облики круга в Круге Луны (до показателя опасности 6).
<<tabs "[tag[Таблицы Дикого облика]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Когда вы совершаете бросок атаки таранной рукавицей, вы можете решить не добавлять свой бонус мастерства к броску атаки. Если атака попадает, вы можете добавить к броску урона удвоенный бонус мастерства.
Телекинез - это способность взаимодействовать с физическими объектами и энергией с помощью псионической силы.
---
!!!Телекинетические руки
Когда вы получаете это умение, вы можете манипулировать маленькими предметами в пределах 6 м от вас с помощью своего разума, как если бы вы использовали руку для взаимодействия с ними. Вы можете использовать эту способность, чтобы манипулировать предметом, открыть незапертую дверь или контейнер, спрятать или достать предмет из открытого контейнера или вылить содержимое из флакона. Вы не можете атаковать, активировать магические предметы или переносить более 5 кг таким образом. Раз в свой ход вы можете переместить предмет, которым управляете таким образом, на расстояние до 6 м.
Вы можете потратить 1 или более пси-очков, чтобы увеличить вес, который вы можете переместить таким образом, на 50 кг за каждое потраченное очко на 1 ход.
---
!!!Телекинетическая сила
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 12 м
''Компоненты:'' С
''Длительность:'' Мгновенная
Своей ментальной силой вы ударяете видимое вам существо или предмет. Цель должна преуспеть в спасброске Силы, иначе получит 1к10 дробящего урона, и либо будет сдвинута на 1 м в выбранном вами направлении, либо будет сбита с ног (на ваш выбор).
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Телекинетической силе (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Забивающая (1+ пси-очко):'' Если цель провалит спасбросок, она получит 1к10 дробящего урона за каждое дополнительно потраченное очко.
* ''Охватывающая (1-3 пси-очка):'' Вы можете выбрать целью всех существ в радиусе 1 м от точки в пределах дистанции. Радиус увеличивается вдвое за каждое потраченное очко (1 м, 2 м, 4 м).
* ''Сокрушительная (2 пси-очка):'' Если цель провалит спасбросок, она станет [[опутанной|Опутанный]] до конца своего следующего хода.
* ''Швыряющая (1-3 пси-очка):'' Если цель провалит спасбросок, она оттолкнется на 2 м в выбранном вами направлении за каждое дополнительно потраченное очко.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Телекинеза, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//волна грома//, //катапульта//, //прыжок// |
| !2 |//дребезги//, //левитация//, //швырок// |
| !3 |//вихревой взрыв//, //полёт// |
| !4 |//орбитальные камни//, //Отилюков упругий шар// |
| !5 |//силовая стена//, //телекинез//, //ударная волна// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
Когда вы наносите урон своим [[Псионическим ударом|Псионический удар]], вы можете вынудить цель совершить спасбросок Силы со Сл равной 8 + ваш бонус мастерства + ваш модификатор Интеллекта. При провале вы можете сбить цель с ног или толкнуть её на 2 м в любом горизонтальном направлении.
<<<
Вы способны перемещать предметы или существа силой мысли.
<<<
Действием вы можете выбрать целью один незакрепленный предмет Большого или меньшего размера, либо одно согласное существо, кроме самого себя. Если вы можете видеть цель и она находится в пределах 6 м от вас, вы можете переместить её на расстояние до 6 м в видимое вами незанятое пространство. Или же, если это Крошечный предмет, вы можете переместить его в свою руку или из руки. Вы не можете совершить это действие повторно, пока не завершите короткий или продолжительный отдых, либо не потратите Кость Псионической энергии, чтобы совершить его снова.
Телепатия - это способность взаимодействовать с разумом других существ с помощью псионической силы.
---
!!!Телепатическое общение
Вы можете общаться телепатически с любым видимым вами существом в пределах 6 м от вас. Цель понимает вас, только если владеет одним из известных вам языков, и может телепатически отвечать вам.
---
!!!Телепатическое вторжение
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 12 м
''Компоненты:'' С
''Длительность:'' мгновенная
Вы штурмуете разум видимого вами существа. Цель должна преуспеть в спасброске Мудрости, иначе получит 1к8 урона психической энергией, и будет совершать броски атаки по вам с помехой до начала вашего следующего хода. Вы можете решить не наносить урон цели, если она провалила спасбросок.
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Телепатическому вторжению (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Заблуждающее (2 пси-очка):'' Если цель провалит спасбросок, вы можете сделать одно существо невидимым для цели, либо заставить цель видеть то, чего нет, с эффектом //малой иллюзии//, до начала вашего следующего хода.
* ''Подавляющее (3 пси-очка):'' Если цель провалит спасбросок, она станет [[ошеломлённой|Ошеломлённый]] до конца своего следующего хода.
* ''Разрушительное (1+ пси-очко):'' Если цель провалит спасбросок, она получит 1к8 урона психической энергией за каждое дополнительно потраченное очко.
* ''Ужасающее (1 пси-очко):'' Если цель провалит спасбросок, она станет [[испуганной|Испуганный]] вами до конца вашего следующего хода.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Телепатии, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//вызов страха//, //приказ//, //принудительный запрос// |
| !3 |//внушение//, //обнаружение мыслей// |
| !5 |//погружение в сознание//, //ужас// |
| !7 |//подчинение зверя//, //принуждение//, //смятение// |
| !9 |//изменение памяти//, //ментальная связь Рэри//, //подчинение личности// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
<<<
Long, lightless miles lie before us. Follow me, and you might live to see the sun again.
— Baltha the Implacable, Darkstrider of the Lodge
<<<
Beneath the world of daylight lies a vast realm of eternal night—the caverns, tunnels, and vaults of the Underdark. This wilderness of stone is home to dangerous monsters and rapacious civilizations that plague the world, and it's here you're at home. You have explored the lightless passages and wandered the uncounted miles of labyrinthine caves. The bizarre ecology of this subterranean world is as familiar to you as the flora and fauna of a surface forest; you know how to survive where other heroes would find a cruel, swift death.
''Darkstriders in the World: ''Darkstriders specialize in hunting down and eliminating creatures in the dark, twisting caves of the Underdark, often protecting underground communities or those people who make their living under the earth (such as miners or hunters). They use stealth, ambush, and deception to single out foes and remove them one by one. A typical strategy is to locate the enemy, then hide against a nearby wall of earth or stone. The darkstrider then waits for their enemy to pass by, leaping out to attack when the target least expects it. If a darkstrider is outnumbered, they retreat into the darkness, hiding until they can pick off individual targets.
Because they spend so much time in the stark wilderness of caves and caverns, darkstriders are slightly ostracized by other members of society. Most individuals live among others of their own kind, so the rootless existence of the darkstrider seems like a social aberration. Still, great honor is to be found in protecting the clan from attack, so darkstriders are given respect. None of this concerns the individual, who cares little for what others think, they find purpose in what they do every time they bring down another of their enemies. They prefer to work alone, but also know that cooperation with others has its advantages.
''Darkstriders in the Game: ''As a darkstrider, you are part explorer, part guide, and part hunter. You have made it your task to discover the secret paths and hidden strongholds of the Underdark, mastering the unique dangers of this horrible realm and learning the ways of the creatures and peoples who call it home. You could serve as a spy, keeping watch on the plots of the drow or the mind flayers. You might be an exterminator, fighting a shadowy war against teeming hordes of troglodytes and grimlocks in foul caverns beneath the mountains. Or you might be a subterranean trailblazer, skilled at finding treasures long hidden from the light. In any case, survival in the Underdark is a game of stealth, sharply honed senses, ambush, and savagery—and you understand its rules perfectly.
''Adaptation.'' Rangers are the most likely characters to become darkstriders. Druids, rogues, and fighters are also common. Feral tribes of barbaric dwarves sometimes produce darkstriders, who track down their foes in silence and then explode into action once they ambush their prey. Half-orcs make excellent darkstriders, since they are often found on the fringes of society anyway. Elves, with their abiding hatred of drow, sometimes follow this path.
<<<
''The Shade Hunter Clan ''
The shade hunter is clan of Darkstriders who live for the thrill of finding lost treasure, defeating ancient traps, and surviving deadly curses laid by the priests of dead gods. Part historian, part loremaster, and part graverobber, these artifact hunters will go anywhere and risk anything to acquire the next big score to add to their hoards. The recent damage dealt to Shade’s mythal by five of Faerûn’s most powerful mages has caused the city’s leaders to seek out ancient stores of Netherese magic in hopes that something will be able to repair it—and opportunistic treasure hunters have not been far behind them.
<<<
---
!!Тёмный налётчик
| !Ранг |!Умения |
| !1 |Darkstrider Ambush, Darkstrider Edge |
| !2 |Cloaked in Shadow, Dark Inspiration |
| !3 |Blindsense |
| !4 |Death in the Dark |
---
!!!Предварительные условия:
* ''Владение навыками.'' Скрытность, и Природа или Выживание.
* ''Особое.'' Ночное зрение или другой способ видеть без источников света.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Силы или Ловкости (на ваш выбор)
```
---
!!Ранг 1
!!!Darkstrider Ambush
<<<
You exploit your advantage with a single well-aimed strike that momentarily disorients your enemy.
<<<
//Darkstrider • Martial, Offensive, Weapon (Recharges on a short or long rest)//
When you hit a creature with an attack using a weapon and you had advantage on the attack roll, your attack deals an extra 2d10 damage, and the target can't take a reaction until the end of its next turn. Moreover, on its next turn, it must choose whether it gets a move, an action, or a bonus action; it gets only one of the three.
The extra damage increases when you reach 9th level (3d10), 13th level (4d10), and 17th level (5d10).
!!!Darkstrider Edge
You have advantage on attack rolls against any creatures that have not acted yet during the encounter. In addition, your weapon attacks against those creatures or creatures from which you are hidden deal an extra damage equal to 1d6 + your Wisdom modifier. T
he extra damage increases when you reach 9th level (1d8 + your Wisdom modifier), 13th level (1d10 + your Wisdom modifier), and 17th level (1d12 + your Wisdom modifier).
---
!!Ранг 2
!!!Cloaked in Shadow
<<<
You vanish into the shadowy clefts of the rock and stone around you.
<<<
//Darkstrider • Martial, Utility (Recharges on a short or long rest) //
As a bonus action, while you are adjacent to a wall or other large stone feature, such as a column, a boulder, or a stalagmite, you become hidden to any creatures that aren't adjacent to you when you activate this exploit. You remain hidden until you move, attack, or take any kind of action.
!!!Dark Inspiration
You can spend an inspiration on your turn (no action required) to gain a +4 bonus to AC and saving throws until the end of your next turn.
---
!!Ранг 3
!!!Blindsense
You gain blindsight out to a number of feet equal to 10 + (five times your Wisdom modifier), meaning you can clearly see creatures or objects within the range and within line of effect, even if they are invisible or obscured. If you already have blindsight, it instead increases by the amount Blindsense would have granted.
---
!!Ранг 4
!!!Death in the Dark
<<<
With uncanny precision, you lash out at your enemy's head, seeking to blind the foe.
<<<
//Darkstrider • Martial, Necrotic, Offensive, Weapon (Recharges on a long rest)//
When you hit a creature with an attack using a weapon, your attack deals an extra 5d10 damage, and the target becomes wounded. While wounded by this exploit, the target is blind and it takes 1d6 necrotic damage at the start of each of its turns, and it can then make a Constitution saving throw, ending the wound on a success. Alternatively, the wounded creature, or a creature within 5 feet of it, can use an action to make a Wisdom (Medicine) check against your exploit save DC, ending the wound on it on a success.
[img width=517 class="centerme" [https://i.imgur.com/yTy8RiI.jpg]]
Будучи дроу, вы наделены магией Подземья - скрытого царства диковинок и ужасов, редко встречающихся на дневной поверхности. Среди теней вы чувствуете себя как дома и, благодаря своей врождённой магии, способны вызывать как свет, так и тьму. Также называемые тёмными эльфами, дроу обладают чёрной или серой кожей различных оттенков и совершенно белыми или очень светлыми волосами. У них обычно бледные глаза (настолько бледные, что могут показаться белыми) с сиреневым, серебряным, розовым, красным или синим оттенком. Они, как правило, меньше и стройнее, чем большинство эльфов.
Культ богини Лолс, Королевы пауков, развратил некоторые из древнейших городов дроу, особенно в мирах Орта и Торила. Эберрон, Кринн и другие миры пока избежали влияния культа. Некоторые герои дроу стоят на передовой в войне против него, стремясь разорвать паутину Лолс.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 1. |
|^Боевая подготовка дроу |^Вы владеете воинским лёгким и одноручным клинковым оружием, простыми и воинскими арбалетами, а также экзотическим оружием "дроу", если владеете воинским оружием того же вида. |
|^Магия дроу |^Вам известен заговор //пляшущие огоньки//. При достижении 3 уровня вы можете один раз сотворить заклинание //огонь фей//. При достижении 5 уровня, вы также можете сотворить заклинание //тьма//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
|^Ночное зрение |^На расстоянии 20 м вы при тусклом освещении можете видеть так, как будто это яркое освещение, и в темноте так, как будто это тусклое освещение. В темноте вы не можете различать цвета, только оттенки серого. |
|^Чувствительность к солнечному свету |^Вы совершаете броски атаки и проверки Мудрости (Внимательность), которые полагаются на зрение, с помехой, когда вы, цель вашей атаки или то, что вы пытаетесь увидеть, находится под прямым солнечным светом. Вы можете отказаться от этой особенности, заменив свое Ночное зрение на [[Сумеречное зрение|Зрение и свет]]. |
<<<
Вы вплетаете магию иллюзии в свою стрелу, которая заслоняет зрение врага тенями.
<<<
Существо, по которому попал выстрел, получает дополнительно 2к6 урона психической энергией. Цель должна преуспеть в спасброске Мудрости, иначе не сможет видеть далее 1 м до начала вашего следующего хода.
После достижения вами 18 уровня в этом классе, дополнительный урон этого выстрела увеличивается до 4к6.
Вы можете потратить 1 очко ци в свой ход, чтобы совершить бонусным действием [[Уклонение]].
Вы изучаете один приём на свой выбор из списка архетипа воина Мастер боевых искусств. Если приём требует, чтобы цель совершила спасбросок для сопротивления эффекту приёма, Сл спасброска равна 8 + ваш бонус мастерства + модификатор Силы или Ловкости (на ваш выбор). Вы получаете одну кость превосходства: к6 (эта кость добавляется к любым Костям Превосходства, которые у вас есть из другого источника, и изменяется согласно умению Боевое превосходство, если оно у вас есть). Эта кость подпитывает ваши приёмы. Кость превосходства тратится, когда вы её используете, и восстанавливается после окончания короткого или продолжительного отдыха. Каждый раз, когда вы получаете уровень, вы можете заменить изученный приём на новый.
Техно-рыцарь считает, что лучшего бойца определяют не мозги и не мускулы, а их сочетание.
Зачем ограничивать себя тем, что дала природа, если можно дополнить свое боевое превосходство уникальными и изобретательными средствами, которые дадут вам преимущество? Вы создаете и внедряете инновации на острие развития технологий... и используете это острие, чтобы пронзить врага насквозь. Мало что может быть опаснее, чем творческий потенциал в руках того, кто знает, как его использовать.
Техно-рыцаря можно назвать изобретателем, который открыл дверь инноваций, нашел самую смертоносную вещь, которую только мог изобрести, и снова закрыл ее, но это было бы не совсем точно. Они постоянно внедряют новшества, совершенствуя свое искусство, только с более узкой специализацией.
Некоторые, возможно, участвуют в приключениях и сражениях, чтобы испытать свое оружие, другие, возможно, обратились к новаторству, чтобы преодолеть какое-то препятствие или стремятся изменить мир, а третьих мало волнует наука и техника оружия, и они просто сколачивают что-то, чтобы уничтожать своих врагов.
Ниже перечислены некоторые опциональные причуды для Техно-рыцаря. Вы можете самостоятельно выбрать причуду для вашего персонажа или определить её случайным образом по таблице.
| !к6 |!Причуда |
| 1 |Каждый день вы уделяете время совершенствованию своего оружия. |
| 2 |Вы думаете, что любую проблему можно решить с помощью достаточной огневой мощи. |
| 3 |Вы с презрением относитесь к простому оружию. |
| 4 |Вы мечтаете о взрывах. |
| 5 |Вы радуетесь новым возможностям испытать свои разрушительные изделия. |
| 6 |Вы с радостью предлагаете всем желающим продемонстрировать особенности каждого нового изобретения. |
---
!!! [img[3.png]] Жестокое изобретение
<<<
Вы создали новое разрушительное оружие, которое поможет вам доминировать на поле боя уникальным способом.
<<<
Вы можете создать одно оружие. Выберите одно оружие из приведенного ниже списка:
|!Название |!Категория |!Урон | !Крит. | !Дальн. | !Вес |!Свойства |
|Рикошетящее оружие |Одноручное метательное |1к8 Д | - | 8 м | 1 кг |Особое |
|Ручной многозарядный арбалет |Лёгкое стрелковое |1к6+2 К | - | 15 м | 1.5 кг |Летальное, Механическое, Особое |
|Таранная рукавица |Лёгкое контактное |1к8 Д | - | - | 1 кг |Грубое, Закреплённое, Особое |
|Трансформирующееся оружие|- |- | - | - | - |Особое |
|Цепной меч |Одноручное клинковое |2к4 (3к4) Р | 19-20 | - | 4.0 кг |Летальное, Особое |
Вы получаете владение выбранным оружием. Только вы владеете этим оружием. Если ваше оружие потеряно или уничтожено, вы можете создать его заново за 4 часа, потратив на материалы 25 см.
<<<
''Альтернативные виды оружия''
Если Техно-рыцарь хочет изменить вид урона оружия на другой, это, как правило, сбалансировано. Например, таранная руковица, являющаяся перчаткой с лезвиями, наносящей рубящий урон, или рикошетящее оружие, наносящее колющий урон. Вид урона оружия не является основным фактором баланса в игре.
<<<
''Особые свойства оружия''
<<tabs "[tag[Особое свойство жестокого изобретения]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
''Повысить обороты''
Когда вы попадаете атакой своим Жестоким изобретением, вы можете усилить её эффектом, зависящим от выбора вашего Жестокго изобретения:
* ''Гиперскорость (Рикошетящее оружие):'' Вы можете выбрать второй цель в пределах 4 м от первой, и третью цель в пределах 4 м от второй, используя один и тот же бросок атаки и бросок урона для всех целей; наносимый урон уменьшается вдвое для второй и третьей цели.
* ''Очередь (Ручной многозарядный арбалет):'' Вы сразу же совершаете одну дополнительную атаку с помехой частью того же действия.
* ''Чрезмерная сила (Таранная рукавица):'' Цель отталкивается от вас на 2 м.
* ''Перегрузка (Трансформирующееся оружие):'' Вы наносите дополнительно 2к4 урона электричеством.
* ''Бесшабашная сила (Цепной меч):'' Кости урона оружия увеличиваются до к6 для этой атаки (включая кости урона особого свойства).
Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум один раз). Потраченные использования этого умения восстанавливаются после завершения короткого или продолжительного отдыха.
''Усовершенствование оружия''
Частью продолжительного отдыха вы можете уничтожить магическое оружие +1/+2/+3, чтобы перенести его бонус к броскам атаки и урона на ваше Жестокое изобретение. По усмотрению Мастера можно перенести и другие свойства (в большинстве случаев рекомендуется не переносить, но окончательное решение остается за Мастером).
''Изменение вашего изобретения ''
Если вы хотите изменить свое Жестокое изобретение, для этого требуется 1 полный день простоя, в течение которого нужно работать не менее 8 часов. Подобным образом можно изменить любую опцию, требующую выбора.
---
!!! [img[3.png]] Мастерство жестянщика
Вы получаете владение [[инструментами ремонтника|Инструменты ремонтника]]. Если вы уже владеете этим набором инструментов, то вы получаете владение другими [[инструментами ремесленника|Инструменты ремесленников]] на ваш выбор.
---
!!! [img[7.png]] Условные варианты
<<<
Вы расширили свои нововведения в военное искусство, создав себе уникальное преимущество за счет своего снаряжения.
<<<
Выберите одну из следующих опций:
* ''Громовая граната.'' Действием, либо вместо одной из атак частью действия [[Атака]], вы можете сотворить заклинание //дребезги//, не тратя ячейки заклинаний и не нуждаясь в компонентах.
* ''Заряженная броня.'' Бонусным действием вы можете сотворить на себя заклинание //молниевая подзарядка//, не тратя ячейки заклинаний и не нуждаясь в компонентах.
* ''Огнемёт.'' Действием, либо вместо одной из атак частью действия [[Атака]], вы можете сотворить заклинание //огненные ладони// как заклинание 2 уровня, не тратя ячейки заклинаний и не нуждаясь в компонентах.
* ''Пояс сдвига.'' Вы можете сотворить на себя заклинание //увеличение/уменьшение//, не тратя ячейки заклинаний и не нуждаясь в компонентах.
* ''Ракетные сапоги.'' Бонусным действием вы можете активировать эти сапоги, чтобы получить возможность прыгать на расстояние, равное вашей скорости ходьбы, до конца этого хода. При этом вы не получаете урона от падения, но существа по вашему выбору в пределах 1 м от места вашего приземления получают 2к4 урона огнем. В качестве альтернативы вы можете использовать эту опцию, чтобы сотворить на себя заклинание //падение пёрышком//, не тратя ячейки заклинаний и не нуждаясь в компонентах.
* ''Силовое поле.'' Вы можете сотворить заклинание //щит//, не тратя ячейки заклинаний и не нуждаясь в компонентах.
Вы можете использовать выбранный предмет один раз, после чего вы не можете использовать его повторно, пока не завершите короткий или продолжительный отдых.
Если предмет требует от существа совершения спасброска, Сл такого спасброска определяется следующим образом:
<<<
Сл спасброска = 8 + бонус мастерства + модификатор Интеллекта
<<<
---
!!! [img[10.png]] Цепи войны
Выберите одну из следующих опций, либо одну дополнительную опцию из Жестокого изобретения или Условных вариантов.
* ''Возвращающаяся цепь.'' Когда вы метаете свое Жестокое изобретение в цель в пределах 6 м от вас, вы можете сразу же вернуть его в свою руку (действие не требуется). Если у Жестого изобретения нет дальности метания, оно получает дальность 2 м.
* ''Крюк-лебёдка.'' Действием, либо вместо одной из атак частью действия [[Атака]], вы можете выбрать целью поверхность, предмет или существо в пределах 4 м от вас и совершить проверку Силы (Атлетика), противопоставленную проверке Силы (Атлетика) или Ловкости (Акробатика) цели (на выбор цели). При успехе, если цель Маленького размера или меньше, вы можете подтянуть её на расстояние до 4 м к себе и [[схватить|Схваченный]] её; либо, если цель Среднего размера или больше, вы можете подтянуться к ней.
---
!!! [img[15.png]] Адаптивная броня
<<<
Вы можете настроить свои доспехи так, чтобы они предоставляли особую защиту.
<<<
Когда вы завершаете продолжительный отдых, вы можете выбрать один вид урона и получить сопротивление к нему до завершения следующего продолжительного отдыха.
---
!!! [img[18.png]] Гонка вооружений
Вы можете дополнительно выбрать до двух опций из умений Жестокое изобретение, Условные варианты или Цепи войны.
<<<
Technology is not good or evil in and of itself. It's all about how people choose to use it.
— David Wong
<<<
The forge rune is a rare divine rune that few priests learn to master. Only by toiling at a forge for years in training can one hope to learn its secrets. You are one such priest. During your apprenticeship, you learned not only the mysteries of divine magic but also the subtle powers of the forge. Guided by the gods and your teachers, you crafted weapons and armor and learned to care for the spiritual and material needs of those who fight for the gods.
A techsmith draws power from the forge rune, imbuing allies' weapons and armor with divine power. At your behest, blades slice through stone with easy, and armor deflects even a dragon's claws.
Dwarf techsmiths are the most common followers of this path. The dwarven heritage of metalwork makes the forge rune a common topic of study among them.
''Techsmiths in the World:'' Faerûn resounds with the measured cadence of blacksmiths hammering out their newest creation, the clitter-clack of tinkers cobbling together the contents of a bin of junk to create something truly useful, and the fizzing pops of chemicals as alchemists labor to create some heretofore unseen form of artificial life. At the head of this orchestra of technological progress can be found the techsmiths of Gond, men and women devoted to the development of new inventions and the progression of achievement in the name of the Wonderbringer.
Thought based in the Lantanese city of Illul, techsmiths can be found throughout the continent as advisors to rulers, as merchants selling fantastic ware, and as builders and operators of small golems tasked with taking care of unsightly municipal duties such as caring for large sewer systems or interring the dead. Theirs is a primarily cosmopolitan pursuit, making techsmiths far more common in cities than in pastoral regions. Most travel widely, however, both to share their own creations and to monitor the creations of folk from all corners of the known world. Because of their skill in building constructs, techsmiths are experts at demolishing them as well, and are sometimes called into service to destroy dangerous things of that type before they cause too much harm. Techsmiths tend toward extreme eccentricity, often cornering themselves with the solution of some mathematical formula far more than personal interaction with their companions. Slow to make friends with those who do not share their obsession with mechanics and explosives (in that order), it often has been said that a techsmith’s only true confidant is the golemlike construct known as a gondsman, who serves as the techsmith’s servant, assistant, and friend.
Those techsmiths who do not adventure often attempt to profit from their proprietary knowledge by creating smokepowder weapons and bombs and selling them to the highest bidder. Unscrupulous techsmiths seek out conflict that they might profit from both sides. Such individuals are a good source of explosives, firearms, and new inventions, and do lucrative business selling their goods to members of the adventuring class. In larger cities with a strong Gondian presence, they may form a guild, but most work alone.
''Techsmiths in Other Worlds:'' Faerûn is the world most associated with techsmiths, yet the path can be found throughtout the multiverse. In the world of Eberron, techsmiths might be found among the artificers of House Cannith, or even outside the house, the gondsman being very similar to a warforged. In the world of Dragonlance, tinker gnomes are often found walking this path. The strange technologies in the Barrier Peaks of the World of Greyhawk have inspired some folk to walk the path of the techsmith.
<<<
''The High Crafthouse of Progress ''
The heart of Gond's church is the High Crafthouse of Progress on the island of Lantan. This temple is run by Franciscus Victorinus the High Techsmith, Most Holy Servant of Gond. Victorinus is the highest-ranking mortal priest of Gond; he is the supreme voice in ecclesiastical matters. The church of Gond consists mostly of wandering priests who travel from settlement to settlement, finding work as artisans and engineers. Settling in one area is only encouraged in centers for innovation that warrant constant observation, such as Balder's Gate and Waterdeep. The church encourages wealth, as it demonstrates the benefits of following Gond. As they travel, priests take samples of any inventions they discover and assist innovators they encounter, filing regular reports to their superiors.
<<<
---
!!Технокузнец
| !Ранг |!Умения |
| !1 |Gondsman, Call of Iron |
| !2 |New Domain, Construct Sense |
| !3 |Golembane, Blessing of the Forge |
| !4 |Technical Knack, Explosive Obsession, Golemsmite |
---
!!!Предварительные условия:
* ''Владение инструментами.'' [[Религия|Инструменты кузнеца]] и [[Инструменты ремонтника]].
* ''Особое.'' Должен поклоняться Гонду или аналогичному богу ремесла.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Gondsman
Upon becoming a techsmith, you can construct a Gondsman – a loyal mechanical warrior, assistant, bodyguard, and friend imbued with the power of the Forge Rune. This first Gondsman costs you nothing, for it is assumed that in the time before becoming a techsmith, you have been researching and working on parts of the Gondsman in your spare time.
A Gondsman is a construct, is made of metal and wood (and is therefore subject to spells such as heat metal). You can create a Gondsman using an NPC Statblock with a CR no higher than 1/3 your character level (minimum CR 1/4). A Gondsman has the following adjustments to the NPC Statblock:
* ''Ability Score Increase.'' It gains a +1 bonus to two ability scores of your choice.
* ''Size.'' The Gondsman can be medium or small.
* ''Speed.'' Its base speed is 30 feet.
* ''Composite Plating.'' Its construction incorporates wood and metal, granting a +1 bonus to Armor Class.
* ''Living Construct.'' Even though it was constructed, it is a living creature. It is immune to disease. It does not need to eat or breathe, but can ingest food if it wishes to. Instead of sleeping, it enters and inactive state for 4 hours each day. It does not dream in this state; it is fully aware of its surroundings and notices approaching enemies and other events as normal.
* ''Languages.'' It can speak, read, and write Common and one other language that you know.
Your Gondsman shares a special bond with you, similar to the relationship of the find familiar spell. The construct acts independently of you, but is always obeys your commands. In combat, it rolls its own initiative and acts on its own turn.
While your Gondsman is within 100 feet of you, you can communicate telepathically. While it is adjacent to you, your Gondsman can maintain concentration on one spell for you as if it had cast the spell. If the spell requires an attack roll or saving throw, you use your ability modifier for the roll or DC.
If your Gondsman is destroyed, or you wish to change the NPC it is based on, you can construct a new body from scratch by spending GP equal to the XP value of the NPC it is based on, and 1 workday per 100 GP of its cost. For example, a CR 2 Gondsman costs 450 GP and takes 3 days to construct.
<<<
''Gondsman and Warforged''
This version of the Gondsman is based on a previous version of the warforged. Feel free to change its racial modifiers to that of whatever version of the warforged you are using.
<<<
!!!Call of Iron
<<<
As you strike your foe, you awaken within your allies’ weapons the indomitable power of iron.
<<<
//Rank 1 Prayer (Recharges on a short or long rest)//
When you hit a creature with a melee weapon attack, the target suffers a 1d4 susceptibility to all bludgeoning, piercing, and slashing damage from metal weapons, until the end of your next turn.
---
!!Ранг 2
!!!New domain
The techsmith can choose a domain from the following list (Forge or Knowledge.) The techsmith receives the domain’s 1st level feature and gains the domain’s spells. A techsmith that has no cleric levels gains no spells or spell slots from this ability, but gains the 1st level feature of the domain they choose.
!!!Construct Sense
You have an innate ability to communicate with constructs within 60 feet, and they recognize you as a kindred spirit. You can communicate telepathically with any construct you can see within 60 feet of you. You don’t need to share a language with the construct for it to understand your telepathic utterances, but the construct must be able to understand at least one language. Additionally, as an action, you can open your awareness to detect such forces. Until the end of your next turn, you know the location of any construct within 60 feet of you that is not behind total cover.
---
!!Ранг 3
!!!Golembane
Because of their superior knowledge of constructs, a techsmith’s unarmed and weapon attacks ignore a constructs resistances. After spending an action to observe a construct for 1 round, the techsmith learns the constructs immunities, vulnerabilities, special senses, traits, attacks, and legendary actions.
!!!Blessing of the Forge
<<<
At your touch, your ally’s armor gains unmatched strength, causing even the mightiest blows to bounce off it.
<<<
//Rank 3 Prayer (Recharges at the start of your turn) //
As a bonus action, until the end of your next turn, one willing creature you touch, other than yourself, gains a +1 bonus to AC, or a +2 bonus if the target is wearing heavy armor.
---
!!Ранг 4
!!!Inspiring Forge Rune
When you spend an inspiration on an attack roll, you and your allies within 25 feet of you gain a +1d10 bonus on damage rolls using weapons until the end of your next turn.
!!!Technical Knack
<<<
You have an increased technical knack, an innate familiarity with the workings of mechanical gadgetry and science.
<<<
Whenever you make an ability check involving alchemical, mechanical, technological, or explosive objects or situations you can add your proficiency bonus. If you would already add your proficiency from a tool or skill, you instead add your proficiency bonus twice, this does not stack with expertise. In addition, the time it takes to create a new Gondsman is halved.
!!!Explosive Obsession
Due to your familiarity with the intricacies of smokepowder, you can create enhanced bombs as described on page 267 of the Dungeon Master’s Guide, except that they deal 2d8 points of fire damage and have a radius of 15 feet. Crafting such a bomb costs 50 GP in raw materials, requires 2 hours, and access to tinker’s tools.
!!!Golemsmite
<<<
You are a lethal foe to any opposing construct.
<<<
//Rank 5 Prayer (Recharges on a long rest) //
When you hit a construct with a melee weapon attack, your attack deals an extra 7d10 damage, and the target must succeed on a Constitution saving throw or be immediately destroyed.
<<<
Дух тигра делает вас более проворным.
<<<
Пока вы пребываете в ярости, дальность ваших прыжков удваивается, а вы получаете скорость карабканья, равную вашей скорости ходьбы, и игнорируете первые 4 м падения, когда определяете урон от падения.
[img width=450 class="centerme" [https://i.imgur.com/LAsCy3r.png]]
<<tabs "[tag[Тифлинг - описание]]" "Описание тифлингов" "$:/state/tab1">>
Тифлинги, связанные с Нессусом, повелевают силами огня и тьмы, ведомые более острым, чем у других, интеллектом, как и подобает тем, кто связан с самим Асмодеем.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Наследие Нессуса |^Вам известен заговор //чудотворство//. При достижении 3 уровня вы можете один раз сотворить заклинание //адское возмездие// как заклинание 2 уровня. При достижении 5 уровня, вы также можете сотворить заклинание //тьма//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Рассыпающееся царство Маладомини находится под властью Вельзевула, который превосходно совращает тех, чьи мелкие грехи можно превратить во влекущие проклятье поступки. Тифлинги, связанные с этим архидьяволом, прекрасно совращают других и физически, и психологически.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Наследие Маладомини |^Вам известен заговор //чудотворство//. При достижении 3 уровня вы можете один раз сотворить заклинание //луч болезни// как заклинание 2 уровня. При достижении 5 уровня, вы также можете сотворить заклинание //корона безумия//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Гласия, криминальный авторитет Преисподних, дарует своим тифлингам магию, полезную для совершения преступлений.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Наследие Малболга |^Вам известен заговор //малая иллюзия//. При достижении 3 уровня вы можете один раз сотворить заклинание //маскировка//. При достижении 5 уровня, вы также можете сотворить заклинание //невидимость//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Громадный город Дис занимает значительную часть второго слоя Преисподних. Это место, где секреты раскрываются тем, кто больше заплатит, что делает тифлингов Диспатера прекрасными шпионами и разведчиками.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Ловкости увеличивается на 1. |
|^Наследие Диса |^Вам известен заговор //чудотворство//. При достижении 3 уровня вы можете один раз сотворить заклинание //маскировка//. При достижении 5 уровня, вы также можете сотворить заклинание //обнаружение мыслей//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Тифлинги, имеющие кровную связь с Зариэль, физически сильнее прочих тифлингов и получают полезные в бою магические способности.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 1. |
|^Наследие Авернуса |^Вам известен заговор //чудотворство//. При достижении 3 уровня вы можете один раз сотворить заклинание //палящая кара// как заклинание 2 уровня. При достижении 5 уровня, вы также можете сотворить заклинание //клеймящая кара//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Левистус правит заледеневшей Стигией и известен как архидьявол, предлагающий сделку тем, кто неотвратимо обречён.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 1. |
|^Наследие Стигии |^Вам известен заговор //луч холода//. При достижении 3 уровня вы можете один раз использовать сотворить //доспех Агатиса// как заклинание 2 уровня. При достижении 5 уровня, вы также можете сотворить заклинание //тьма//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Великий ростовщик Маммон превыше всего любит деньги. Связанные с ним тифлинги великолепно собирают и сохраняют богатство.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Наследие Минауроса |^Вам известен заговор //волшебная рука//. При достижении 3 уровня вы можете один раз сотворить заклинание //Тензеров парящий диск//. При достижении 5 уровня, вы также можете сотворить заклинание //волшебный замок//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
В ледяном царстве Кании Мефистофель даёт магическую силу всем, кто будет ему молиться. Связанные с ним тифлинги немного владеют тайной магией.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта увеличивается на 1. |
|^Наследие Кании |^Вам известен заговор //волшебная рука//. При достижении 3 уровня вы можете один раз сотворить заклинание //огненные ладони// как заклинание 2 уровня. При достижении 5 уровня, вы также можете сотворить заклинание //горящий клинок//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Как мастерский манипулятор, Фьёрна дарует связанным с ней тифлингам сильную личность.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Наследие Флегетоса |^Вам известен заговор //дружба//. При достижении 3 уровня вы можете один раз сотворить заклинание //очарование личности// как заклинание 2 уровня. При достижении 5 уровня, вы также можете сотворять заклинание //внушение//. Вы восстанавливаете способность сотворять эти заклинания с помощью этой особенности, после завершения продолжительного отдыха. Вы также можете сотворять любое из этих заклинаний, используя ваши ячейки заклинаний того же уровня или выше. Базовой характеристикой для этих заклинаний является Харизма. |
Ткачество позволяет создавать ткани из сырья. Это редко входит в сферу деятельности приключенцев, но иногда бывает полезно. Оно существует в основном как фоновое объяснение текстиля. Разделяет владение инструментами с портняжным делом.
```
Модификатор ткачества = бонус мастерства инструментов ткача + модификатор Ловкости
```
Вы можете при помощи этой особой рукопашной атаки сбить цель с ног, или оттолкнуть от себя.
Цель вашего толкания должна находиться в пределах вашей досягаемости, а её размер не должен превышать ваш больше чем на одну категорию. Вы совершаете проверку Силы (Атлетика), противопоставленную проверке Силы (Атлетика) или Ловкости (Акробатика) цели (цель сама выбирает, какую характеристику использовать). Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше. Вы автоматически преуспеваете, если цель [[недееспособна|Недееспособный]]. Если вы преуспеете, вы либо сбиваете цель с ног, либо толкаете её на 1 м от себя.
У вас так же есть возможность толкнуть цель в сторону, а не от себя. При этом вы совершаете свою проверку Силы (Атлетика) с помехой. Если проверка была успешной, вы перемещаете цель на 1 м в другое пространство в пределах своей досягаемости.
Несшибаемые и надёжные, толстошкурые шифтеры черпают свою силу и устойчивость из зверя внутри. Они обычно связаны с медведем или кабаном, но эта подраса может воплощать любого зверя, известного своей стойкостью.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 2, а значение Силы увеличивается на 1. |
|^Ищейка |^Вы владеете навыком Атлетика. |
|^Особенность обращения |^Когда вы обращаетесь, вы получаете дополнительно 1к6 временных хитов. Пока вы обращены, вы получаете бонус +1 к КД. |
[img width=450 class="centerme" [https://i.imgur.com/cljXNXK.png]]
<<tabs "[tag[Тортл - описание]]" "Описание тортлов" "$:/state/tab1">>
| !к12 |!Трагедия |
| 1-2 |Умер член семьи или близкий друг. Проведите бросок по дополнительной таблице «Причина смерти», чтобы узнать, как это произошло. |
| 3 |Дружба закончилась плохо, и кто-то другой теперь настроен враждебно к вам. Причиной могло послужить недопонимание, ваш или его поступок. |
| 4 |Вы потеряли всё, чем владели, из-за бедствия, и вам пришлось начать жизнь с нуля. |
| 5 |Вас осудили на тюремное заключение за преступление, которого вы не совершали, и вы провели 1к6 лет в тюрьме, гребцом на судне или на каторге. |
| 6 |Война разорила ваше родное поселение, превратив всё в руины. Впоследствии вы либо помогли отстроить город, либо отправились в другое место. |
| 7 |Возлюбленный исчез без следа. С тех пор вы ищите этого человека. |
| 8 |Ужасная порча поразила урожай вашего поселения, и многим пришлось голодать. Вы потеряли брата, сестру или другого члена семьи. |
| 9 |Вы сотворили что-то, ужасно опозорившее вас в глазах вашей семьи. Вы могли быть вовлечены в скандал, связаться с тёмной магией или оскорбить кого-то важного. Отношение вашей семьи становится в лучшем случае безразличным. Впрочем, со временем они могут простить вас. |
| 10 |По неизвестным для вас причинам вы были изгнаны из вашего поселения. Вы либо некоторое время скитались по диким землям, либо нашли новое место для жизни. |
| 11 |Роман завершился. Бросьте к6. Чётное число означает, что он завершился чьей-то обидой. Нечётное – что размолвка была по обоюдному согласию. |
| 12 |Ваш нынешний или потенциальный романтический партнёр умер. Проведите бросок по дополнительной таблице «Причина смерти», чтобы узнать, что произошло. Если результатом является убийство, бросьте к12. При результате 1, вы прямо или косвенно являетесь виновником. |
Транспозиция - это способность изменять свойства пространства и манипулировать границами измерений с помощью вашей псионической силы.
---
!!!Мерцающий шаг
В свой ход вы можете заменить свое перемещение телепортацией на 1 м в любом направлении в видимое вами пространство. Вы можете проходить сквозь существ, но не можете проходить сквозь предметы, здания или местность толщиной более 10 см. Это расстояние увеличивается на 1 м (до 2 м) на 5 уровне этого класса, на 2 м (до 3 м) на 11 уровне и становится равным вашей скорости на 17 уровне. Использование этого умения тратит всю вашу скорость.
---
!!!Фазовый разлом
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' На себя
''Компоненты:'' С
''Длительность:'' 1 раунд
Вы шагаете сквозь пространство, перемещаясь на расстояние до 2 м по прямой, оставляя за собой пространственный разлом. Вы можете проходить сквозь существ, но не можете проходить сквозь предметы, здания или местность толщиной более 10 см. Любое существо, оказавшееся на пути этого разрыва, должно преуспеть в спасброске Ловкости, иначе получит 1к8 урона силовым полем.
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Фазовому разлому (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Бесплотный (2 пси-очка):'' Вы можете проходить сквозь твердые объекты, здания и местность, пока ваш Фазовый разлом заканчивается в пространстве, которое вы можете занять. Если ваш Фазовый разлом закончится в пространстве, которое вы не можете занять, способность не сработает.
* ''Длинный (1-3 пси-очка):'' Вы можете переместиться дополнительно на 2 м за каждое потраченное пси-очко.
* ''Перекликающийся (2 пси-очка):'' Вы тем же действием сразу же используете Фазовый разлом ещё один раз.
* ''Размытый (1-3 пси-очка):'' Вы получаете иллюзорную копию, как при использовании заклинания //отражения//. Вы получаете 1 копию за каждое потраченное пси-очко (максимум 3). Одна оставшаяся копия исчезает в начале каждого вашего хода.
* ''Разрушительный (1+ пси-очко):'' Если цель провалит спасбросок, она получит 1к8 урона силовым полем за каждое дополнительно потраченное очко.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Транспозиции, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//мелькание//, //поспешное отступление// |
| !3 |//бесследное передвижение//, //размытый образ//, //туманный шаг// |
| !5 |//громовой шаг//, //мерцание//, //необнаружимость// |
| !7 |//изгнание//, //переносящая дверь//, //рассечение измерения// |
| !9 |//пространственная манипуляция//, //удар стального ветра// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
Когда вы создаёте это оружие выберите 3 простых или воинских оружия. Один раз в ход вы можете трансформировать это оружие в любой из выбранных вариантов (действие не требуется). Когда вы трансформируете оружие, оно заряжается энергией, и в следующий раз, когда вы наносите им урон до конца своего хода, вы наносите дополнительно 1к4 урона электричеством. Вес этого оружия равен весу самого тяжёлого его варианта.
Трансцендентный псион - это чаще всего тот, кто нашел свой путь к псионическим силам через ментальное прозрение, осознав место своего разума в мультивселенной и то, как он связан со всем остальным, увидев ключи и рычаги к миру, разложенные перед ним в его мысленном взоре.
Чаще всего это достигается намеренно или случайно через медитацию и ритуалы, иногда это может быть даже передаваемой по наследству техникой, позволяющей перешагнуть через сугубо материальные заботы и исследовать более когнитивное царство и силы внутри него.
Трансцендентные псионы, как правило, лучше всех контролируют свои возможности и принципы, постигая больший космос, но им не хватает безрассудства, присущего некоторым другим псионам. К сожалению, менее трансцендентные разумы часто не могут понять великие истины, открывшиеся им, и могут считать Трансцендентного псиона немного... своеобразным.
---
!!! [img[1.png]] Просвещенный
<<<
Вы научились наделять свое тело силой своего разума.
<<<
Вам известна псионическая дисциплина [[Усовершенствования|Усовершенствование]].
{{Усовершенствование}}
---
!!! [img[1.png]] Состояние разума
Вы можете игнорировать эффекты также чрезвычайного холода и жары, задерживать дыхание на вдвое больше время, а также обходиться без пищи и сна вдвое большее время, прежде чем подвергнетесь эффектам [[истощения|Истощённый]].
---
!!! [img[3.png]] Баланс сил
Когда вы используете псионическое умение (способность или заклинание), чтобы восстановить хиты или дать временные хиты, вы можете добавить такое же количество хитов в хранящийся резерв. Максимальное значение резерва равно вашему уровню псиона, и все хиты, превышающие максимальное значение, теряются. В следующий раз, когда вы совершаете бросок урона, вы можете потратить этот резерв, чтобы добавить урон, равный сохраненному значению, одной цели броска урона. Этот накопленный резерв теряется, если не будет потрачен в течение 1 минуты.
---
!!! [img[6.png]] Совершенное усовершенствование
Когда вы предоставляете временные хиты с помощью псионической способности, вы можете добавить свой бонус мастерства к временным хитам, полученным одной целью этой способности.
---
!!! [img[10.png]] Ментальный контроль
Вы можете добавлять свой модификатор Интеллекта к результатам спасбросков Телосложения для поддержания концентрации на эффекте псионической дисциплины.
---
!!! [img[14.png]] Разум превыше материи
Когда вы совершаете спасбросок Силы, Ловкости или Телосложения, вы можете потратить 2 пси-очка, чтобы вместо этого совершить спасбросок Интеллекта. Кроме того, когда вы совершаете спасбросок от смерти, вы можете потратить 4 пси-очка перед броском, чтобы считать результат броска равным 20.
[img width=450 class="centerme" [https://i.imgur.com/rXGByzc.png]]
<<tabs "[tag[Тритон - описание]]" "Описание тритонов" "$:/state/tab1">>
Трофеи и добыча - это два подхода к одному и тому же делу, но в целом они зависят от того, какой враг был побежден, с которого вы теперь собираете " материал". Обычно гуманоидные существа, носящие вещи, являются кандидатами для таблиц Индивидуальных трофеев, а аберрации, звери, драконы, монстры и растения - кандидаты на добычу.
[[Актуальные таблицы трофеев и добычи|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=2046152386]]
Если вы (Мастер) обычно не предоставляете награду, эквивалентную стандартным таблицам сокровищ, вам не нужно начинать предоставлять награду, эквивалентную им, используя эти новые таблицы, просто применяйте эти таблицы так часто, как это имеет смысл для вашей игры.
Помните, что вы можете комбинировать их, если в этом есть смысл. Вы можете заменить монеты драгоценными камнями или предметами искусства, вы можете заменить предметы ремесла, которые не имели бы смысла, на монеты, драгоценные камни или предметы искусства и т.д. Таблицы - это просто ориентир и подсказка для удобства определения того, какой ассортимент материалов можно получить из того или иного существа.
''Добыча''
Таблицы Добычи используются для аберраций, драконов, зверей, монстров и растений.
''Останки''
Таблицы Останки опционально используются для существ, не оставляющих тела после смерти, таких как исчадия, небожители, элементали или некоторая нежить (те, кто оставляют тело, могут использовать таблицы Добычи).
''Трофеи''
Таблицы Трофеев используются для гуманоидных существ.
''Сокровищницы''
Для сокровищниц используются стандартые таблицы, но вы можете заменить часть монет, драгоценных камней и предметов искусства на материалы для ремесёл.
---
!!!Простая добыча
Вы можете добыть мясо и шкуры с драконов, зверей или монстров, совершив проверку Мудрости (Выживание). По усмотрению Мастера с существ-растений может добыта еда, используя ту же Сл и количество, но принося обычные свежие ингридиенты вместо мяса.
Простая добыча занимает 10 минут. По усмотрению Мастера, добыча с более крупных существ может занять больше времени.
---
!!!Экзотическая добыча
//Подходящие цели: абберации, драконы, конструкты, монстры, растения и некоторая нежить.//
Бросок к100 определяет, что можно добыть с чудовища. Чтобы собрать материал, не испортив его, совершается проверка Мудрости (Медицина) для драконов и монстров, проверка Интеллекта (Магия) для конструктов, и проверка Интеллекта (Природа) для растений. Добыча с экзотических существ занимает 10 минут. По усмотрению Мастера, добыча с более крупных существ может занять больше времени.
Если зверь обладал достаточной магической силой, либо был достаточно ядовитым, Мастер может использовать колонку Великаны, драконы и монстры для добычи, но это должно быть редкостью; даже ядовитый зверь в большинстве случаев слишком прост для магических свойств собираемых материалов, и для зверей всегда должна быть использована таблица ПО 0-4, независимо от его ПО.
По усмотрению Мастера, можно добыть что-то и с нежити, если у нее есть что-то, что имеет смысл предоставить таким образом, в этом случае используется проверка Интеллекта (Магия). Вероятность того, что нежить принесет что-то полезное, невелика, просто у нее есть редкий шанс предоставить арканные эссенции, хотя некоторые считают использование этих эссенций злом.
<<<
//''Двойная добыча''//
//Если чудовище подходит как для простой добычи, так и для экзотической, вы можете выполнить обе проверки, но вторая проверка получает помеху на бросок для успешного сбора материалов. //
<<<
---
!!!Экзотические останки
//Подходящие цели: исчадия, небожители, элементали и некоторая нежить.//
Некоторые существа обычно не оставляют после себя трупов. Хотя чаще всего они исчезают бесследно, иногда они оставляют после себя фрагмент питающих их магических сил в виде реагента или эссенции. Вероятность того, что из них будет получен ремесленный материал, ниже, но для их успешного сбора не требуется никакой проверки. Собирать остатки очень просто, и на это требуется всего 1 минута.
<<<
//''Применение таблиц материалов''//
//Как Мастер, никогда не чувствуйте себя обязанным применять таблицы, если вам кажется, что лучше сделать что-то другое. Таблицы предоставляют базовые принципы, но если вы чувствуете, что данному монстру имеет смысл оставить после себя тот или иной материал, просто сделайте это, требуя проверку, которая кажется вам наиболее подходящей (используя таблицы как руководство, если хотите). //
<<<
---
!!!Собирательство
Многие материалы могут попросту расти в дикой природе, и они могут быть собраны тем, кто знает, что искать, и тратит на это время.
Если вы потратите 56 часов (7 дней) на собирательство, вы сможете либо совершить две проверки собирательства, либо найти один предмет по вашему выбору (кроме эссенции), доступный в таблице соответствующего биома (совершив проверку характеристики для его сбора), либо 1к12 любых тривиальных предметов (совершив проверку характеристики Сл 8 для его сбора).
Найденные предметы затем нужно собрать. Вы можете выбрать сбор реагентов, поиск материалов или охоту на дичь. Совершите бросок к100 и обратитесь к таблице соответствующего биома, чтобы определить, что можно найти.
[[Актуальные таблицы собирательства|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=1889232522]]
''Сбор реагентов''
Реагенты собираются путем совершения проверки Мудрости. Если у вас есть [[набор травника|Набор травника]] и вы владеете им, вы можете добавить свой бонус мастерства к этой проверке.
''Поиск материалов''
Материалы можно собрать, совершив проверку Силы, Ловкости или Мудрости (на ваш выбор). Если вы владеете навыком Выживание, вы можете добавить к проверке свой бонус мастерства.
''Охота на дичь''
Пищу можно собрать, совершив проверку Ловкости или Мудрости (на ваш выбор). Если вы владеете навыком Выживание, вы можете добавить к проверке свой бонус мастерства.
<<<
//''Умышленно медленно''//
//Собирательство - это система, ограниченная временм. Она не предназначена для того, чтобы быть основным источником материалов. Вместо того, чтобы быть сбалансированной по отношению к таблицам добычи, она сбалансирована по отношению к деятельности, связанной с простоями (и, следовательно, не особенно эффективна). //
<<<
//Требование: 11 уровень//
Вы можете потратить 4 очка ци, чтобы сотворить на себя заклинание //газообразная форма//.
Из всех видов доспехов, тяжёлые доспехи предоставляют лучшую защиту. Эти комплекты доспехов покрывают всё тело и созданы для защиты от самых разных атак. Их вес и нагрузку могут выдержать только самые тренированные воители.
Тяжёлый доспех не позволяет добавлять к Классу Доспеха модификатор Ловкости, но и не даёт штраф, если модификатор Ловкости отрицательный. Под тяжёлыми доспехами необходимо носить дублет, его стоимость включена в цену доспеха.
//''Кольчуга''//. Изготовленная из переплетающихся металлических колец кольчуга включает также слой стёганой ткани, надеваемой под низ, дабы предотвратить натирание и смягчать удары. В комплект входят рукавицы.
//''Наборный доспех''//. Этот доспех состоит из узких вертикальных металлических пластин, приклёпанных к кожаной подложке, носимой поверх слоя ватина. Соединения защищаются кольчужным полотном.
//''Латы''//. Латы состоят из сформированных металлических пластин, покрывающих всё тело. В комплект лат входят рукавицы, тяжёлые кожаные сапоги, шлем с забралом, и толстый слой ватина. Ремешки и пряжки распределяют вес по всему телу.
//''Ростовой щит.''// Большой щит, закрывающие большую часть тела. Форма и размеры ростового щита не позволяют вам совершать провоцированные атаки и использовать его при езде верхом, пока вы удерживаете его в руке.
//''Павеза''//. Тип ростового щита, широко применяемый арбалетчиками. Включает в себя все минусы обычного ростового щита. Этот щит достаточно высок, а его конструкция позволяет вонзить его в землю перед собой, что создает дополнительное укрытие на поле боя.
''Укрытие''. Вы действием можете установить павезу в землю вертикально перед собой. Пока павеза установлена, она предоставляет укрытие на три четверти, но лишает вас бонуса к КД от ношения щита.
Вы сосредоточили своё обучение на мрачном искусстве смерти. Приверженцы этого архетипа, разнообразны: наёмные убийцы, шпионы, охотники за головами и даже особо помазанные священники, обученные истреблять врагов своего божества. Скрытность, яд и маскировка помогут вам уничтожать врагов со смертоносной эффективностью.
---
!!! [img[3.png]] Дополнительные владения
Вы получаете владение [[набором для грима|Набор для грима]] и [[инструментами отравителя|Инструменты отравителя]].
---
!!! [img[3.png]] Ликвидация
<<<
Вы наиболее смертоносны, когда настигаете своих врагов.
<<<
Вы совершаете с преимуществом броски атаки по всем существам, которые ещё не совершали ход в этом бою. Кроме того, все ваши попадания по [[захваченным врасплох|Захваченный врасплох]] существам являются критическими попаданиями.
---
!!! [img[9.png]] Специалист по проникновению
<<<
Вы можете легко создавать для себя ложные личности.
<<<
Вы можете потратить семь дней и 25 см, чтобы создать поддельную личность с историей, профессией и родственными связями. Вы не можете украсть личность, принадлежащую другому лицу. Например, вы можете приобрести соответствующую одежду, рекомендательные письма и официального вида сертификаты, чтобы обозначить себя в качестве члена торгового дома из далёкого города и проникнуть в общество других богатых купцов.
После принятия вами новой личности в качестве маскировки, другие существа верят, что вы являетесь этой личностью, пока не появится очевидная причина не верить этому.
---
!!! [img[13.png]] Самозванец
Вы способны безошибочно подражать речи, почерку и привычкам другого существа. Вы должны потратить не менее трёх часов на изучение этих трёх компонентов поведения существа, слушая его речь, рассматривая почерк и наблюдая за привычками.
Ваше подражание не вызывает подозрений у случайного наблюдателя. Если настороженное существо заподозрит неладное, вы совершаете с преимуществом все проверки Харизмы (Обман), чтобы избежать раскрытия.
---
!!! [img[17.png]] Смертельный удар
<<<
Вы стали мастером мгновенного убийства.
<<<
Если вы попадаете атакой по [[захваченному врасплох|Захваченный врасплох]] существу, оно должно преуспеть в спасбросоке Телосложения (Сл 8 + ваш модификатор Ловкости + ваш бонус мастерства), иначе получит вдвое больше урона от этой атаки.
Если видимое вами Большое или еще большее существо в пределах 1 м от вас попадает или промахивается по вам атакой, вы можете реакцией атаковать это существо сразу после его атаки.
<<<
Ваше упорство может повергнуть самых мощных врагов.
<<<
Один раз в свой ход, когда вы попадаете по существу атакой оружием, вы можете нанести ему дополнительно 1к8 урона, если его хиты уже ниже максимума.
Вы посвятили себя охоте на существ ночи и обладателей мрачной магии. Убийца чудовищ выслеживает вампиров, драконов, злых фей, исчадий и другие магические угрозы. Обученные сверхъестественным техникам истребления подобных монстров, убийцы – эксперты в обнаружении и уничтожении могущественных мистических врагов.
---
!!! [img[3.png]] Магия убийцы чудовищ
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//защита от добра и зла// |
| !5 |//область истины// |
| !9 |//магический круг// |
| !13 |//изгнание// |
| !17 |//удержание чудовища// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Чутьё охотника
<<<
Вы способны оценить существо и определить, как лучше всего навредить ему.
<<<
Действием вы можете выбрать одно видимое вами существо в пределах 12 м от вас. Вы магическим образом узнаёте, имеет ли существо какие-либо иммунитеты, сопротивления или уязвимости, и какие они. Если существо скрыто от магии прорицания, то вы чувствуете, что у него нет иммунитетов, сопротивлений или уязвимостей.
Вы можете использовать это умение количество раз, равное вашему модификатору Мудрости (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[3.png]] Добыча убийцы
<<<
Вы можете сосредоточить свой гнев на одном враге, увеличивая урон, который вы наносите ему.
<<<
Бонусным действием вы можете выбрать одно видимое вами существо в пределах 12 м от вас. Каждый ход, ваше первое попадание по цели атакой оружием наносит дополнительно 1к6 урона вида урона оружия.
Это преимущество действует до завершения вами короткого или продолжительного отдыха, или пока вы не используете это умение против другой цели.
---
!!! [img[7.png]] Сверхъестественная защита
<<<
Вы приобрели дополнительную устойчивость к воздействию вашей жертвы на ваш разум и тело.
<<<
Каждый раз, когда цель вашего умения Добыча убийцы заставляет вас совершить спасбросок или когда вы совершаете проверку характеристики, чтобы перестать быть [[схваченным|Схваченный]] этой целью – добавьте 1к6 к своему броску.
---
!!! [img[11.png]] Каратель заклинателей
<<<
Вы научились препятствовать чужой магии.
<<<
Когда видимое вами существо сотворяет заклинание или телепортируется в пределах 12 м от вас, вы можете реакцией попытаться магическим образом помешать ему. Цель должна преуспеть в спасброске Мудрости против Сл ваших заклинаний, иначе её заклинание или телепортация не срабатывает и тратится впустую.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[15.png]] Контрудар убийцы
<<<
Вы научились контратаковать, когда ваша жертва пытается навредить вам.
<<<
Если цель вашего умения Добыча убийцы заставляет вас совершить спасбросок, то вы можете реакцией совершить одну атаку оружием по этой цели. Вы совершаете эту атаку непосредственно перед совершением спасброска. Если атака попадает, вы автоматически преуспеваете в спасброске.
<<<
Вы способны ловко увернуться от некоторых эффектов, действующих по области, например, огненного дыхания красного дракона или заклинания //град//.
<<<
Если вы попадаете под действие эффекта, который позволяет вам совершить спасбросок Ловкости, чтобы получить только половину урона, вместо этого вы не получаете урона, если спасбросок был успешен, и только половину урона, если он был провален.
Вы можете использовать особую атаку, чтобы существо до такой степени, что оно не решится двинуться в вашу сторону.
Выберите существо в пределах 6 м от вас, которой может слышать или видеть вас. Вы совершаете проверку Харизмы (Запугивание), противопоставленную проверке Харизмы (Запугивание) или Мудрости (Проницательность) цели (цель сама выбирает, какую характеристику использовать). Вы совершает свою проверку с преимуществом, если вы больше цели, или с помехой, если вы меньше. Если вы преуспеете, цель должна тратить 2 метра перемещения за каждый метр, на который она перемещается в вашу сторону, в течение следующей минуты. При провале цель получает иммунитет к этой атаке на 10 минут.
Существо может задержать дыхание на количество минут, равное 1 + модификатор Телосложения (минимум 30 секунд). Каждый раз, когда задерживающее дыхание существо получает урон, оно должно совершить спасбросок Телосложения со Сл равной 10 или половине полученного урона (в зависимости от того, что выше). Если существо получает урон из нескольких источников, оно совершает отдельные спасброски для каждого источника урона. При провале, оставшееся количество минут, на которое существо может задержать дыхание, уменьшается на 1 минуту.
Если существо не может дышать, оно может жить в течение количества раундов, равного модификатору Телосложения (минимум 1 раунд). В начале своего следующего хода его хиты опускаются до 0, оно становится [[умирающим|Умирающий]] и не может восстанавливать хиты и становиться стабилизированным, пока снова не сможет дышать.
До начала вашего следующего хода все броски атаки по вам совершаются с помехой, если вы видите атакующего, а вы совершаете спасброски Ловкости с преимуществом.
Вы теряете это преимущество, если становитесь [[недееспособным|Недееспособный]] или если ваша скорость падает до 0.
Ваша связь с миром природы обретает форму драконьего духа, который может проявляться в физической форме в виде дрейка. По мере роста вашей силы растет и ваш дрейк, превращаясь из маленького четвероногого спутника в величественное крылатое существо, достаточно большое и сильное, чтобы вы могли ездить на нём верхом. Попутно вы получаете всё большую долю благоговейной силы драконов.
Подумайте о природе драконьего духа, с которым вы связаны. Таблица ниже предлагает несколько вариантов.
| !к6 |!Происхождение |
| 1 |Вы изучали драконью чешуйку или коготь, или иную безделушку из сокровищницы дракона, создав свою связь через хранящуюся в этом предмете магию драконов. |
| 2 |Вас обучил тайный орден следопытов, коллекционирующий и охраняющий знания о драконах. |
| 3 |Дракон оставил вам на хранение геод или самоцвет. К вашему удивлению, из этого камня вылупился дрейк. |
| 4 |Вы выпили несколько капель драконьей крови, наделив свою природную магию драконьей силой. |
| 5 |Древние надписи на Драконьем языке, обнаруженные на камнях, даровали вам новые силы, когда вы прочитали текст вслух. |
| 6 |Вам приснился яркий сон о загадочном человеке в сопровождении семи жёлтых канареек, который предупредил вас о приближающейся опасности. Когда вы проснулись, ваш дрейк был рядом и присматривал за вами. |
---
!!! [img[3.png]] Магия укротителя дрейков
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//приказ// |
| !5 |//дыхание дракона// |
| !9 |//полёт// |
| !13 |//кабинет Морденкайнена// |
| !17 |//призыв драконьего духа// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Драконий дар
<<<
Узы, которые вы разделяете со своим дрейком, создают глубокую связь с родом драконов, даруя вам понимание и расширяя ваши возможности.
<<<
Вы получаете следующие преимущества:
//''Язык драконов.''// Вы можете говорить, читать и писать на Драконьем языке или на одном другом языке на ваш выбор.
//''Чудотворство.''// Вы изучаете заговор //чудотворство//, который считается для вас заговором следопыта, но не учитывается в общее количество известных вам заговоров.
---
!!! [img[3.png]] Дрейк-спутник
Вы можете действием магическим образом призвать привязанного к вам дрейка. Он появляется в выбранном вами незанятом пространстве в пределах 6 м от вас.
Дрейк подчиняется вашим командами и дружелюбен к вам и вашим союзникам. Блок характеристик дрейка использует ваш бонус мастерства для определения некоторых значений. Когда вы призываете дрейка, выберите вид урона, указанный в его особенности Сущность дракона. Вы также можете определять внешние характеристики дрейка, такие как его цвет, текстура чешуи или любой видимый эффект его Сущности дракона; ваш выбор не влияет на его игровые характеристики.
Во время сражения дрейк действует в ваш ход. Он может перемещаться и совершать реакции самостоятельно, но действием может совершать только [[Уклонение]], если только вы своим бонусным действием не отдадите ему приказ совершить другое действие. Этим действием может как одно из действий, указанных в блоке характеристик дрейка, так и любое другое [[действие|Действия]]. Если вы [[недееспособны|Недееспособный]], дрейк может совершать любое действие по своему выбору.
Дрейк остается призванным до тех пор, пока его хиты не опустятся до 0, пока вы повторно не призовёте дрейка этим умением, или пока вы не умрёте. Всё, что дрейк носил или нёс, остается на том месте, где дрейк исчезает.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 1 уровня или выше на повторное использование этого умения.
----
!!! [img[7.png]] Узы клыков и чешуи
<<<
Связь, которую вы разделяете со своим дрейком, усиливается, защищая вас и разжигая его ярость.
<<<
Когда вы призываете дрейка, на его спине вырастают крылья, и он получает скорость полёта, равную скорости ходьбы.
Кроме того, пока дрейк призван, вы и дрейк получаете следующие преимущества:
//''Волшебный клык.''// Атака Укус дрейка наносит дополнительно 1к6 урона того вида, который был выбран в его особенности Сущность дракона.
//''Ездовой дрейк.''// Дрейк вырастает до Среднего размера. Благодаря вашей особой связи вы можете использовать дрейка в качестве скакуна, если ваш размер не больше Среднего. Пока вы находитесь верхом на своем дрейке, он не может использовать скорость полёта, полученную этим умением.
//''Сопротивление.''// Вы получаете сопротивление к виду урона, который был выбран в особенности дрейка Сущность дракона.
----
!!! [img[11.png]] Дыхание дрейка
Действием вы можете выдохнуть разрушительное дыхание 12-метровым конусом или приказать вашему дрейку выдохнуть его. Выберите вид урона: кислота, огонь, холод, электричество или яд (ваш выбор не обязательно должен соответствовать Сущности дракона вашего дрейка). Все существа в области выдоха должны совершить спасбросок Ловкости против Сл ваших заклинаний, получая 8к6 урона выбранного вида в случае провала и половину этого урона в случае успеха.
Урон увеличивается до 10к6, когда вы достигаете 15 уровня в этом классе.
После использования этого умения, вы не можете сделать этого повторно, пока не завершите продолжительный отдых или не потратите ячейку заклинаний 3 уровня или выше на повторное использование этого умения.
----
!!! [img[15.png]] Совершенная связь
<<<
Ваша связь с дрейком достигает пика своей силы.
<<<
Пока дрейк призван, вы и дрейк получаете следующие преимущества:
//''Усиленный укус.''// Атака Укус дрейка наносит дополнительно 1к6 урона того вида, который был выбран в его особенности Сущность дракона (до 2к6 суммарно).
//''Большой дрейк.''// Дрейк вырастает до Большого размера. Пока вы находитесь верхом на своем дрейке, он может использовать скорость полёта, полученную от умения Узы клыков и чешуи.
//''Рефлективное сопротивление.''// Когда вы или дрейк получаете урон, находясь в пределах 6 м друг от друга, вы можете реакцией дать себе или дрейку сопротивление получаемому урону. Вы можете использовать эту реакцию количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
Стены, деревья, существа и прочие препятствия могут предоставлять укрытие в бою, осложняя причинение цели урона. Цель получает преимущества за счёт укрытия только от атак и эффектов, исходящих с противоположной стороны укрытия.
Есть несколько степеней укрытия. Если у цели есть несколько источников укрытия, применяется эффект только самого большого; степени не складываются между собой.
Цель с ''укрытием на половину'' получает бонус +2 к КД и спасброскам Ловкости. Цель получает укрытие на половину если препятствие закрывает как минимум половину её тела. Это может быть низкая стена, большая мебель, узкий ствол дерева или существо, как враждебное, так и дружественное.
Цель с ''укрытием на три четверти'' получает бонус +5 к КД и спасброскам Ловкости. Цель получает укрытие на три четверти если препятствие закрывает как минимум три четверти её тела. Это может быть опускная решётка, бойница в стене или широкий ствол дерева.
!!!Удар по укрытию
Если дальнобойная атака промахивается по цели, имеющей укрытие, она может попасть по укрытию.
Для начала определите, попала ли бы атака, если бы цель была без укрытия. Если бросок атаки слишком низкий, чтобы попасть по цели, но достаточно высокий, чтоб попасть по ней, если бы укрытия не было, то атака попадает по объекту, используемому в качестве укрытия. Если укрытие предоставлено существом, и бросок атаки превышает его КД, то атака попадает по укрывающему существу.
* Когда ваши хиты опускаются до 0, вы считаетесь умирающим.
* Вы [[теряете сознание|Бессознательный]].
* Вы должны совершить //спасбросок от смерти// в начале своего хода. В случае трёх провалов вы умираете.
* Если вы получаете урон, будучи умирающим, вы получаете проваленный //спасбросок от смерти//. Если это урон от критического попадания, вы получаете два провала. Если урон равен максимуму ваших хитов или превышает его, вы мгновенно умираете.
* Это состояние оканчивается, когда вы восстанавливаете любое количество хитов.
* Всякий раз, когда оканчивается это состояние, вы получаете +1 степень [[истощения|Истощённый]].
У оружия, заклинаний и боевых умений чудовищ указан причиняемый ими урон. Вы бросаете указанную кость или кости, добавляете модификаторы и причиняете цели получившийся урон. Бонусы к урону предоставляет магическое оружие, особые умения и прочие факторы.
При совершении атаки ''оружием'' (без свойства "механическое" вы добавляете к урону модификатор характеристики — той же самой характеристики, что использовалась для броска атаки. В ''заклинании'' написано, какие кости бросать для определения урона и какие модификаторы применяются.
Если заклинание или эффект причиняет урон сразу нескольким целям, бросок урона совершается один на всех. Например, если волшебник накладывает //огненный шар// или жрец накладывает //небесный огонь//, урон от их заклинаний определяется лишь один раз и причиняется всем существам, по которым попал взрыв.
---
!!!Виды урона
Разные атаки, заклинания и прочие эффекты причиняют разные виды урона. Сами по себе разные виды урона не подчиняются особым правилам, но от них зависят другие элементы игры, такие как сопротивление урону.
Виды урона идут с примерами, помогающими Мастеру определить вид урона для нового эффекта.
//''Дробящий.''// Ударные атаки — молотом, падением, сдавливанием и т. п. — причиняют дробящий урон.
//''Звук.''// Оглушительные звуковые волны, такие как от заклинания волна грома, причиняют урон звуком.
//''Излучение.''// Урон излучением, причиняемый заклинанием //небесный огонь// жреца и карающим оружием ангела, опаляют плоть как огонь и переполняют дух силой.
//''Кислота.''// Едкое дыхание чёрного дракона и растворяющая слизь студенистого куба причиняют урон кислотой.
//''Колющий.''// Протыкающие и пронзающие атаки, включая удары копьём и укусы чудовищ, причиняют колющий урон.
//''Некротическая энергия.''// Некротическая энергия, излучаемая некоторой нежитью и такими заклинаниями как //леденящее прикосновение//, иссушают плоть и даже душу.
//''Огонь.''// Красный дракон, выдыхающий пламя, и многие заклинания, создающие жар, причиняют урон огнём.
//''Психическая энергия.''// Атаки силой разума, такие как у иллитидов, причиняют урон психической энергией.
//''Рубящий.''// Мечи, топоры и когти чудовищ причиняют рубящий урон.
//''Силовое поле.''// Силовое поле - это чистая магия, сфокусированная в разрушительную силу. Чаще всего силовым полем причиняют урон заклинания, такие как //волшебная стрела// и //божественное оружие//.
//''Холод.''// Адский холод копья ледяного дьявола и морозное дыхание белого дракона причиняют урон холодом.
//''Электричество.''// Заклинание //молния// и дыхание синего дракона причиняют урон электричеством.
//''Яд.''// Ядовитые укусы и токсичное дыхание зелёного дракона причиняют урон ядом.
---
!!!Сопротивление урону и уязвимость
Некоторым существам и предметам чрезвычайно трудно или наоборот, легко причинить вред определёнными видами урона.
Если у существа или предмета есть ''сопротивление'' виду урона, то урон этого вида, причиняемый ему, уменьшается вдвое. Если у существа или предмета есть ''уязвимость'' виду урона, урон этого вида для него удваивается.
Сопротивление и уязвимость применяются к урону после всех остальных модификаторов. Например, по существу с сопротивлением к дробящему урону попадает атака, причиняющая дробящий урон 25. Это существо также находится в магической ауре, уменьшающей весь урон на 5. Вначале из урона 25 вычитается 5, а результат делится пополам, так что существо получает урон 10.
Многократные сопротивления или уязвимости к одному и тому же виду урона не складываются. Например, если у существа есть сопротивление к урону огнём и сопротивление к немагическому урону, то урон от немагического огня уменьшается в два, а не в четыре раза.
При совершении броска урона заклинания вы можете потратить 1 очко чародейства, чтобы перебросить кости урона в количестве, не превышающем значение вашего мод. Харизмы (минимум 1). Вы должны использовать новое выпавшее значение.
Вы можете использовать вариант «Усиленное заклинание», даже если вы уже использовали другой вариант Метамагии при сотворении этого заклинания.
При сотворении заклинания со временем сотворения «1 действие» вы можете потратить 2 очка чародейства, чтобы сотворить это заклинание бонусным действием.
Усовершенствование - это способность взаимодействовать с природой и способностями существа с помощью псионической силы.
---
!!!Усовершенствование навыка
Вы можете использовать псионику для усиления своих возможностей. Каждый раз, когда вы совершаете проверку Силы или Ловкости, вы можете добавить 1к4 к результату.
---
!!!Усиливающий всплеск
//Псионическая способность//
''Время сотворения:'' 1 действие
''Дистанция:'' 12 м
''Компоненты:'' С
''Длительность:'' 1 раунд
Вы усиливаете тело видимого вами существа своей псионикой. Цель получает 1к6 временных хитов и в следующий раз, когда она наносит урон, она наносит дополнительно 1к6 урона одной цели этого броска урона. Временные хиты от этой способности исчезают, когда вы используете ее снова.
Вы можете потратить пси-очки в количестве, не превышающем ваш пси-предел, чтобы добавить следующие модификаторы к Усиливающему всплеску (вы можете добавить несколько модификаторов). Очки должны быть потрачены при выборе цели способности.
* ''Дикий (1+ пси-очко):'' Следующая атака оружием цели наносит дополнительно 1к6 урона за каждое дополнительно потраченное очко.
* ''Стремительный (2 пси-очка):'' Цель получает одно дополнительное действие. Этим действием может быть только [[Атака]] (одна атака оружием), [[Засада]], [[Использование предмета]], [[Отход]] или [[Рывок]].
* ''Стойкий (3 пси-очка):'' Цель получает сопротивление ко всем видам урона до начала вашего следующего хода.
* ''Укрепляющий (1+ пси-очков):'' Цель получает дополнительно 1к6 временных хитов за каждое дополнительно потраченное очко.
---
!!!Альтернативные эффекты
Кроме того, когда вы изучаете Дисциплину Усовершенствования, вы можете использовать свое умение Псионика для сотворения следующих заклинаний в соответствии с правилами, указанными в этом умении:
| !ПО |!Заклинания |
| !1 |//героизм//, //раскрытый потенциал//, //скороход// |
| !2 |//малое восстановление//, //смена обличья//, //увеличение/уменьшение// |
| !3 |//защита от энергии//, //ускорение// |
| !4 |//каменная кожа//, //свобода перемещения// |
| !5 |//вложенная компетентность//, //высшее восстановление// |
//ПО - Пси-очки//
Если заклинание может быть сотворено на более высоком уровне, вы можете потратить дополнительные пси-очки, чтобы сотворить его на уровне, равном потраченным пси-очкам.
[img width=500 class="centerme" [https://i.imgur.com/I6DpIGf.png]]
|!Особенность |!Описание |
|^Драконий ужас |^Вы можете действием издать ужасающий рык. Все существа на ваш выбор в пределах 6 м от вас, которые могут видеть и слышать вас, должны преуспеть в спасброске Мудрости (Сл = 8 + ваш бонус мастерства + ваш мод. Харизмы), иначе станут [[испуганными|Испуганный]] вами на 1 минуту. Существо может повторять этот спасбросок в конце каждого своего хода, оканчивая эффект на себе при успехе. Если спасбросок существа был успешным, или эффект на нём окончился, оно получает иммунитет к этой особенности на следующие 24 часа. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
<<<
The earth’s rage abides deep below, stronger than any steel. When roused, it bucks and heaves, it’s runes leaving nowhere to run or hide.
— Korthack Stoneheart, the Earthshaker
<<<
You see in the runes a strength greater than that of any mortal power, and you maintain a stern resolution to bring the power of the gods to bear on those who would threaten the world and the astral domains. The first rune of shielding remains carved into the stone at the heart of the world, where members of your order delve into the darkest shadows to defeat primordials of earth and lava while also learning the secrets of their power. Someday you might make a pilgrimage to that sacred place, but until then you stand at the forefront of any battle. Your runes echo across the battlefield, scattering your foes and fortifying your allies.
Although the earth endures in stillness, entire cities are destroyed when its anger is incited. As a runefire rager, you master a series of secret runes of earth that allow you to cloak your allies in a protective sphere of divine magic or lash out at your foes with its raging fury. The runes have such power that merely speaking them turns aside arrows, knocks swords and axes away from your friends, and blunts your enemies’ most reckless charge. You combine the raging fury of magma with the patience of stone.
''Runefire Ragers in the World:'' Runefire ragers are common among dwarves and goliaths. They scale the greatest peaks of the world or delve into its deepest depths to commune with earth spirits. Here and there, small monasteries stand atop or under mountains where runefire ragers gather. At first glance, the warrior monks of these places seem to be simple ascetics. Woe to the villain that dares disturb their meditations.
''Adaptation:'' Runefire ragers fit in well worshiping any fire or stone deity. In the Sword Coast, they might live atop or below Mount Hotenow, possibly being a collection of monks or warriors dedicated to guarding the fire primordial there. They could also be a cabal of priests living deep in the Underdark, close to the heart of the world. In Eberron, Onatar is a great option for who these individuals’ worship, possible being craftsman themselves.
<<<
''Rune States''
When you use certain Divine Prayers, you are given the option to choose a rune, either Destruction or Protection. This is called entering a rune state. Each rune state will list how long it lasts and any special conditions under which it ends. You can only be in one rune state at a time. Entering a new rune state ends your previous one before it takes effect.
<<<
---
!!Фанатик рунного огня
| !Ранг |!Умения |
| !1 |Guardian Shield, Runefire Inspiration, Battering Rune |
| !2 |Fire’s Wrath, Resilience of Stone, Rune of Shielding |
| !3 |Stonerune Inspiration, Pyroclastic Tide, Serenity of Stone |
| !4 |Hounding Shield of Radiance, Volcanic Rage |
---
!!!Предварительные условия:
* ''Владение навыками.'' Религия.
* ''Умение класса.'' Дополнительная атака.
* ''Особое.'' Должен поклоняться божеству земли, огня или камня.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Guardian Shield
You are able to draw upon a small portion of the power of the first rune of earth. Whenever you make a melee weapon attack, you can enter the Iron Shield rune state. While you are in this rune state, each ally gains a +2 bonus to AC and saving throws while within 5 feet of you. This rune state ends when you move or fall unconscious.
This bonus increases to +4 when you reach Tier 3.
!!!Runefire Inspiration
The fury of the earth erupts for a moment within you. When you spend an inspiration on your turn, each target you hit with an attack before the end of the turn takes an extra 1d4 fire damage and is knocked prone.
The damage dealt by this feature increases when you reach 5th level (1d6), 11th level (1d8), and 17th level (1d12).
!!!Battering Rune
<<<
Divine energy blasts out from a gleaming golden rune suspended in the air, battering your foes. The rune’s light lingers for a moment, blessing you and your allies with divine favor.
<<<
//Divine Prayer • Abjuration, Offensive (Recharges on a Short or Long rest)//
As an action, make a melee attack using a weapon against each creature within a 15-foot cube originating from you, with a separate attack roll for each target. On a hit, your attack deals an extra 1d6 damage, and the target must succeed on a Strength saving throw or be pushed up to 15 feet.
Additionally, the cube creates a zone that lasts until the end of your next turn and you can enter one of the following rune states:
* ''Destruction: ''While within the zone, you and your allies gain a +2 bonus to attack rolls against enemies outside the zone.
* ''Protection: ''While within the zone, you and your allies gain a +2 bonus to AC. The zone is difficult terrain for your enemies.
The extra damage and bonus to attack or AC granted by this prayer increase when you reach 5th level (2d6 and +3), 11th level (3d6 and +4), and 17th level (5d6 and +6).
---
!!Ранг 2
!!!Fire’s Wrath
The fury of the earth exposes itself as your body cracks. While you are bloodied, you gain resistance to fire damage and a +1d4 bonus to damage rolls.
The damage bonus granted by this features increases when you reach 5th level (1d6), 11th level (1d8), and 17th level (1d12).
!!!Resilience of Stone
When an enemy scores a critical hit against you, you can roll a d20. On a 10 or higher, that attack becomes a normal hit instead of a critical hit.
!!!Rune of Shielding
<<<
You channel divine power as you inscribe a rune into the ground. The rune glows with silver energy that spreads into a zone of protection around you.
<<<
//Divine Prayer • Abjuration, Utility (Recharges on a Long rest) //
As a bonus action, you inscribe a rune on the ground under your feet. You create a zone that fills a 15-foot radius sphere centered on the rune for 1 minute. When any enemy enters a space within the zone, its movement is reduced to 0 until the end of the current turn. Enemies can’t be pulled, pushed, or moved to a space within the zone.
You must concentrate on this prayer as if concentrating on a spell.
---
!!Ранг 3
!!!Mighty Guardian
Your mastery over the first rune of earth grows. The bonuses granted by your Guardian Shield path feature increase to +4.
!!!Stonerune Inspiration
When you spend an inspiration for any reason, each ally you can see gains a +2 bonus to AC and saving throws until the start of your next turn.
!!!Pyroclastic Tide
<<<
You swing your weapon mightily, channeling a primal fire that washes over your enemies.
<<<
//Primal Rite • Evocation, Offensive (Recharges on a Short or Long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 1d10 fire damage, and each enemy within 10 feet of you must succeed on a Dexterity saving throw or take 1d4 fire damage.
The initial fire damage and fire damage from a failed saving throw dealt by this prayer increase when you reach 5th level (2d10 and 1d6), 11th level (3d10 and 1d8), and 17th level (5d10 and 1d12).
!!!Serenity of Stone
<<<
Your skin becomes hard as stone, allowing you to shrug off even the most potent attacks.
<<<
//Primal Rite • Transmutation, Utility (Recharges on a Long rest)//
As a bonus action while you’re not raging, you gain resistance to all damage for 1 minute or until you enter a rage.
---
!!Ранг 4
!!!Hounding Shield of Radiance
<<<
Radiance washes over your foe, coalescing in a gleaming shield that whirls around it, spoiling the foe’s attacks.
<<<
//Divine Prayer • Abjuration, Offensive (Recharges on a Long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 1d10 damage.
Additionally, you mark the target for 1 minute. Until the mark ends, when the target hits one of your allies with an attack, you can use your reaction to force the target to make a Wisdom saving throw. On a failed save, the target takes 1d4 radiant damage, and the triggering attack deals only half as much damage.
The extra damage and radiant damage dealt by this prayer increase when you reach 5th level (2d10 and 1d6), 11th level (3d10 and 1d8), and 17th level (5d10 and 1d12).
!!!Volcanic Rage
<<<
Your wrath boils over, radiating from your molten skin and scorching nearby foes.
<<<
//Primal Rite • Evocation, Offensive (Recharges on a Long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 1d10 fire damage, and you enter the Rage of the Volcano. The rage follows the same rules and restrictions as a barbarian’s rage. Until the rage ends, at the start of your turn, you can deal 2d4 fire damage to each enemy within 15 feet of you (no action required). In addition, if an enemy within 5 feet of you hits you, you gain a +2 bonus to attack rolls against that enemy until the end of your next turn.
The initial fire damage and fire damage at the start of your turn dealt by this prayer increase when you reach 5th level (2d10 and 2d6), 11th level (3d10 and 2d8), and 17th level (5d10 and 2d12). Your weapon is sheathed in flame as you strike.
Многие плуты находятся на грани жизни и смерти, рискуя потерять свою жизнь, и отнимают жизни других. Балансируя на этой грани, некоторые плуты раскрывают в себе мистическую связь с самой смертью. Они черпают знания у мёртвых и погружаются в негативную энергию, со временем становясь похожими на призраков. Гильдии воров ценят их как крайне эффективных шпионов и сборщиков информации.
Многие шадар-кай из Царства Теней — мастера этого мрачного направления, а некоторые даже готовы обучить этому искусству. В таких местах, как Тэй в Забытых Королевствах и Каррнат в Эберроне, где многие некроманты практикуют это искусство, фантом может стать доверенным лицом волшебника и его правой рукой. В храмах богов смерти фантомы работают в качестве агентов, отслеживая тех, кто попытался обмануть смерть, и восстанавливая знания, которые без их вмешательства могли бы быть утеряны навсегда.
Как вы открыли в себе эту зловещую силу? Вы уснули на кладбище и проснулись, обладая новыми способностями? Или вы взращивали их, прислуживая в храме или гильдиях воров, посвященных богам смерти?
---
!!! [img[3.png]] Могильные вопли
<<<
Когда из-за вас противник оказывается на волосок от гибели, вы можете направить силу смерти и нанести урон кому-то ещё.
<<<
Сразу после того, как вы нанесёте урон Коварным ударом по существу в свой ход, вы можете выбрать целью второе существо, которое вы видите в пределах 6 м от первого существа. Совершите бросок половины костей Коварного удара на вашем уровне (с округлением в большую сторону), и второе существо получит урон некротической энергией, равный выпавшему на костях значению. На мгновение вокруг него будут слышны вопли мёртвых.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Вы восстанавливаете все потраченные использования после завершения продолжительного отдыха.
---
!!! [img[3.png]] Шёпот мёртвых
<<<
Отголоски тех, кто умер, окутывают вас.
<<<
Каждый раз, когда вы завершаете короткий или продолжительный отдых, призрачная сущность делится с вами знаниями, позволяя получить владение одним навыком или инструментом, которым вы ещё не владеете. Вы теряете это владение при использовании этого умения для замены владения на другое.
---
!!! [img[9.png]] Знаки усопших
<<<
Когда в вашем присутствии кто-то умирает, вы можете запечатлеть частицу души этого существа в виде физической сущности.
<<<
Когда существо, которое вы можете видеть в радиусе 6 м от вас, погибает, вы можете реакцией открыть ладонь своей свободной руки и создать в ней Крошечную безделушку - знак усопшего. Форму безделушки определяет Мастер, или вы можете совершить бросок по таблице Безделушки для её определения. Максимальное количество знаков усопших равно вашему бонусу мастерства, и вы не можете создавать новые, если достигли максимального количества.
Вы можете использовать знаки усопших следующим образом:
* Пока безделушка находится у вас, вы совершаете с преимуществом спасброски от смерти и спасброски Телосложения, поскольку ваша жизненная сила возрастает за счёт сущности, содержащейся в знаке усопшего.
* Когда вы в свой ход наносите урон Коварным ударом, вы можете уничтожить один из своих знаков усопших, находящихся при вас, а затем немедленно использовать умение Могильные вопли без расходования использований.
* Действием вы можете уничтожить один из своих знаков усопших вне зависимости от того, где он находится. Совершая это действие, вы можете задать один вопрос духу, заключенному в этом знаке. Дух появляется перед вами и отвечает на языке, который он знал при жизни. Ответ не обязан быть правдивым, более того, он будет максимально кратким, так как дух стремится скорее покинуть этот мир. Дух знает только то, что он знал при жизни, по выбору Мастера.
---
!!! [img[13.png]] Призрачная походка
<<<
Вы можете частично перейти в царство мёртвых, став подобием призрака.
<<<
Бонусным действием вы принимаете призрачную форму. Находясь в этой форме, вы получаете скорость полёта, равную 2 м, можете парить, а броски атаки по вам совершаются с помехой. Вы также можете перемещаться сквозь других существ и предметы, как если бы они были труднопроходимой местностью. Если вы завершаете ход внутри объекта, вы выталкиваетесь в ближайшее незанятое пространство и получаете 1к10 урона силовым полем за каждый пройденный метр.
Вы остаётесь в этой форме 10 минут или до тех пор, пока не окончите её бонусным действием. Чтобы использовать это умение вновь, вы должны закончить продолжительный отдых или уничтожить один из своих знаков усопших в качестве части бонусного действия для активации Призрачной походки.
---
!!! [img[17.png]] Друг смерти
Ваша связь со смертью стала настолько тесной, что вы получаете следующие преимущества:
* Когда вы используете Могильные вопли, вы можете нанести урон некротической энергией как первому, так и второму существу.
* В конце продолжительного отдыха в вашей руке появляется знак усопшего, если у вас ещё нет знаков, так как духи мертвецов тянутся к вам.
Загадочность фей окружает вас благодаря благословению архифеи, сияющему плоду, который вы съели с говорящего дерева, волшебному источнику, в котором вы плавали, или какому-либо другому удачному случаю. Как бы вы ни овладели вашей магией фей, теперь вы Фейский скиталец — следопыт, представляющий, как царство смертных, так и царство фей. Когда вы блуждаете по мультивселенной, ваш задорный смех озаряет сердца угнетённых, а ваша воинская доблесть вселяет ужас в ваших врагов, ибо велика радость фей и ужасна их ярость.
Фейские скитальцы часто наделены сверхъестественным благословением, дарованным дружественной феей или священным местом фейской силы. Вы можете самостоятельно выбрать дар для вашего персонажа или определить его случайным образом по таблице.
| !к6 |!Дар |
| 1 |Иллюзорные бабочки порхают вокруг вас, когда вы совершаете короткий или продолжительный отдых. |
| 2 |Каждый рассвет в ваших волосах распускается свежий сезонный цветок. |
| 3 |Вы едва заметно пахнете корицей, лавандой, мускатным орехом или другой приятной травой или специей. |
| 4 |Ваша тень танцует, когда никто не смотрит прямо на неё. |
| 5 |На вашей голове растут аккуратные или большие рога. |
| 6 |На рассвете ваш цвет волос и кожи меняют свой цвет в соответствие сезону. |
---
!!! [img[3.png]] Магия фейского скитальца
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//очарование личности// |
| !5 |//туманный шаг// |
| !9 |//рассеивание магии// |
| !13 |//переносящая дверь// |
| !17 |//фальшивый двойник// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Потустороннее очарование
<<<
Ваши фейские качества даруют вам сверхъестественное очарование.
<<<
Каждый раз, когда вы совершаете проверку Харизмы, вы получаете бонус, равный вашему модификатору Мудрости (минимум + 1).
Вы также получаете владение одним из навыков по вашему выбору: Выступление, Обман или Убеждение.
---
!!! [img[3.png]] Ужасающие удары
<<<
Вы усиливаете свои атаки с помощью разрушающей разум магии, подпитанной из сумрачных пустот Страны Фей.
<<<
Когда вы попадаете атакой по цели, вы можете нанести ей дополнительно 1к4 урона психической энергией. Существо может получить этот дополнительный урон только один раз за ход.
Дополнительный урон увеличивается до 1к6, когда вы достигаете 11 уровня в этом классе
---
!!! [img[7.png]] Заманивающий трюк
<<<
Магия Страны Фей охраняет ваш разум.
<<<
Вы совершаете с преимуществом спасброски от [[очарования|Очарованный]] или [[испуга|Испуганный]].
Кроме того, каждый раз, когда вы или существо, которое вы можете видеть в пределах 24 м от вас, преуспеваете в спасброске от [[очарования|Очарованный]] или [[испуга|Испуганный]], вы можете реакцией заставить другое существо, которое вы можете видеть в пределах 24 м от вас, совершить спасбросок Мудрости против Сл ваших заклинаний. В случае провала цель становится [[очарованной|Очарованный]] или [[испуганной|Испуганный]] вами (по вашему выбору) на 1 минуту. Существо может повторять спасбросок в конце каждого своего хода, оканчивая на себе эффект при успехе.
---
!!! [img[11.png]] Подкрепление фей
<<<
Королевские дворы Страны Фей благословили вас помощью фейских созданий.
<<<
Вам известно заклинание //призыв фейского духа//. Это заклинание не учитывается в общем количестве известных вам заклинаний, и вы можете сотворять его без материальных компонентов. Вы также можете сотворить его один раз без использования ячеек заклинаний, и вы восстанавливаете способность сделать это вновь после завершения продолжительного отдыха.
Каждый раз, когда вы начинаете сотворять это заклинание, вы можете изменить его так, чтобы оно не требовало концентрации. Если вы решите это сделать, то его длительность составляет 1 минуту.
---
!!! [img[15.png]] Туманный скиталец
<<<
Вы можете проскользнуть в Страну Фей и выйти из неё, чтобы переместиться за мгновение ока.
<<<
Вы можете сотворять //туманный шаг// без затрат ячеек заклинаний. Вы можете сделать это количество раз, равное вашему модификатору Мудрости (минимум один раз), и восстанавливаете все потраченные использования после завершения продолжительного отдыха.
Кроме того, каждый раз, когда вы используете //туманный шаг//, вы можете взять с собой одно согласное существо, которое можете видеть в пределах 1 м от вас. Это существо телепортируется в свободное пространство по вашему выбору в пределах 1 м от места назначения.
[img width=450 class="centerme" [https://i.imgur.com/n6KCOhX.png]]
<<tabs "[tag[Фирболг - описание]]" "Описание фирболгов" "$:/state/tab1">>
Вы можете действием потратить 1 очко ци, чтобы выбрать область льда или воды в пространстве с длиной стороны не больше 6 м, в пределах 24 м от вас. Вы можете превратить в этой области воду в лёд и наоборот, и вы можете придавать льду в этой области любую форму. Вы можете повысить или понизить уровень льда, создать или заполнить углубление, возвести или сравнять стену, или создать ледяной столб. Размер любого изменения не может превышать половину наибольшей стороны области. Например, если вы изменяете пространство с длиной стороны 6 м, можно создать столб до 3 м в высоту, поднять или опустить высоту области до 3 м, вырыть углубление до 3 м, и так далее. Вы не можете поймать в ловушку или нанести урон существу этим эффектом.
Формовщик - это псион, который специализируется на материализации своего воображения, проецируя его в мир. Не будучи обычным предсказателем, заимствующим силы других Планов, формовщик создает вещи лишь с помощью собственного разума, воплощая свои творения в жизнь благодаря использованию псионической силы и воображения.
Формирующий разум - это инструмент почти непревзойденной силы, обладающий одновременно безграничным творчеством и неумолимой волей, но если эта воля переходит границы, миру стоит опасаться кошмаров формовщика.
---
!!! [img[1.png]] Просвещенный
<<<
Вы научились волеизъявлять содержимое своего разума в мир.
<<<
Вам известна псионическая дисциплина [[Проецирования|Проецирование]].
{{Проецирование}}
---
!!! [img[1.png]] Безграничное воображение
Когда вы создаете Астральный конструкт, вы можете наделить его одной из следующих особенностей:
* ''Псионический проводник.'' Вы можете использовать свои псионические способности, заклинания и таланты через свой Астральный конструкт, как если бы вы находились в его пространстве.
* ''Разрушительное оружие.'' Вы представляете себе более смертоносное вооружение - от огромного меча до зловещих клыков - благодаря чему ваш Астральный конструкт становится еще более смертоносным. Кость урона Астрального конструкта становится равной 1к12.
* ''Яркое бытие.'' Ваш Астральный конструкт полностью материализуется и автоматически использует Затвердевание в начале каждого вашего хода, не требуя для этого команды.
Бонусным действием вы можете заменить эту действующую особенность Астрального конструкта на другую.
---
!!! [img[3.png]] Астральная метастабильность
Когда вы используете свои псионические способности для создания Астрального конструкта, он не требует концентрации для поддержания и действует до тех пор, пока не будет уничтожен, но вы не можете создать еще один, пока создан другой.
---
!!! [img[6.png]] Усиленный конструкт
Когда вы наносите урон Астральным конструктом или оружием, созданным Проекцией предмета, вы можете добавить свой модификатор Интеллекта к наносимому урону.
---
!!! [img[10.png]] Астральный страж
Если вы получаете урон, и ваш Астральный конструкт находится в пределах 6 м от вас, вы можете реакцией призвать его в свое пространство и потратить 1 пси-очко, чтобы совершить команду Затвердевание, после чего Астральный конструкт получает этот урон вместо вас. Если этот урон опускает его хиты до 0, излишки урона переносятся на вас.
---
!!! [img[14.png]] Воображаемая армия
<<<
Вы можете дать волю своему разуму, позволив астральной армии вырваться в реальность.
<<<
Когда вы используете команду Репликация, вы можете создать еще один Астральный конструкт, который можно контролировать тем же действием (команды по-прежнему влияют только на один Астральный конструкт по вашему выбору). Этот дополнительный конструкт действует до начала вашего следующего хода и не может быть поддержан. Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
[img width=330 class="centerme" [https://i.imgur.com/uRRgK7M.png]]
<<tabs "[tag[Фэйри - описание]]" "" "$:/state/tab1">>
[img class="centerme" [https://i.imgur.com/oTsTsKw.png]]
<<tabs "[tag[Харенгон - описание]]" "" "$:/state/tab1">>
Хиты отражают комбинацию физической и умственной стойкости, стремление к существованию и удачу. Существ с большим числом хитов трудно убить. Те, у кого хитов мало — менее жизнеспособны.
Текущие хиты существа (обычно называются просто хитами) могут быть любым числом от 0 до максимума его хитов. Это число часто меняется, когда существо получает урон и лечится.
Каждый раз, когда существо получает урон, этот урон вычитается из его хитов. Потеря хитов отражается на вашей внешности и действиях. Окружающие могут обратить внимание на ваши ранения и изменить своё мнение о вас, а монстры, почуяв вашу кровь, могут впасть в кровожадное бешенство или выследить вас по запаху.
| !≤50% макс. хитов | !Окровавленный |
|Когда вы теряете половину от своего максимума хитов, вы считаетесь ''окровавленным''. |<|
|Вы получили открытые раны или крупные гематомы, и вы подвергаетесь сильной боли во время физической активности. Даже если ваши раны скрыты, видящее вас существо может определить признаки боли, совершив проверку Мудрости (Проницательность) против вашей пассивной Выносливости или проверки Телосложения (Обман), если вы пытаетесь скрыть боль. |<|
|Вы не можете восстанавливать хиты костями хитов. |<|
|Вы можете снять это состояние, либо подняв своё текущее значение хитов выше 50% от максимума, либо потратив действием одно использование //комплекта целителя// на обработку ран. |<|
| !0 хитов | !Умирающий |
|Когда ваши хиты опускаются до 0, вы считаетесь ''умирающим''. |<|
|Вы [[теряете сознание|Бессознательный]]. |<|
|Вы должны совершить //спасбросок от смерти// в начале своего хода. В случае трёх провалов вы умираете. |<|
|Если вы получаете урон, будучи ''умирающим'', вы получаете проваленный //спасбросок от смерти//. Если это урон от критического попадания, вы получаете два провала. Если урон равен максимуму ваших хитов или превышает его, вы мгновенно умираете. |<|
|Это состояние оканчивается, когда вы восстанавливаете любое количество хитов. |<|
|Всякий раз, когда оканчивается это состояние, вы получаете +1 степень [[истощения|Истощённый]]. |<|
---
!!!Лечение
Если урон не вызвал смерть, он не постоянен. И даже смерть можно обратить мощной магией. Хиты существа восстанавливаются отдыхом, а магия, такая как заклинание //лечение ран// или //зелье лечения// устраняют урон мгновенно.
Если существо получает какое-либо лечение, восстановленные хиты добавляются к его текущим хитам. Хиты существа не могут превышать его максимум хитов, поэтому лишние хиты теряются. Например, друид восстанавливает следопыту 8 хитов. Если у следопыта сейчас 14 хитов, а максимум хитов 20, следопыт восстанавливает 6 хитов, а не 8.
Умершее существо не может восстанавливать хиты, пока такая магия как //возрождение// не вернёт его к жизни.
---
!!!Временные хиты
Некоторые заклинания и особые умения дают существам временные хиты. Временные хиты это не настоящие хиты; это заслон от урона, буфер, защищающий от ран.
Если у вас есть временные хиты и вы получаете урон, временные хиты снимаются первыми, а излишки урона переносятся на обычные хиты. Например, если у вас есть 5 временных хитов и вы получаете урон 7, вы теряете все временные хиты и получаете урон 2.
Из-за того, что временные хиты это не настоящие хиты, их количество может превышать максимум хитов. Таким образом, персонаж может иметь полные хиты и получать при этом временные хиты.
Лечение не восстанавливает временные хиты, и они не складываются вместе. Если у вас есть временные хиты, и вы получаете ещё некоторое количество их, вы сами решаете, какие использовать: старые или новые. Например, если заклинание дарует вам 12 временных хитов, когда у вас уже есть 10, у вас может быть или 10 или 12 временных хитов, но не 22.
Если у вас 0 хитов, получение временных хитов не приводит вас в сознание и не стабилизирует вас. Они всё ещё могут поглощать урон, причиняемый вам, но спасти вас может только настоящее лечение.
Если умение, даровавшее временные хиты, не указывает их длительность, они существуют, пока не кончатся, или пока вы не завершите продолжительный отдых.
---
!!!Кости Хитов
В конце [[отдыха|Отдых]] персонаж может потратить одну или несколько Костей Хитов. Каждая потраченная кость позволяет совершить бросок соответствующей кости, добавить к ней модификатор Телосложения и восстановить хиты в количестве, равном полученному значению (минимум 1). Потраченные Кости Хитов восстанавливаются в конце [[продолжительного отдыха|Продолжительный отдых]] в соответствии с выбранным [[образом жизни|2. Выберите образ жизни]].
[img width=450 class="centerme" [https://i.imgur.com/30DhufK.png]]
<<tabs "[tag[Хобгоблин - описание]]" "Описание хобгоблинов" "$:/state/tab1">>
[img class="centerme" [https://i.imgur.com/H7OZTxV.png]]
Будучи холмовым дварфом вы обладаете обострёнными чувствами, развитой интуицией и замечательной стойкостью. Золотые дварфы Фаэруна, в их могучем южном королевстве являются холмовыми дварфами, также как и изгнанные нейдары и свихнувшиеся клары из Кринна (мир Саги о Копье).
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Мудрости увеличивается на 1. |
|^Дварфская выдержка |^Максимальное значение ваших хитов увеличивается на 1, и вы получаете 1 дополнительный хит с каждым новым уровнем. |
| !ПО |!Животное |!Скорость полёта/плавания |
| 0 |Бабуин |— |
| 0 |Орёл |Скорость полёта |
| 0 |Козёл |— |
| 0 |Гиена |— |
| 0 |Ворон |Скорость полёта |
| 0 |Гриф |Скорость полёта |
| 1/8 |Кровавый ястреб |Скорость полёта |
| 1/8 |Гигантская куница |— |
| 1/8 |Мастифф |— |
| 1/8 |Мул |— |
| 1/8 |Ядовитая змея |Скорость плавания |
| 1/8 |Кровопийца |Скорость полёта |
| 1/4 |Топороклюв |— |
| 1/4 |Кабан |— |
| 1/4 |Лось |— |
| 1/4 |Гигантская сова |Скорость полёта |
| 1/4 |Гигантский паук-волк |— |
| 1/4 |Пантера (пума) |— |
| 1/4 |Волк |— |
| 1/2 |Гигантский козёл |— |
| 1 |Бурый медведь |— |
| 1 |Лютый волк |— |
| 1 |Гигантский орёл |Скорость полёта |
| 1 |Гигантская гиена |— |
| 1 |Лев |— |
| 2 |Гигантский кабан |— |
| 2 |Гигантский лось |— |
[img width=360 class="centerme" [https://i.imgur.com/B24IVnB.png]]
Храбрые сердцем ааракокра используют свои крепкие крылья для получения превосходства над своим противником.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Силы увеличивается на 1. |
|^Воздушное превосходство |^Когда вы наносите существу урон атакой или заклинанием, и у существа нет скорость полёта или парения, вы можете этой атакой или заклинанием нанести цели дополнительный урон, равный вашему бонусу мастерства. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|^Мощные крылья |^Вы можете использовать скорость полёта от особенности "крылья", когда носите средние доспехи или щиты. |
Ощущая глубокую связь с окружающим миром, некоторые следопыты используют свои магические связи, чтобы прикоснуться к природе и связывать себя с роем природных духов. Этот рой становится серьёзной силой в бою, а также полезной компанией следопыту. Некоторые Хранители роя считаются изгоями и отшельниками — они стараются держаться отдельно ото всех вместе со своим роем и никого не беспокоить. Другие Хранители роя наслаждаются организацией ярких сообществ, работающих сообща над общим благополучием тех, кого они считаю частью своего роя.
Рой и заклинания хранителя роя являются отражением связи персонажа с духами природы. Воспользуйтесь этой возможностью для того, чтобы описать рой и магию следопыта в игре. Например, когда ваш следопыт использует заклинание газообразная форма, он может как будто раствориться в рое, а не просто превратиться в туманное облако, а при использовании заклинания магический глаз следопыт может использовать небольшую часть своего роя, которая будет заниматься шпионажем. Такие описания не изменяют эффекты заклинаний, но они предоставляют удивительную возможность раскрывать историю вашего персонажа через его классовые умения.
Кроме того, помните, что внешний вид роя можно изменять самостоятельно, и не ограничивайтесь только одним вариантом. Возможно, облик духов будет меняется в зависимости от настроения следопыта или от времени года. Вам решать!
---
!!! [img[3.png]] Магия хранителя роя
Вы изучаете заговор //волшебная рука//, если не знали его до этого. Когда вы сотворяете это заклинание, рука выглядит как рой духов природы.
На каждом указанном уровне следопыта вы добавляете перечисленные заклинания к своим известным заклинаниям. Для вас они считаются заклинаниями следопыта, однако они не учитываются в общем количестве известных вам заклинаний.
| !УС |!Заклинания |
| !3 |//огонь фей// |
| !5 |//паутина// |
| !9 |//газообразная форма// |
| !13 |//магический глаз// |
| !17 |//нашествие насекомых// |
//УС - Уровень следопыта//
---
!!! [img[3.png]] Собравшийся рой
<<<
Рой бестелесных духов природы связал себя с вами и может помогать вам в сражениях.
<<<
Пока вы живы, рой остается в пределах занимаемого вами пространства, ползая по вам, летая вокруг вас, пробиваясь через вашу одежду или проносясь на большой скорости рядом с вами. Вы определяете его внешний вид самостоятельно или с помощью броска по таблице ниже.
| !к4 |!Внешний вид роя |
| 1 |Роящиеся насекомые |
| 2 |Миниатюрные ветвистые заразы |
| 3 |Порхающие птицы |
| 4 |Игривые пикси |
Один раз в каждый свой ход вы можете призвать рой помочь вам одним из следующих способов сразу же после того, как вы попадёте по существу атакой:
* Цель атаки получает 1к6 колющего урона от роя.
* Цель атаки должна преуспеть в cпасброске Силы против Сл ваших заклинаний, иначе будет перемещена роем на 3 м по горизонтали в направлении по вашему выбору.
* Рой перемещает вас на 1 м по горизонтали в направлении по вашему выбору.
---
!!! [img[7.png]] Извивающаяся волна
<<<
Вы можете сделать так, чтобы часть вашего роя стала плотной массой, которая может поднимать вас вверх.
<<<
Бонусным действием вы можете получить скорость полёта 2 м и возможность парить. Этот эффект длится в течение 1 минуты или до тех пор, пока вы не станете [[недееспособным|Недееспособный]].
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[11.png]] Могущественный рой
Ваше умение Собравшийся рой получает следующие усиления:
* Урон Собравшегося роя увеличивается до 1к8.
* Если существо проваливает спасбросок против перемещения Собравшимся роем, вы также можете приказать рою [[сбить с ног|Сбитый с ног / Лежащий ничком]] это существо.
* Когда вы перемещаетесь Собравшимся роем, он даёт вам [[укрытие на половину|Укрытие]] до начала вашего следующего хода.
---
!!! [img[15.png]] Растворение в рое
<<<
Вы можете раствориться в своём рое, избегая опасности.
<<<
Когда вы получаете урон, вы можете реакцией получить сопротивление этому урону. Вы растворяетесь в своем рое, а затем телепортируетесь в незанятое пространство, которое можете видеть в пределах 6 м от вас, где вы вновь появляетесь вместе со своим роем.
Вы можете использовать это умение количество раз, равное вашему бонусу мастерства. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
Сосредоточенные на манипуляции временем, те, кого называют хронургами, учатся изменять темп реальности по своему вкусу. Используя потенциал энергии дюнамиса, эти вошебники так же ловко играют временем, как опытный музыкант играет на инструменте, предоставляя себе и своим союзникам преимущество в мгновение ока.
---
!!! [img[2.png]] Расширенный список заклинаний
Ваше знание дюнамантии позволяет вам при изучении заклинаний волшебника выбирать из более широкого списка. В ваш список заклинаний волшебника добавляются следующие заклинания.
| !УЗ |!Заклинания |
| !0 |//иссушающий укол// |
| !1 |//дар готовности// |
| !2 |//благосклонность фортуны//, //наручный карман// |
| !5 |//временной скачок// |
| !7 |//связь сущностей// |
| !8 |//разрыв реальности// |
| !9 |//временное уничтожение// |
//УЗ - Уровень заклинания//
---
!!! [img[2.png]] Темпоральная осведомлённость
Вы можете использовать сумму своих модификаторов Ловкости и Интеллекта при совершении проверки инициативы.
---
!!! [img[2.png]] Хроно-сдвиг
<<<
Вы можете магическим образом осуществлять ограниченный контроль над течением времени вокруг существа.
<<<
После того как вы или видимое вами существо в пределах 6 м от вас, совершаете бросок атаки, проверку характеристики или спасбросок, вы можете реакцией заставить существо повторить бросок и использовать новый результат. Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
Вы можете использовать это умение дважды. Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[6.png]] Кратковременный стазис
Вы можете действием магическим образом заставить видимое вами существо Большого или меньше размера в пределах 12 м от вас совершить спасбросок Телосложения против Сл ваших заклинаний. При провале существо будет заключено в поле магической энергии до конца вашего следующего хода или пока существо не получит урон. Находясь в этом заключении, существо [[недееспособно|Недееспособный]], а его скорость равна 0.
Вы можете использовать это умение количество раз, равное вашему модификатору Интеллекта (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[10.png]] Сжатие магии
Когда вы сотворяете заклинание со временем сотворения «1 действие» или «1 бонусное действие», используя ячейку 4 уровня или ниже, вы можете сжать магию заклинания в особую бусину. Заклинание замораживается во времени после сотворения и удерживается внутри этого крохотного серого шарика в течение 1 часа. Эта бусина является Крошечным предметом с КД 15 и 1 хитом. Также она обладает иммунитетом к урону психической энергией и ядом. Когда длительность сжатия оканчивается или бусину уничтожают, она исчезает во вспышке света, и заклинание теряется.
Существо, удерживающее бусину, может действием высвободить заклинание, после чего бусина исчезает. Заклинание использует ваши бонус атаки заклинанием и Сл спасброска, но заклинание рассматривает как заклинателя именно существо, которое высвободило заклинание, во всех остальных случаях.
Создав бусину этим умением, вы не сможете сделать этого снова, пока не завершите короткий или продолжительный отдых.
---
!!! [img[14.png]] Конвергентное будущее
<<<
Вы можете просмотреть возможные варианты будущего и магическим образом втянуть одно из них в текущие события вокруг вас, обеспечивая определённый результат.
<<<
Когда вы или видимое вами существо в пределах 12 м от вас совершаете бросок атаки, проверку характеристики или спасбросок, вы можете реакцией проигнорировать бросок кубика и решить, является ли результат броска минимально необходимым для успеха или на один меньше нужного числа (на ваш выбор). Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
Каждый раз когда вы используете это умение, вы получаете одну степень [[истощения|Истощённый]]. Вы можете устранить степень истощения, полученную таким образом, только завершив продолжительный отдых.
Драконорождённые, происходящие от цветных драконов обладают стихийными силами цветных драконов. Яркие цвета — черный, синий, зеленый, красный и белый — сверкают на их чешуйчатой коже, а также наполняют смертельной энергией их оружие дыхания. Они — это чистая стихийная ярость вулкана, пронизывающий арктический ветер или бушующий грозовой шторм, а также тихий шёпот болот и лесов, ядовитый и разъедающий.
|!Особенность |!Описание |<|
|^Увеличение характеристик |^Значение вашего Телосложения или Интеллекта на ваш выбор увеличивается на 1. |<|
|^Наследие цветного дракона |^Ваш предок - цветной дракон даровал вам особую магическую предрасположенность. Выберите один вид дракона из таблицы ниже. Ваш выбор определяет вид урона для других ваших особенностей. |<|
|~|^!Дракон |^!Вид урона |
|~|^Белый |^Холод |
|~|^Зелёный |^Яд |
|~|^Красный |^Огонь |
|~|^Синий |^Электричество |
|~|^Чёрный |^Кислота |
|^Сопротивление дракона |^Вы получаете сопротивление к урону того вида, который указан в вашем Наследии цветного дракона. Кроме того, зелёные драконорождённые совершают спасброски от яда с преимуществом. |<|
|^Защита цветного дракона |^Начиная с 5 уровня, вы можете действием направить драконью энергию на свою защиту. На 1 минуту вы получаете иммунитет к урону того типа, который указан в вашем Наследии цветного дракона. Вы не можете использовать эту особенность повторно, пока не завершите продолжительный отдых. |<|
Когда вы совершаете бросок урона этим оружием, вы можете один раз за атаку перебросить любое количество костей урона оружия, и должны использовать новый результат. После попадания атакой этим оружием частью действия [[Атака]], если у вас есть дополнительные атаки, которые вы можете совершить частью этого действия (правила сражения двумя оружиями не применяются), вы можете отказаться от этих атак, чтобы нанести дополнительно 4к4 рубящего урона за каждую отменённую атаку.
[img width=460 class="centerme" [https://i.imgur.com/O5bfRSn.png]]
<<tabs "[[Описание чародеев]] [[Классовые умения чародеев]] [[Источники чародейства]]" "" "$:/state/tab1">>
<<<
Ваша магия очарования позволяет этому выстрелу временно запутать свою цель.
<<<
Существо, по которому попал выстрел, получает дополнительно 2к6 урона психической энергией. Цель должна преуспеть в спасброске Мудрости, иначе будет [[очарована|Очарованный]] вашим союзником, выбранном вами в пределах 6 м от цели, до начала вашего следующего хода. Этот эффект заканчивается раньше если выбранный союзник атакует [[очарованную|Очарованный]] цель, нанесёт ей урон или заставит совершить спасбросок.
После достижения вами 18 уровня в этом классе, дополнительный урон этого выстрела увеличивается до 4к6.
Всякий раз когда вы достигаете нового уровня, убедитесь, что вы выполнили следующее:
* Увеличьте уровень вашего класса (или одного из классов) на 1.
* Получите дополнительные умения соответствующего уровня, указанные в описании этого класса.
* Изучите новые и/или замените старые заклинания и получите ячейки заклинаний, если этот класс является заклинателем.
* Получите 1 дополнительную Кость Хитов этого класса.
* Определите ваше новое максимальное значение хитов одним из двух способов:
** Совершите бросок новой Кости Хитов. При выпадении значения ниже среднего для вашего класса, перебросьте кость и выберите между старым и новым значением. Добавьте ваш модификатор Телосложения к результату и прибавьте полученное число (минимум 1) к максимальному значению хитов.
** Прибавьте к максимальному значению хитов фиксированное значение, указанное в описании этого класса (минимум 1).
* Если ваш модификатор Телосложения увеличивается на 1, увеличьте максимальное значение ваших хитов на 1 за каждый достигнутый вами уровень.
* Увеличьте ваше значение бонуса мастерства на 1, при достижении 5, 9, 13 и 17 уровней ''персонажа''.
* Обновите значения умений, черт или других особенностей, которые основаны на вашем уровне.
[img class="centerme" [https://i.imgur.com/MXusjdw.png]]
<<tabs "[[Описание людей]][[Описание полулюдей]][[Описание калаштар]][[Особенности людей]]" "$:/state/tab1">>
[img width=175 class="centerme" [https://i.imgur.com/tMnyULq.png]]
Происхождение и склад ума людей-специалистов позволяет им посвятить себя искусному овладению узкой специализации.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Интеллекта, Мудрости или Харизмы на ваш выбор увеличивается на 1, а значение одной другой характеристики на ваш выбор увеличивается на 1. |
|^Специализация |^Вы получаете владение одним навыком и одним инструментом на ваш выбор. Ваш бонус мастерства удваивается для всех проверок характеристик, используя этот навык или инструмент. |
[img width=210 class="centerme" [https://i.imgur.com/6ACa0k4.png]]
Люди-эрудиты отличаются разносторонней осведомлённостью и широким кругозором.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение всех ваших характеристик увеличивается на 1. |
|^Навык |^Вы получаете владение одним навыком на ваш выбор |
Архетип Чемпиона сосредоточен на развитии чистой физической силы, отточенной до смертельного совершенства. Выбравший для себя архетип Чемпиона сочетает суровые тренировки с физическим совершенством, позволяющим наносить сокрушительные удары.
---
!!! [img[3.png]] Улучшенные критический попадания
Критический диапазон ваших атак оружием увеличивается на 1. Он увеличивается ещё на 1 на 15 уровне этого класса.
---
!!! [img[7.png]] Выдающийся атлет
Вы можете добавлять половину бонуса мастерства, округлённую в большую сторону, ко всем проверкам Силы, Ловкости или Телосложения, куда этот бонус еще не включён.
Кроме того, дальность ваших прыжков с разбега увеличивается на 1 м.
---
!!! [img[10.png]] Дополнительный боевой стиль
Вы можете выбрать второй боевой стиль. Вы не можете выбирать один и тот же вариант боевого стиля, даже если позже у вас будет возможность выбрать ещё один стиль.
Каждый раз, когда вы получаете уровень в этом классе, вы можете заменить изученный этим умением боевой стиль на другой, доступный воину.
---
!!! [img[18.png]] Уцелевший
<<<
Вы достигаете вершины стойкости в бою.
<<<
В начале каждого своего хода вы восстанавливаете хиты в количестве равном 5 + ваш модификатор Телосложения, если количество ваших хитов выше 0 и не превышает половины от максимума.
<<<
I have left blood in every arena in the Seven Cities; there is little that can surprise me now.
— Korrgah Bloodtusk, Arena Champion of Grecome
<<<
The people need heroes. They need brave individuals to show them that adversity can be overcome no matter how tough the opposition. They need to witness battle to slake their thirst for blood, to vent their frustration and anger about their own lives. They need gladiators, for these bold warriors give them all they need and more.
''Gladiator Champions in the World: ''Naturally, most gladiators are slaves. Chosen for this fate because of their strength or skill, they live and die at the crowd's favor, pitting what training they acquire against myriad foes, never knowing when they will face an insurmountable foe, never sure when their opponent will be their equal. Arena masters understand that their warriors fight with passion when they have something to fight for, and so they offer freedom, wealth, pleasure, or some other incentive to stoke the fires and keep their captive warriors eager for victory. Freedom is the greatest prize, of course—but the games are so violent that few gladiators live long enough to earn the victories they need to escape.
The life of a gladiator is brutish and brief, but it is the one occupation a slave can hold that also brings respect. Gladiators are heroes to the common people. Their trials and victories are the stuff of legend, and many slaves grow comfortable from the accolades their conquests bring.
''Gladiator Champions in the Game:'' You are the champion the people demand. You might have come from humble roots, having grown up as a slave or a criminal, or you could be a professional who chose this dangerous life for glory and coin. Regardless, something about you and your courage resonates with the people, and you become more than just another warrior fighting for your life in the pit. You are their hero.
''Adaptation:'' If your setting doesn't have slavery or trial by combat, then a gladiator arena can be a place where warriors fight for coin and glory. The "Pit Fighting" Downtime activity described in Xanathar's Guide to Everything is a good example of an arena without death being on the line. It just uses three ability checks to determine the outcome of a week of matches, but it wouldn't be hard to create your own arena fights.
Single combat is often boring for the other players to watch, so it's usually a good idea to come up with group battles, with objectives outside of "To the Death".
<<<
''Arena of Blood ''
The infamous Arenas of Blood, also known as the Blood Arenas, were a pair of identical gladiatorial arenas located in the city of Manshaka in Calimshan.
The Arenas were large, circular structures, walled all around and with two levels of stands for spectators. The high walls around the arena bore banners and circular emblems depicting downward-pointing daggers. Huge gates led down to the dungeons beneath.
Beneath each Arena was a labyrinth of passages and tunnels intended to prevent escape, in addition to 100 guards. These dungeons were such a maze that it took the gladiator Vajra two years to memorize them before she made good her escape. Since that time, by 1357 DR, a blue dragon was kept in the dungeons as a guardian, though it was slain that year.
<<<
---
!!Чемпион-гладиатор
| !Ранг |!Умения |
| !1 |Halo of Destruction, Opening Ploy |
| !2 |Fail to Disappoint, Undaunted Inspiration |
| !3 |Whirlwind of Destruction |
| !4 |Finishing Strike |
---
!!!Предварительные условия:
* ''Владение навыками.'' Акробатика или Атлетика, и Выступление.
* ''Умение класса.'' Дополнительная атака.
---
!!Ранг 1
!!!Halo of Destruction
Whenever you reduce a creature to below half its hit point maximum, each creature of your choice adjacent to you (other than the triggering creature) takes psychic damage equal to your Strength modifier or Dexterity modifier (your choice) + your Proficiency Bonus. Creatures immune to being frightened are immune to this damage.
!!!Opening Ploy
<<<
An attack against one of your enemies reveals weakness in all of them, helping you seize whatever advantage it might grant you.
<<<
//Gladiator Champion • Martial, Offensive, Weapon (Recharges after a short or long rest)//
When you hit a creature with a melee attack using a weapon, your attack deals an extra 2d10 damage, and you can move the target up to 10 feet.
In addition, until the end of your next turn, you and your allies gain advantage on attack rolls against the target and whenever you or your allies hit a creature adjacent to the target with an attack, the attack deals an extra 1d6 damage.
This exploit's damage increases when you reach certain levels. Both damage rolls increase by 1 die at 9th level (3d10 and 2d6), 13th level (4d10 and 3d6), and 17th level (5d10 and 4d6).
---
!!Ранг 2
!!!Fail to Disappoint
<<<
No matter how grim the situation, you find a way to snatch victory from the jaws of defeat.
<<<
//Gladiator Champion • Martial, Utility (Recharges at the start of each of your turns) //
When you are hit and damaged by an enemy's attack while you are below half your hit point maximum, you can move 5 feet without provoking opportunity attacks (no action required). If you do so, you can move the target up to 5 feet into the space you just left, and you gain advantage on attack rolls against the target until the end of your next turn.
!!!Undaunted Inspiration
When you make an attack and are below half your hit point maximum you can spend one inspiration to roll an additional d20. You can choose to spend the inspirations after you roll the die, but before the outcome is determined. You choose which of the d20s is used for the attack roll.
---
!!Ранг 3
Whirlwind of Destruction
Creatures of your choice within 5 feet of you cannot benefit from the Disengage action.
---
!!Ранг 4
!!!Finishing Strike
<<<
You close in for the kill when you sense your enemy's reserves failing, then compel the foe's allies to stay for the slaughter.
<<<
//Gladiator Champion • Martial, Offensive, Stance, Weapon (Recharges after a long rest) //
When you hit a creature with a melee attack using a weapon, your attack deals an extra 5d10 damage.
In addition, you assume the Finishing Strike stance which lasts for 10 minutes, fall unconscious, or enter a new stance. Until the stance ends, whenever you deal damage to a creature below half its hit point maximum, each creature of your choice adjacent to the triggering creature has its speed reduced to 0 until the end of your next turn.
You can also end the stance at any time (no action required).
<div class="tc-table-of-contents">
<<toc-selective-expandable "Чувства и скрытность">>
</div>
Вы выросли в глуши, вдали от цивилизации и её благ. Вы видели миграцию стад, чей размер был больше леса, выживали при температуре, которую горожанам и не представить, и наслаждались таким уединением, что на многие мили вокруг вы были единственным мыслящим существом. Дикая природа в вашей крови, будь вы кочевником, исследователем, затворником, охотником-собирателем или даже мародёром. Даже в неизвестном месте вы найдёте что-то, что вам понятно.
* ''Владение навыками:'' Выживание, Выносливость
* ''Владение инструментами:'' Один [[музыкальный инструмент|Музыкальные инструменты]]
* ''Языки:'' Один на ваш выбор
* ''Снаряжение:'' Походный посох, охотничий капкан, трофей с убитого животного, комплект дорожной одежды, кошель с 10 см
!!!Занятие
Вы были в необычных местах и видели такое, что другие не могут даже вообразить. Подумайте, какие далёкие земли вы посетили, и как они на вас повлияли. Можете совершить бросок по прилагающейся таблице, чтобы определить, чем вы занимались в глуши, а можете сделать выбор самостоятельно.
| !к10 |!Занятие| !к10 |!Занятие |
| 1 |Изгнанник | 6 |Охотник за головами |
| 2 |Кочевник | 7 |Пилигрим |
| 3 |Лесник | 8 |Поселенец |
| 4 |Мародёр | 9 |Проводник |
| 5 |Охотник-собиратель | 10 |Траппер |
!!!Умение: Странник
Вы отлично запоминаете карты и местность, и всегда можете вспомнить общие характеристики местности, поселения, и прочие особенности в окрестностях. Кроме того, вы находите вдвое больше пищи и воды при сборе еды в дикой местности.
!!!Персонализация
Часто считающиеся цивилизованными народами грубыми и неотёсанными, чужеземцы не прельщаются жизнью в городе. Узы племени, клана, семьи и положенное место в природе — вот самые важные привязанности чужеземцев.
| !к8 |!Черта характера |
| 1 |Мной руководит жажда приключений, которая и увела меня из дома. |
| 2 |Я слежу за друзьями, как если бы они были слепыми котятами. |
| 3 |Однажды я пробежал 40 километров без остановки, чтобы предупредить свой клан о приближающейся орде орков. Если понадобится, я повторю это. |
| 4 |Для любой ситуации у меня есть уроки, извлечённые из наблюдений за природой. |
| 5 |Я не понимаю богатых и воспитанных. Деньги и хорошие манеры не спасут тебя от голодного волка. |
| 6 |Я всё время что-то беру в руки, рассеянно кручу и иногда ломаю. |
| 7 |Я гораздо комфортнее чувствую себя среди зверей, чем среди людей. |
| 8 |Меня действительно вырастили волки. |
| !к6 |!Идеал |
| 1 |''Перемены. ''Жизнь как времена года, постоянно меняется, и мы должны меняться вместе с ней. |
| 2 |''Процветание. ''Каждый должен поступать так, чтобы всё племя было счастливо. |
| 3 |''Честь.'' Если я обесчещу себя, я обесчещу весь свой клан. |
| 4 |''Мощь.'' Самый сильный имеет право приказывать. |
| 5 |''Природа.'' Мир природы гораздо важнее построек цивилизации. |
| 6 |''Слава.'' Я должен завоёвывать славу в сражениях, для себя и своего клана. |
| !к6 |!Привязанность |
| 1 |Моя семья, клан или племя — самые важные вещи в моей жизни, даже когда они далеко от меня. |
| 2 |Осквернение дикой местности на моей родине я считаю личным оскорблением.|
| 3 |Я вымещу свой чудовищный гнев на злодеях, уничтоживших мои земли.|
| 4 |Я последний из своего племени, и должен сделать так, чтобы наши имена вошли в легенды. |
| 5 |Мне являются жуткие видения грядущей катастрофы, и я сделаю всё, чтобы её предотвратить. |
| 6 |Я должен создавать новых детей, которые будут поддерживать моё племя. |
| !к6 |!Слабость |
| 1 |Я слишком пристрастен к элю, вину и прочим спиртным напиткам. |
| 2 |В жизни на полную катушку нет места осторожности. |
| 3 |Я помню все полученные оскорбления и таю злобу на всех обидчиков. |
| 4 |Я с трудом доверяю представителям других рас, племён и сообществ. |
| 5 |На любые неурядицы я почти всегда отвечаю насилием. |
| 6 |Не думайте, что я буду спасать тех, кто не может сам о себе позаботиться. Сильные должны процветать, а слабые погибают, и это нормально. |
[img [https://i.imgur.com/lYaBvye.png]]
Ваша игра является совместным повествованием. Историей. Ваши персонажи - герои этой истории. Они могут быть плоскими и пустыми, определёнными одним предложением или несколькоми словами вроде //Крутой Тифлинг-Сирота Колдун//, или они могут быть продуманными и разносторонними.
На одном конце спектра персонажей находятся "чистые листы". У них нет ни цели, ни мотивации, ни личности. Во время игры эти персонажи находятся на фоне их действия исключительно механические ("Я иду сюда, "Я атакую этого врага", "Я поднимаю предмет").
<<<
Важно отличать //персонажа//, являющегося "чистым листом", от //игрока//, являющегося интровертом и предпочитающего тихо следовать за группой, лишь иногда выступая вперёд.
<<<
На другом конце спектра расположены персонажи, определённые конфликтом. Те, у кого есть своя точка зрения, мысли и мнения о том, что происходит вокруг них. Глубина персонажа позволяет (и, иногда, вынуждает) ему выбирать стороны, принимать трудные решения, противопоставлять себя миру и событиям, его окружающим, а также обладать секретами, которые могут быть раскрыты. Такие персонажи делают игру более интересной, но и их создание требует приложения усилий.
Поразмыслив над своим персонажем за рамками игровых механик и цифр на его листе, вы открываете для себя и для него новые возможности, которые упустили бы в противном случае. Знание и понимание вашего персонажа помогает вам играть лучше.
---
!!О стереотипах
Наш мозг любит создавать простые ассоциации. Легко создавать своего персонажа сиротой, потому что нам не нужно думать о том, что случилось с его родителями. Легко создавать //Тифлинга Колдуна//, потому что наш мозг быстро связывает колдунов и дьяволов. Подавление этих интуитивных связей помогает избегать клише. Тем не менее, важно отметить, что избегание клише - это не всегда хорошо. Это может привести к безумным концепциям персонажей, которые не соответствуют сэттингу или общему тону игры.
Это здорово, что вы хотите играть трупом эльфийского ребёнка, мозг которого одержим духом космического кита, который бесцельно дрейфует сквозь космос и избавляется от скуки, играя телом эльфа, как персонажем видеоигры. Это совсем не здорово, когда такая концепция идет наперекор стилю игры вашего Мастера и персонажам других игроков. Хороший персонаж не обязательно должен быть уникальным и ломающим стандарты. Речь идёт об осмысленности принимаемых вами решений во время создания персонажа. Вместо того, чтобы без размышлений полагаться на простые связи, подумайте о том, ''почему'' ваш //Тифлинг// является //Сиротой//, и ''как'' он стал //Колдуном//.
---
!!Неважно с чего вы начнёте
Нет какой-либо опрелённой последовательность по которой с чистого листа создаётся концепция персонажа. Некоторые начинают с имени. Некоторые решают, каким классом они хотят играть, и строят всё вокруг этого решения. У некоторых уже есть задумка, которую остаётся лишь нарастить деталями. Какую-бы отправную точку вы ни использовали для создания своего персонажа, ключевым моментом является развитие идеи.
Вот несколько примеров отправных точек, которые могут позволить вам подойти к созданию персонажа с новой для вас стороны:
* Начните с сэттинга кампании. Узнайте у вашего Мастера о конкретных местах и народах их населяющих. Позвольте деталям о мире вдохновить вас.
* Начните с противоречия "Что если...". Что если бы орк был библиотекарем? Что если бы варвар занимался садоводством? Подобные идеи могут звучать абсурдно сами по себе, но выглядят вполне себе полноценно, стоит им придать глубины.
* Начните с просмотров изображений. Не обязательно изображений персонажей, они могут быть любыми. Вы можете посмотреть на пейзаж ландшафта и подумать о том, кто мог бы населять его. Небольшие особенности и идеи могут прийти к вам из увиденных деталей.
* Украдите. Возьмите характерные черты от того, что вас вдохновляет, и соберите их вместе в что-то новое. Возьмите невозмутимый характер персонажа вашей любимой книги и дайте его той молодой рыжей девушке со шрамом на плече, которую вы видели в сериале. Не пытайтесь полностью воссоздать вашего любимого персонажа, вместо этого возьмите нравящиеся вам части от разных персонажей и перемешайте их.
* Позвольте решить характеристикам. Обратите внимания на слабые стороны вашего персонажа с механической точки зрения и позвольте им быть вашими характерным чертами. Если у вас низкое значений Силы, подумайте о том, почему ваш персонаж физически слабее среднего приключенца. Если Интеллект вашего персонажа ниже среднего, вместо объяснения в виде "Мой персонаж глупый, потому что так решил бросок костей", попробуйте поразмыслить над тем, почему он действительно является несообразительным.
---
!!Цели, мотивации и конфликт
Вашему персонажу стоит чего-то хотеть. На самом деле всё просто. Вашего персонажа отличает от простого люда то, что он хочет делать вещи, за которые остальные браться не намерены. Вы собираетесь сразиться с драконом. Вы собираетесь направить ваш корабль в межпространственный портал. Вы собираете команду для осуществления невозможного ограбления. Почему? Потому что так вы получаете то, чего вы хотите. Если ваш персонаж не в состоянии мотивировать себя, тогда его история не может развиваться. Игра на этом останавливается. Даже если ваша мотивация проста, как "Я хочу убивать монстров", это уже намного лучше, чем не иметь её вовсе.
Когда ваш персонаж чего-то хочет, каждое препятствие, которой Мастер ставит на его пути, является противопоставлением и конфликтом. Оно создаёт напряжение. Всё это является ингридиентами увлекательного и драматичного повествования. Это означает, что ваш персонаж может перестать только лишь реагировать на сюжет и начать создавать свой собственный.
!!!Волки-одиночки скучны
Скорее всего вы не единственный за столом. Помимо Мастера, рядом с вами есть группа людей с которой ваш персонаж будет работать, путешествовать и сражаться бок о бок. Во-первых, воспринимайте это как возможность связать своего персонажа с другими, чтобы придать ему деталей. Ваши персонажи могут быть братьями, друзьями детства, мастером и учеником. Вам не обязательно быть кучкой незнакомцев. Во-вторых, воспринимайте это как факт, что эта игра не только о вас. Вы не являетесь её главным героем. Ваша группа - главный герой повествования. Также как и мотивация вставать с кровати и идти навстречу приключениям, вашему персонажу необходима мотивация для заботы о своих компаньонах и работы вместе с ними, ради достижения общей цели.
Если ваш персонаж - таинственная фигура в плаще, общающася лишь односложно и постоянно пытающаяся отколоться от группы, чтобы заняться чем-то своим, то вы сами себе разрушаете возможности для повествования. Поверьте, куда интереснее преодолевать препятствия, работая в команде (кроме того, таинственные фигуры в плаще - скучные и унылые персонажи).
---
!!Начиная с 1 уровня: Не перегружайте свою историю
Будучи персонажем 1 уровня, вы должны понимать, что вы ещё не машущий мечом и метающий магию герой, которым вы хотите стать. Ещё нет.
Не совершайте ошибку, запихивая вашу будущую историю в ваше прошлое. Если вы появились за столом с персонажем 1 уровня и предсторией, по которой он провёл последние 10 лет в поисках меча своего отца, убил дракона, спас принцессу и отвадил Великое Зло от своей родной деревни, тогда вы оказали себе медвежью услугу. Мало того, что это будет выглядеть совершенно нелепо, когда такой персонаж вдруг будет прилагать много сил, сражаясь с низкоуровневыми противниками, помимо этого вы упустили возможность совершить всё, что описали, в будущем. Сохраните клёвые части своей истории для их свершения за столом. Это нормально начать ничем не примечательным человеком, потому что так ваш рост будет выглядеть ещё более впечатляющим.
---
!!Физические атрибуты
Физические атрибуты показывают, как мы выглядим, как мы движемся, чем мы владеем. Многие из них могут быть определены вашим выбором расы. Возраст, рост и размер могут разниться в зависимости от доступных вам рас. Поэтому начните с выбора расы. Может показаться, что эти детали не так важны и являются лишь эстетическим выбором, определающим то, как другие люди видят вашего персонажа, но вы удивитесь тому, как сильно ваши физические атрибуты могут влиять на ваши действия. Подумайте о следующем:
* Нравится ли вашему персонажу его внешность?
* Гордится ли он своими физическими данными?
* Стыдится ли он каких-то своих физических особенностей? Пытается ли он скрыть их?
* Влияет ли его возраст на его движения и взаимодействие с миром?
Самооценка является важной составляющей поведения людей.
Внешность персонажа - это также его книга воспоминаний. Каждый шрам, каждый потерянный зуб, каждая морщина - запись какого-то прошлого события. Каждая вещь, которую испытал ваш персонаж на своём жизненом пути, делает из него того, кем он является сейчас. Пол, национальность, религия, надежды и мечты, страхи и смущения. Все эти вещи, о которых вы могли не задумываться раньше, делают вашего персонажа правдоподобным и интересным, а также придают ему ту глубину, которую вы можете исследовать во время игры.
---
!!Рождение вашего персонажа
Знание своего места рождения поможет закрепить ваше место в мире. Ваш персонаж не просто появился из ниоткуда, у него есть история о том, кем он был до текущих событий - города, которые он посетил, работа, за которую он брался, связи, которые он наладил - всё это начинается в месте вашего рождения.
Если ваша игра проходит в готовом сэттинге, почитайте о нём. Найдите место в этом мире. Если ваш Мастер использует собственный сэттинг, попросите у него информацию о возможных местах. Возможно, он будет не прочь помочь вам создать собственный город или поселение. Если ваш персонаж был выращен храмом или гильдией, возможно, у вашего Мастера уже есть готовая организация, в которую вы могли бы вписаться.
Определите //каким// было место в котором вы родились. Его описание может быть размытым и вкючать в себя, например, только политическую обстановку (монархия, военная хунта, анархическая коммуна и т.п.) или какую-либо другую определяющую особенность. Не углубляйтесь в детали, только если не считаете это необходимым и важным для вашего персонажа. Примеры:
* ''Охотник-собиратель:'' Вы родились в обществе, которое следует за сезонной миграцией животных, чтобы поддерживать себя. Ваша жизнь сопровождалась поддержанием природного баланса и обеспечением того, что вы никогда не истощите природные ресурсы до такой степени, что они не смогут самостоятельно восполниться. Всё, что вы добывали, вы использовали на собственные нужды.
* ''Кочующий пастух:'' Вы родились в обществе, которое приручало и держало животных в качестве домашнего скота, перемещаясь с целью поиска новых пастбищ для поддержания стада. Ваше хозяйство предоставляло вам небольшие излишки, которые вы использовали для торговли с другими сообществами.
* ''Торговец-ремесленник:'' Вы родились в небольшой коммуне или караване. Ваш народ путешествовал с места на место, предлагая свои навыки или торгуя за предметы, необходимые для вашего существования.
* ''Садоводческое общество:'' Вы родились в обществе, способном поддерживать себя стабильным сбором урожая. Ваш народ полагался выживал благодаря дарам природы, но был способен поддерживать баланс, чтобы образовать постоянное поселение. Несмотря на это, у вас было очень мало возможностей для торговли, и всё, что вы производили, вы использовали на собственные нужды.
* ''Сельскохозяйственное общество:'' Вы родились в обществе, в котором использование скота и продвинутых инструментов позволяло фермам производить излишки продовольствия для торговли. Это привело к избыточному богатству, которое создало классовое деление на дворянство и крестьян.
* ''Феодализм:'' Вы родились в поселение со строгой иерархической структурой, основанной на праве собственности на землю. Дворяне владели замлей и назначали вассалов, управляющих работой на ней низшего класса. Низшему классу предоставлялось место для жилья в обмен на их труд, но произведенное богатство возвращалось обратно к дворянам через налогооблажение.
!!!Социальный статус
Какое место занимал ваш персонаж в обществе, в котором родился?
* ''Престиж:'' Какова репутация вашего персонажа?
* ''Имущество:'' Чем владеет ваш персонаж?
* ''Власть:'' Каким влиянием обладает ваш персонаж?
---
!!Семья
Семья вашего персонажа не обязана быть бездействующими заметками в его листе. Ваш дядя может быть вашим лучшим другом и наставником. Ваш брат может быть вашим грозным соперником. Ваш персонаж также может быть родственником персонажа другого игрока.
!!!Образ жизни вашей семьи
Прежде чем определять численность вашей родни, определите в каких условиях проживало ваше семейство. Выбор образа жизни не означает, что ваш персонаж должен следовать ему до конца своих дней, скорее всего он измениться со временем, но этот выбор означает образ жизни в котором вы росли.
<<tabs "[tag[Образ жизни]sort[created]]" "" "$:/state/tab1" "tc-vertical">>
!!!Родители и опекуны
После того, как вы определили образ жизни своей семьи, подумайте о том, кем они являются. Начните с собственного воспитания. Росли ли вы вместе со своими родителями? Или вас отправили на попечение тёте и дяде? А может ваши родители оставили вас на ступенях храма, или вы с ранних лет жили и обучались у мастера вашего класса?
<<<
''Решение проблемы перенаселения сиротских приютов''
То, что вы не были воспитаны вашими родителями, ещё не означает, что они мертвы. Возможно, вас передали бабушке или дяде, потому что ваши родители потеряли возможность воспитывать вас по какой-либо причине. Возможно, вы незаконорожденный ребёнок, которого нужно воспитывать в другом месте. Возможно, вас отправили на обучение и проживание в академии. Существует множество способов объяснить причину по которой у вашего персонажа нет родителей, или по которой он с ними не общается.
<<<
!!!Братья и сёстры
После определения ситуации с родителями, вам нужно решить есть ли у вас братья или сёстры. Вы можете быть как единственным ребёнком в семье, так и одним из многих детей.
|!Образ жизни | !Братья и сёстры|
|Никудышный | 1к4-3 |
|Нищенский | 1к4-2 |
|Бедный | 1к6-3 |
|Скромный | 1к6-2 |
|Комфортный | 1к6-1 |
|Богатый | 1к10-2 |
|Дворянский | 2к6-2 |
---
!!Важные жизненные события
Независимо от того, сколько вы живёте, в вашей жизни произошло хотя бы одно событие, которое значительно повлияло на ваш характер. Жизненные события включают в себя чудеса и трагедии, конфликты и успехи, а также встречи с необычным. Они могут помочь объяснить, почему ваш персонаж стал искателем приключений, а некоторые всё ещё могут повлиять на вашу жизнь, хоть и произошли они очень давно.
Чем персонаж старше, тем выше шанс, что в его жизни было несколько таких событий, как показано в таблице ниже. Вы можете бросить кости, чтобы определить ваш текущий возраст и количество жизненных событий случайным образом.
| !к100 |!Текущий возраст | !Жизненные события |
| 01-20 |20 лет и моложе | 1 |
| 21-59 |21-30 лет | 1к4 |
| 60-69 |31-40 лет | 1к6 |
| 70-89 |41-50 лет | 1к8 |
| 90-99 |51-60 лет | 1к10 |
| 00 |61 год или старше | 1к12 |
После того, как вы узнаете, сколько жизненных событий пережил вам персонаж, совершите бросок по таблице ниже для каждого из них. Многие из результатов, приведённых в этой таблице, указывают на одну из нижеследующих вторичных таблиц. Как только вы определили все события в жизни персонажа, можете расположить их в хронологическом порядке как посчитаете нужным.
| !_к100_ |!Событие |
| 01-10 |Вы пережили трагедию. Совершите бросок по таблице «Трагедии». |
| 11-20 |Судьба была к вам милостива. Совершите бросок по таблице «Блага». |
| 21-30 |Вы влюбились или поженились. Если вы получите этот результат более одного раза, вы можете выбрать вместо него рождение ребёнка. Обсудите с вашим Мастером личность возлюбленного/возлюбленной вашего персонажа. |
| 31-40 |Вы нажили себе врага искателя приключений. Бросьте к6. Нечётное число означает, что вы виноваты в ссоре, а чётное – что вы невиновны. Используйте дополнительные таблицы и поговорите с вашим Мастером, чтобы определить личность этого враждебного персонажа и опасность, которую он представляет для вас. |
| 41-50 |Вы подружились с искателем приключений. Используйте дополнительные таблицы и поговорите с вашим Мастером, чтобы добавить больше деталей этому дружелюбному персонажу, и установить, как началась ваша дружба. |
| 51-70 |Вы провели время, работая по профессии, связанной с вашей предысторией. Начните игру с дополнительными 2к6 см. |
| 71-75 |Вы повстречались с очень важной персоной. Используйте дополнительные таблицы, чтобы определить личность этого персонажа и как он к вам относится. Придумайте дополнительные детали вместе с вашим Мастером, чтобы этот персонаж соответствовал вашей предыстории. |
| 76-80 |Вы отправились в приключение. Совершите бросок по таблице «Приключения», чтобы узнать, что с вами произошло. Придумайте вместе с вашим Мастером характер приключения и существ, с которыми вы столкнулись. |
| 81-85 |Вы встретились со сверхъестественным. Совершите бросок по таблице «Сверхъестественные события», чтобы узнать, что произошло. |
| 86-90 |Вы сражались в битве. Совершите бросок по таблице «Война», чтобы узнать, что с вами случилось. Придумайте вместе с вашим Мастером, что послужило причиной противостояния и кто в нём участвовал. Возможно, это был небольшой конфликт между вашим поселение и группой орков, или это могло быть генеральное сражение в крупной войне. |
| 91-95 |Вы совершили преступление или были ошибочно обвинены в этом. Совершите бросок по таблице «Преступление», чтобы определить его характер, и по таблице «Наказание», чтобы узнать, что с вами стало. |
| 96-99 |Вы столкнулись с чем-то магическим. Совершите бросок по таблице «Волшебные дела». |
| 00 |С вами случилось что-то действительно странное. Совершите бросок по таблице «Странные вещи». |
!!!Второстепенные таблицы
Эти таблицы добавляют детали ко многим результатам из таблицы «Жизненные события». Ниже они приводятся в алфавитном порядке.
<<tabs "[tag[Жизненные события]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
---
!!Личность
Проработка личности вашего персонажа - определение черт, привычек, манер, убеждение и недостатков, придающих ему уникальность - поможет вам вдохнуть в него жизнь во время игры. В предложенных в Шаге 2 вариантах [[Предысторий|Шаг 2. Выберите Предысторию]] представлены таблицы с особенностями личности, разделённые на четыре категории: черты характера, идеалы, привязанности и слабости. Помимо этого подумайте о любимых словах и фразах вашего персонажа, привычных ему жестах, о его пороках и больных местах.
!!!Черты характера
Черты характеры - это простые мелочи, позволяющие отличить вашего персонажа от любого другого. Они должны определять что-то интересное и забавное в персонаже, показывать нечто особенное, что могло бы выделить его среди остальных. «Я умный» — плохая черта, так как подходит многим персонажам. «Я прочёл все книги в Крепости Свечи» говорит об интересах вашего персонажа значительно больше.
Черты характера могут говорить о достижениях вашего персонажа, его пристрастиях или страхах, его манерах и самооценке.
!!!Идеалы
Идеалы — это вещи, в которые вы верите настолько сильно, что они определяют ваши моральные принципы и линию поведения. Идеалы охватывают все аспекты жизни: от жизненных целей до убеждений.
Идеалы способны ответить на такие вопросы как: Какие принципы вы никогда не предадите? Что заставит вас пойти на жертвы? Что направляет все ваши усилия и амбиции? Что является самым важным, к чему стоит стремиться?
!!!Привязанности
Привязанности определяют взаимосвязь вашего персонажа с людьми, местами или историческими событиями. Они связывают вас с деталями вашей предыстории. Они могут вдохновить вас на подвиги, или же заставят вас действовать вопреки убеждениям, если вы вдруг окажетесь в опасности. Они могут влиять на личность персонажа так же сильно, как и его идеалы, определяя его цели и стремления.
Привязанности позволяют ответить на вопросы: Кто вам действительного дорог? Какое место имеет для вас особенное значение? Какая вещь для вас наиболее ценна?
Ваши привязанности могут быть переплетены с вашим классом, предысторией, расой и прочими аспектами вашей истории. Вы можете получать новые привязанности во время приключений.
!!!Слабости
Слабость вашего персонажа может выражаться в личном враге, страхе, страсти, недостатке — в общем, это всё то, что можно использовать против вас. Ваша слабость позволяет ответить на вопросы: Что вас раздражает? Кто (или что) пугает вас? Кто считает вас своим врагом?
---
!!Увлечения и хобби
Иногда у вашего персонажа могут быть интересы помимо простого убийства монстров и получения добычи. Наличие хобби может мотивировать вашего персонажа в направлениях, которых вы не обязательно ожидали. Хобби также может быть второй профессией. Ваша группа может, например, выступать странствующей театральной труппой, пока она не занята исследованием подземелий. Игровые правила могут предоставлять механики или инструменты, позволяющие персонажам заниматься подобными вещами в свободное время.
Во время выбора хобби, подумайте о том, как персонаж начал этим заниматься. Было ли это связано с местом, в котором вы росли, с вашим воспитанием или с вашей профессией до вступления на путь приключенца?
---
!!Пороки
Под пороками понимаются психологические и физиологические отклонения персонажа, например, фобии или одержимости. Не каждый персонаж должен обладать такими отклонениями, но такой вариант существует. В действительности подобные вещи затрагивают только каждого четвёртого человека, поэтому при желании вы можете определить броском к4, есть ли у вашего персонажа порок или нет.
Если вы решили пойти этим путём кастомизации персонажа, подумайте о том, как ваши пороки влияют на вашу повседневную жизнь. Избегаете ли вы специфичных ситуаций? Как вы и окружающие относитесь к проявлению ваших пороков? Способен ли ваш персонаж преодолеть их, находясь под давлением?
Вам стоит задуматься о том, что стало результатом того или иного порока вашего персонажа. Является ли он врождённым дефектом, результатом прошлых событий, или чем-то, что ваш персонаж не в состоянии объяснить?
Помните, что пороки //дополняют// вашего персонажа, а не //определяют// его. Наличие фобии или одержимости не является качестом, заменяющим личность персонажа. Пороки не должны быть определяющей или отправной точкой создания вашего персонажа по той простой причине, что это реальные комплексные недуги, от которых страдают люди, и которые мы не хотим превращать в стереотипы.
Создайте копию листа персонажа по ссылке ниже и начните его заполнение с деталей, с которыми вы определились в [[Шаге 0|Шаг 0. Создайте концепцию]]. Продолжайте его заполнение по мере выполнения [[шагов создания персонажа|Шаги создания персонажа]].
[[Актуальный лист персонажа с инструкциями по заполнению|https://docs.google.com/spreadsheets/d/17fQfYAswxVkJXvjfogjjWgpr-7Yf-ixyXjHp5vkvDVc/edit?usp=sharing]]
Каждая история имеет своё начало. Истоки истории вашего персонажа могут описывать, почему он выбрал дорогу приключений, и как он стал тем, кем является. Ваш воин может быть благородным рыцарем или седым суровым солдатом. Ваш волшебник может быть мудрецом или ремесленником. Ваш плут может быть агентом гильдии воров или замаскированным шутом.
Выбор предыстории предоставляет вам важные сюжетные элементы в самобытности вашего персонажа. Что изменилось в жизни вашего персонажа после предыстории? Что заставило бросить вашу деятельность и отправиться на поиски приключений? Где вы взяли деньги на покупку своего снаряжения, или, если у вас предыстория богача, почему у вас нет больше денег? Как вы узнали навыки своего класса? Что отличает вас от обычных людей, которые имеют такую же предысторию?
---
!!!Владение
Каждая предыстория даёт вашему персонажу владение двумя навыками.
Кроме того, большинство предысторий даёт персонажу владение одним или несколькими инструментами.
Вы добавляете свой бонус мастерства к проверкам характеристик при использовании этих навыков и инструментов.
Если персонаж получает владение одним и тем же из двух разных источников, он может выбрать другое владение того же вида (навыком или инструментом).
---
!!!Языки
Некоторые предыстории также дают вам возможность выучить языки в дополнение к тем, которые даёт ваша раса.
Выберите языки из таблицы обычных языков или из тех, что считаются обычными в вашей кампании. С разрешения Мастера, вы можете выбрать язык из таблицы экзотических языков или тайный язык, такой как жаргон воров или язык друидов.
Некоторые из этих языков на деле являются семействами языков с многочисленными диалектами. Например, Первичный язык включает диалекты Акван, Ауран, Игнан, и Терран, по одному на каждый из четырёх стихийных планов. Существа, говорящие на разных диалектах одного языка могут общаться между собой.
''Обычные языки''
|!Язык |!Типичные представители |!Письменность |
|Великаний |Огры, великаны |Великанья |
|Гномий |Гномы |Дварфская |
|Гоблинский |Гоблиноиды |Дварфская |
|Дварфский |Дварфы |Дварфская |
|Общий |Люди |Общая |
|Орочий |Орки |Дварфская |
|Полуросликов |Полурослики |Общая |
|Эльфийский |Эльфы |Эльфийская |
''Экзотические языки''
|!Язык |!Типичные представители |!Письменность |
|Бездны |Демоны |Инфернальная |
|Глубинная Речь |Иллитиды, злобоглазы |— |
|Драконий |Драконы, драконорождённые |Драконья |
| Инфернальный |Дьяволы |Инфернальная |
|Небесный |Небожители |Небесная |
|Первичный |Элементали |Дварфская |
|Подземный |Купцы Подземья |Эльфийская |
|Сильван |Фейские существа |Эльфийская |
<<<
''Особенности языков''
//''Дварфский.''// Дварфский язык состоит из твёрдых согласных и гортанных звуков, и этот акцент будет присутствовать в любом языке, на котором дварф будет говорить.
//''Гномий.''// Гномий язык, использующий дварфский алфавит, хорошо известен благодаря техническим трактатам и каталогам знаний об окружающем мире.
//''Орочий.''// Орочий язык резкий и грубый, полный твёрдых согласных. Он не имеет собственного алфавита и использует дварфский.
//''Полуросликов.''// Их язык не является секретным, но они не торопятся делиться им с остальными. Пишут они мало, и почти не создали собственной литературы, но устные предания у них очень распространены.
//''Эльфийский.''// Эльфийский язык текучий, с утончёнными интонациями и сложной грамматикой. Эльфийская литература богата и разнообразна, а стихи и песни известны среди представителей других рас. Многие барды учат эльфийский язык, чтоб добавить песни в свой репертуар.
//''Драконий.''// Драконий язык считается одним из старейших и часто используется во время изучения магии. Этот язык звучит грубо для большинства других существ, и содержит много твёрдых согласных и шипящих звуков.
<<<
---
!!!Экипировка
Каждая предыстория подразумевает владение некоторым имуществом.
---
!!!Персонализация
Каждая предыстория имеет набор личных качеств, основанных на ней. Вы можете выбрать их самостоятельно, бросить кость, чтобы определить их случайно, или использовать в качестве рекомендаций, чтобы создать собственные. Выберите две черты характера и по одному идеалу, привязанности и слабости.
---
!!!Собственная предыстория
Возможно, вы захотите изменить некоторые особенности предыстории, чтобы они лучше подходили вашему персонажу или игровому миру. Для создания собственной предыстории вы можете изменить одно умение на любое другое, выбрать набор экипировки, выбрать два любых навыка и выбрать владение инструментами и языками, чтобы в сумме их было не больше двух, из образцов других предысторий. И наконец, выберите черты характера, идеал, привязанность и слабость. Если вы не можете выбрать умение предыстории, которое подходит именно вам, посоветуйтесь с Мастером и создайте своё собственное.
---
<<tabs "[tag[Предыстория]nsort[]]" "" "$:/state/tab1" "tc-vertical">>
Каждый искатель приключений — представитель какого-либо класса. Класс в общих чертах описывает призвание персонажа, таланты, которыми он обладает, и тактики, к которым он чаще всего прибегает, когда исследует подземелье, сражается с монстрами или участвует в напряжённых переговорах.
Класс является основным мерилом способностей вашего персонажа. Это больше чем профессия, это призвание вашего персонажа. Класс формирует ваше представление о мире и взаимодействие с ним, а также ваше отношение к другим существам и силам мультивселенной. Воин, например, может смотреть на мир прагматично, с точки зрения стратегии и манёвров, и видеть себя всего лишь пешкой в большой игре. Жрец напротив, может видеть себя в качестве усердного служителя разворачивающегося грандиозного плана божества, или назревающего конфликта между различными богами. У воина есть связи в организациях наёмников или войсках, а жрец может знать множество священников, паладинов и последователей, разделяющих его веру.
Ваш персонаж получает ряд преимуществ от выбранного вами класса. Множество этих преимуществ являются классовыми умениями — возможностями (включая сотворение заклинаний), которые отличают вашего персонажа от представителей других классов. Вы также получаете перечень владения (умение пользоваться) доспехами, оружием, навыками, спасбросками и иногда инструментами.
Искатели приключений иногда развиваются сразу в нескольких классах. [[Плут|Плут]] может поменять жизненный путь и дать присягу [[паладина|Паладин]]. [[Варвар|Варвар]] может обнаружить скрытые магические способности и практиковаться в классе [[чародей|Чародей]], продолжая совершенствоваться как варвар. [[Эльфы|Эльф]] известны тем, что сочетают военное мастерство с магической подготовкой и развиваются как [[воины|Воин]] и [[волшебники|Волшебник]] одновременно. Опциональные правила такого комбинирования классов называются [[мультиклассированием|Мультиклассирование]].
<<<
!!!Быстрое создание
Описание каждого класса включает в себя раздел, предлагающий варианты быстрого создания персонажа этого класса, включая распределение значений характеристик, предысторию, подходящую для класса и начальные заклинания.
<<<
|!Класс |!Описание | !Кость Хитов |!Основная характеристика|
|[[Бард|Бард]] |Вдохновляющий заклинатель, черпающий мощь в музыке созидания | к8 |Харизма |
|[[Варвар|Варвар]] |Свирепый воин, способный впадать в боевую ярость | к12 |Сила |
|[[Воин|Воин]] |Мастер сражения, опытный во владении различным оружием и доспехами | к10 |Сила или Ловкость |
|[[Волшебник|Волшебник]] |Учёный заклинатель, способный манипулировать структурой реальности | к6 |Интеллект |
|[[Друид|Друид]] |Проповедник Старой Веры, владеющий силами природы — лунным светом и ростом растений, огнём и молнией, и принимающий облик животных | к8 |Мудрость |
|[[Жрец|Жрец]] |Священнослужитель-заступник, владеющий божественной магией и состоящий на службе высших сил | к8 |Мудрость |
|[[Изобретатель|Изобретатель]] |Инноватор совмещающий возможности ремёсел и магии | к8 |Интеллект |
|[[Колдун|Колдун]] |Обладатель магии, полученной посредством сделки с экстрапланарной сущностью | к8 |Харизма |
|[[Кровавый охотник|Кровавый охотник]] |Боец Ордена, использующий запретные эзотерические техники для борьбы со злом | к10 |Сила или Ловкость, и Интеллект |
|[[Монах|Монах]] |Мастер боевых искусств, использующий мощь тела в поисках физического и духовного совершенства | к8 |Ловкость и Мудрость |
|[[Паладин|Паладин]] |Святой воин, связанный духовным обетом | к10 |Сила и Харизма |
|[[Плут|Плут]] |Мошенник, который использует хитрость и обман, чтобы одолеть препятствия и противников | к8 |Ловкость |
|[[Псион]] |Обладатель особой способности, позволяющей актуализировать силу его разума | к6 |Интеллект |
|[[Следопыт|Следопыт]] |Воитель, использующий боевое искусство и магию природы для борьбы с угрозами на окраинах цивилизации | к10 |Сила или Ловкость, и Мудрость |
|[[Чародей|Чародей]] |Заклинатель, черпающий магию в себе, получив её в дар или как наследие | к6 |Харизма |
---
!!!Уровень
Обычно персонаж начинает с 1 уровня и достигает новых уровней, завершая приключения и получая опыт. На 1 уровне персонаж неопытен в мире приключений, хотя он мог быть солдатом или пиратом и вести опасную жизнь и раньше.
Если вы уже знакомы с игрой или если вы присоединяетесь к текущей кампании, ваш Мастер может решить, что вы начинаете с более высоким уровнем, предполагая, что ваш персонаж уже пережил несколько опасных приключений. Персонаж более высокого уровня, как правило, начинает с минимальным значением опыта, необходимым для достижения этого уровня.
---
!!!Хиты и Кость Хитов
Хиты вашего персонажа определяют, насколько стойким является ваш персонаж в сражениях и других опасных ситуациях. Ваши хиты определяются вашей Костью Хитов.
На 1 уровне, у вашего персонажа 1 Кость Хитов, и вид этой кости определяется вашим классом. Вы начинаете с числом хитов, равным наибольшему возможному результату броска этой кости, как отмечено в описании вашего класса (вы также добавляете ваш модификатор Телосложения). Это число также является вашим максимальным значением хитов.
Во время [[отдыха|Отдых]] вы можете тратить Кости Хитов на восстановление хитов.
---
!!!Бонус мастерства
В таблице, которая находится в описании вашего класса, приведён бонус мастерства, который равен +2 для персонажа 1 уровня. Ваш бонус мастерства добавляется ко многим числам, которые вы будете записывать на свой лист персонажа:
* Броски атак при использовании оружия, которым вы владеете
* Броски атак сотворяемых вами заклинаний
* Проверки характеристик при использовании навыков, которыми вы владеете
* Проверки характеристик с инструментами, которыми вы владеете
* Спасброски, которыми вы владеете
* Сл. спасбросков сотворяемых вами заклинаний
Ваш бонус мастерства не может быть добавлен к одному броску костей или какому-либо числу более одного раза. Иногда ваш бонус мастерства может быть преобразован (увеличен или уменьшен вдвое), прежде чем будет прибавлен к броску. Если обстоятельства позволяют предположить, что ваш бонус мастерства добавляется больше одного раза к одному и тому же броску или должен быть умножен более одного раза, всё равно добавьте его только один раз, увеличьте или уменьшите вдвое только один раз.
Каждый персонаж принадлежит к одной из множества разумных гуманоидных [[рас|Расы]] мира D&D. Наиболее распространёнными [[расами|Расы]] игровых персонажей являются [[дварфы|Дварф]], [[эльфы|Эльф]], [[полурослики|Полурослик]] и [[люди|Человек]]. Некоторые [[расы |Расы]]также имеют подрасы, например, [[горный дварф|Горный дварф]] или [[лесной эльф|Лесной эльф]].
[[Раса|Расы]], которую вы выбрали, придаёт индивидуальность вашему персонажу, определяя характерную внешность и врождённые таланты, полученные через культуру и происхождение. [[Раса|Расы]] вашего персонажа даёт определённые расовые особенности, такие как: бонус к одному или нескольким значениям характеристик, особые чувства, владение несколькими видами оружия или инструментов, владение одним или несколькими навыками, а также возможность использовать простейшие заклинания.
Ваша раса также увеличивает одно или несколько значений характеристик, которые вы определите в [[Шаге 5|Шаг 5. Определите значения характеристик]]. Также обязательно отметьте ваши начальные языки и базовую скорость.
Многое из того, что ваш персонаж способен сделать в игре, зависит от его шести характеристик: ''Силы'', ''Ловкости'', ''Телосложения'', ''Интеллекта'', ''Мудрости ''и ''Харизмы''.
Вы можете определить значения своих характеристик следующими способами:
# Используйте стандартный набор значений - 15, 14, 13, 12, 10, 8.
# Используйте [[калькулятор покупки значений|http://chicken-dinner.com/5e/5e-point-buy.html]] (со стандартными настройками)
# Используйте случайный метод определения значений:
* совершите четыре броска к4 и возьмите сумму трех наибольших результатов, повторяйте пока не получите 6 значений (!rr 6 4d4kh3);
* прибавьте одно значение из набора 6, 5, 4, 3, 2, 1 к каждому из полученных ранее значений, вы можете использовать каждое значение из набора не более одного раза.
<<<
//Пример://
|4d4kh3 (4, 3, 2, ~~2~~) = 9| +5 |!= 14 |
|4d4kh3 (4, 1, 2, ~~1~~) = 7| +3 |!= 10 |
|4d4kh3 (4, 1, 1, ~~1~~) = 6| +2 |!= 8 |
|4d4kh3 (3, 3, ~~3~~, 4) = 10| +4 |!= 14 |
|4d4kh3 (4, ~~2~~, 3, 3) = 10| +6 |!= 16 |
|4d4kh3 (4, ~~1~~, 2, 2) = 8| +1 |!= 9 |
<<<
Присвойте полученные значения Силе, Ловкости, Телосложению, Интеллекту, Мудрости и Харизме на ваше усмотрение. После выбора расы значения характеристик изменятся.
После распределения значений характеристик определите модификаторы характеристик, используя таблицу ниже. Для определения модификатора характеристики без обращения к таблице вычтите 10 из значения характеристики и разделите результат на 2, округляя вниз.
| !Значение | !Модификатор | !Значение | !Модификатор |
| 1 | -5 | 16-17 | +3 |
| 2-3 | -4 | 18-19 | +4 |
| 4-5 | -3 | 20-21 | +5 |
| 6-7 | -2 | 22-23 | +6 |
| 8-9 | -1 | 24-25 | +7 |
| 10-11 | 0 | 26-27 | +8 |
| 12-13 | +1 | 28-29 | +9 |
| 14-15 | +2 | 30 | +10 |
Пороки отражают отрицательные особенности персонажа, будь они телесными или моральными.
* При создании персонажа вы можете выбрать ему до 5 пороков. Вы также можете выбрать их случайно, совершив броски к100 по таблице ниже.
* Вы не можете получить порок после создания персонажа (если Мастер не решит иначе).
* Каждый выбранный порок дает очки навыков в количестве, указанном в таблице. Вы не можете получить более 24 очков.
* За полученные очки навыков вы можете приобрести черту или владения инструментами, навыками и/или языками.
* Непотраченные при создании персонажа очки навыков теряются.
* Эффекты пороков игнорируют сопротивления и иммунитеты персонажа (если Мастер не решит иначе).
* Персонаж должен соответствовать требованиям и следовать ограничениям выбранного порока.
!!!Очки навыков
|!Владение | !Стоимость |
|Музыкальный инструмент | 1 |
|Игровой набор | 1 |
|Язык | 2 |
|Ремесленный инструмент | 3 |
|Особый инструмент | 4 |
|Навык | 4 |
|Черта | 12 |
[[Актуальный список пороков|https://docs.google.com/spreadsheets/d/1mKmy6xS-YUFphxTN-xBEkVDglUx-oEFjrRf4eN96JOk/edit?usp=sharing#gid=953885243]]
Ваш [[класс|Классы]] и [[предыстория|Шаг 2. Выберите Предысторию]] определяют начальную [[экипировку|Экипировка]] вашего персонажа, включая [[оружие|Оружие]], [[доспехи|Доспехи и щиты]] и прочее [[снаряжение|Снаряжение]] искателя приключений.
Вместо того чтобы брать экипировку, приводимую в описании класса, вы можете купить её на серебряные монеты (см), количество которых зависит от вашего класса.
''Богатство на 1 уровне''
|!Класс | !Деньги|
|Монах | 1к4 × 10 см|
|Варвар, друид, чародей | 3к4 × 10 см|
|Бард, волшебник, колдун, плут, псион | 4к4 × 10 см|
|Жрец, изобретатель, следопыт | 5к4 × 10 см|
|Кровавый охотник | 6к4 × 10 см|
|Воин, паладин | 8к4 × 10 см|
Ваш показатель Силы ограничивает количество экипировки, которое вы сможете носить с собой. Старайтесь не приобретать экипировку общим весом (в килограммах), превышающим значение Силы в 4 раза (в 2 раза, если ваш размер - Маленький).
---
!!!Класс доспеха
Ваш Класс доспеха (КД) определяет, насколько хорошо ваш персонаж избегает ранений в бою. На КД влияет надетый доспех, удерживаемый щит и модификатор Ловкости.
Без доспеха и щита КД вашего персонажа равен 10 + модификатор Ловкости.
Ваш персонаж должен владеть доспехами и щитом, чтобы использовать их эффективно. Владение доспехами и щитами определяется классом. При ношении доспехов и щитов, которыми вы не владеете, накладываются определённые штрафы.
Некоторые заклинания и классовые умения позволяют вам рассчитывать ваш КД другим способом. Если у вас есть различные умения, позволяющие рассчитывать КД разными способами, вы выбираете один из них, который будете использовать.
---
!!!Оружие
Для каждого оружия, которым обладает ваш персонаж, рассчитайте модификатор, используемый при атаке, и урон, причиняемый при попадании.
Совершая атаку оружием, вы бросаете к20, прибавляете ваш бонус мастерства (если вы владеете этим оружием) и соответствующий модификатор характеристики.
---
''Старт после 1 уровня''
| !Ур. | !Низкое фэнтези |<|<| !Стандартная кампания |<|<| !Высокое фэнтези |<|<|
|~| !+ см | !Незн. | !Знач. | !+ см | !Незн. | !Знач. | !+ см | !Незн. | !Знач. |
| !1 | Стартовое снаряжение |<|<|<|<|<|<|<|<|
| !2 | 50 | - | - | 50 | - | - | 100 | 1О | - |
| !3 | 150 | - | - | 150 | - | - | 200 | 1О | - |
| !4 | 250 | - | - | 250 | - | - | 3800 | 2О | 1Н |
| !5 | 400 | - | - | 400 | - | - | 4000 | 2О | 1Н |
| !6 | 550 | - | - | 550 | - | - | 4500 | 2О 1Н | 1Н |
| !7 | 700 | - | - | 750 | 1О | - | 8000 | 2О 1Н | 2Н |
| !8 | 1500 | - | - | 1600 | 1О | - | 9000 | 3О 2Н | 2Н |
| !9 | 2000 | - | - | 5500 | 2О | 1Н | 10000 | 3О 2Н | 2Н |
| !10 | 3000 | - | - | 6500 | 2О | 1Н | 17000 | 4О 3Н 1Р | 3Н |
| !11 | 4000 | - | - | 8000 | 2О 1Н | 1Н | 18000 | 4О 3Н 1Р | 3Н |
| !12 | 5000 | 1О | - | 12500 | 2О 1Н | 2Н | 20000 | 4О 4Н 2Р | 3Н |
| !13 | 6000 | 1О | - | 14000 | 3О 2Н | 2Н | 32000 | 4О 4Н 2Р | 3Н 1Р |
| !14 | 10500 | 2О | 1Н | 15000 | 3О 2Н | 2Н | 35000 | 4О 4Н 3Р | 3Н 1Р |
| !15 | 11500 | 2О | 1Н | 22000 | 4О 3Н 1Р | 3Н | 36000 | 4О 4Н 3Р | 3Н 1Р |
| !16 | 16000 | 2О 1Н | 1Н | 26000 | 4О 3Н 1Р | 3Н | 75000 | 5О 5Н 4Р 1ОР | 3Н 2Р |
| !17 | 24000 | 2О 1Н | 2Н | 32000 | 4О 4Н 2Р | 3Н | 80000 | 5О 5Н 4Р 1ОР | 3Н 2Р |
| !18 | 30000 | 3О 2Н | 2Н | 47000 | 4О 4Н 2Р | 3Н 1Р | 95000 | 5О 5Н 4Р 1ОР 1Л | 3Н 2Р |
| !19 | 35000 | 3О 2Н | 2Н | 55000 | 4О 4Н 3Р | 3Н 1Р | 130000 | 5О 5Н 4Р 1ОР 1Л | 4Н 2Р 1ОР |
| !20 | 45000 | 4О 3Н 1Р |3Н | 65000 | 4О 4Н 3Р | 3Н 1Р | 150000 | 5О 5Н 5Р 2ОР 2Л | 4Н 2Р 1ОР |
[img [https://i.imgur.com/lYaBvye.png]]
<div class="tc-table-of-contents">
<<toc-selective-expandable "Шаги создания персонажа">>
</div>
[img width=464 class="centerme" [https://i.imgur.com/iPqbbZ2.png]]
Присягнув служить Королеве Воронов, таинственные шадар-каи путешествуют в Материальный План из Царства Теней для того, чтобы выполнять её поручения. Когда-то давно они были феями, как и остальная часть их эльфийского рода, но теперь они существуют в странной форме на грани жизни и смерти. Шадар-каи и эладрины являются прямыми противоположностями друг друга: одних переполняют эмоции, другие же практически лишены их.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашего Телосложения увеличивается на 1. |
|^Благословение Королевы Воронов |^Вы можете бонусным действием магическим образом телепортироваться в свободное пространство в пределах вашей видимости на расстояние до 6 м. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. После достижения 3 уровня, при телепортации с помощью этой особенности, вы также получаете сопротивление ко всему урону до начала вашего следующего хода. В течение этого времени, ваш облик становится призрачным и полупрозрачным. |
|^Некротическое сопротивление |^Вы получаете сопротивление к урону некротической энергией. |
Вы хорошо знаете людей. Вы понимаете, что ими движет, и можете распознать их самые сокровенные желания спустя всего пару минут после начала разговора. Несколько наводящих вопросов, и вот вы уже читаете их словно книжки, написанные для детей. Это полезный талант, и вы вполне готовы использовать его себе на благо.
Вы знаете, что люди хотят, и вы даёте им это, или же обещаете дать. Чувство здравого смысла должно заставлять людей держаться подальше от тех вещей, которые слишком хорошо звучат, чтобы быть правдой. Но здравый смысл куда-то улетучивается, когда вы неподалёку. Бутылочка с розовой жидкостью всенепременно вылечит эту неблаговидную сыпь, а эта чудодейственная мазь (не более чем горсть жира, смешанного с серебряной пылью) без сомнения вернёт молодость и энергичность. Все эти чудеса, конечно, звучат неправдоподобно, но вы знаете, как преподнести их так, чтобы они казались крайне выгодным делом.
* ''Владение навыками:'' Ловкость рук, Обман
* ''Владение инструментами:'' [[Набор для грима|Набор для грима]], [[набор для фальсификации|Набор для фальсификации]]
* ''Экипировка:'' Комплект дорожной одежды, набор для грима, приспособление для жульничества на ваш выбор (десять запечатанных бутылей с подкрашенной жидкостью, набор шулерских костей, колода краплёных карт или кольцо с печатью какого-нибудь воображаемого герцога), кошель с 15 см
!!!Излюбленные махинации
У каждого шарлатана есть свой излюбленный подход к совершению афер.
| !к6 |!Афера |
| 1 |Я мухлюю в азартных играх. |
| 2 |Я подделываю монеты или документы. |
| 3 |Я втираюсь к людям в доверие, чтобы потом играть на их слабостях и наживаться за их счёт. |
| 4 |Я меняю личности как перчатки. |
| 5 |Я занимаюсь уличным жульничеством с помощью ловкости рук. |
| 6 |Я убеждаю людей, что эта бесполезная куча хлама стоит их кровно заработанных денег. |
!!!Умение: Поддельная личность
Вы создали себе вторую личность, включая необходимые документы, знакомства и маскировку, что позволяет вам перевоплощаться в этот образ. В дополнение к этому вы можете подделывать документы, включая официальные документы и личные письма, если ранее видели пример подобного документа или почерк, который пытаетесь скопировать.
!!!Персонализация
Шарлатаны — яркие персонажи, скрывающиеся за создаваемыми масками. Они являются отражениями того, что другие хотят видеть, во что другие верят, и как другие видят мир. Их истинную натуру может мучить совесть, постоянное недоверие, и им может угрожать враг.
| !к8 |!Черта характера |
| 1 |Я легко начинаю и разрываю романтические отношения, и постоянно нахожусь в поиске новой пассии. |
| 2 |У меня припасены шуточки на все случаи жизни, особенно на те, где юмор вообще неуместен. |
| 3 |Лесть — мой излюбленный способ добиться желаемого. |
| 4 |Я прирождённый игрок, и не могу удержаться от риска, если на кону стоит что-то стоящее. |
| 5 |Я постоянно вру, зачастую даже без малейшей на то причины. |
| 6 |Сарказм и оскорбления — мои излюбленные приёмы. |
| 7 |Я ношу с собой различные святые символы, и взываю к тем божествам, что лучше подходят для каждого конкретного случая. |
| 8 |Я тащу в карман всё, что плохо лежит и имеет хоть какую-то ценность. |
| !к6 |!Идеал |
| 1 |''Независимость.'' У меня свободолюбивая натура — никто не смеет указывать мне, что делать. |
| 2 |''Милосердие.'' Я распределяю добытые деньги между людьми, которые в них действительно нуждаются. |
| 3 |''Честность.'' Я никогда не выберу своей жертвой людей, которые находятся в бедственном положении. |
| 4 |''Креативность.'' Я никогда не иду проторённой дорожкой. |
| 5 |''Дружба.'' Материальные блага приходят и уходят, а друзья остаются. |
| 6 |''Стремление.'' Я собираюсь стать кем-то значимым в этой жизни. |
| !к6 |!Привязанность |
| 1 |Я перешёл дорожку не тому человеку, и должен постоянно заботиться о том, чтобы мне и моим близким не навредили. |
| 2 |Я всем обязан своему наставнику — ужасному человеку, который, вполне вероятно, гниёт сейчас в какой-нибудь тюрьме. |
| 3 |Где-то живёт мой ребёнок, который не знает обо мне. И для него я пытаюсь сделать этот мир лучше. |
| 4 |Я отпрыск благородного рода, и когда-нибудь заберу свои земли и титул у тех, кто их украл. |
| 5 |Влиятельный враг убил дорогого мне человека. И однажды я отомщу. |
| 6 |Я пустил по миру человека, который того не заслуживал. Я стремлюсь искупить свой проступок, но скорее всего никогда себя не прощу. |
| !к6 |!Слабость |
| 1 |Я не могу устоять перед смазливой мордашкой. |
| 2 |Я постоянно в долгах. Я трачу свои нечестно нажитые деньги быстрее, чем их добываю. |
| 3 |Я убеждён в том, что никто не сможет одурачить меня так, как я одурачиваю других. |
| 4 |Я слишком жаден до серебра. И не могу противиться риску, если в этом замешаны деньги. |
| 5 |Я не могу устоять и не облапошить людей, стоящих гораздо выше, чем я. |
| 6 |Я ненавижу себя за это, но я сбегу, чтобы спасти свою собственную шкуру, если вдруг запахнет жареным. |
Вы не особо везучий шахтёр, которому не чужды невзгоды. Вы провели много времени, живя среди рас, населяющих горы, и жителей Подземья, которые работали в местных шахтах. Теперь вам так же комфортно работать под землей, как и на поверхности. Вы разбираетесь в горных породах, вам знакома торговля припасами с глубинными гномами, гулянки с дварфами и после этого поиск пути обратно на поверхность. К сожалению, вы ещё не разбогатели... пока.
* ''Владение навыками:'' Атлетика, Выносливость
* ''Языки:'' Подземный и один на ваш выбор
* ''Снаряжение:'' Лопата или кирка, блок и лебёдка, комплект для лазания, комплект одежды ремесленника и кошель с 5 см
!!!Умение: Знаток глубин
Вы привыкли к навигации в недрах земли. Вы никогда не заблудитесь в пещерах или шахтах, если видели их точную карту или проходили через них раньше. Кроме того, вы находите вдвое больше пищи и воды при сборе еды в шахтах или пещерах.
!!!Персонализация
| !к8 |!Черта характера |
| 1 |Ничто не беспокоит меня надолго.|
| 2 |Я страстно ненавижу кошмары Подземья. Они забрали моих друзей и семью, и почти добрались до меня. |
| 3 |Всё чего-то стоящее требует времени и терпения. Я научился планировать и ждать того, чего хочу, и быть терпеливым для достижения своих целей. |
| 4 |Я могу повеселиться со всеми. Будь то дварфы, голиафы или глубинные гномы, я могу найти способ хорошо провести время. |
| 5 |Я бы предпочёл покопать. И это неплохо, но копать - лучше. |
| 6 |Я думаю, что наткнусь на большое богатство, если буду продолжать искать. |
| 7 |Люди, которые не работают руками и живут в домах, мягкие и слабые. |
| 8 |Хотел бы я быть более образованным. Я равняюсь на таких людей. |
| !к6 |!Идеал |
| 1 |''Щедрость.'' Богатства земли должны быть разделены между всеми. |
| 2 |''Жадность.'' Драгоценные камни и металлы, я хочу забрать их все себе. |
| 3 |''Присвоение. ''Собственность - это чушь. Если мне что-то нужно, я беру и пользуюсь. Если нет - оставляю для кого-то другого. |
| 4 |''Границы.'' У всего и всех есть свое определенное место; я уважаю это и жду от других того же. |
| 5 |''Пусть будет так.'' Я не вмешиваюсь в дела других, если могу этого избежать. Это не моё дело. |
| 6 |''Материализм. ''Я жажду богатств, чтобы улучшить свою жизнь.|
| !к6 |!Привязанность |
| 1 |Жители родных рудников - моя семья. Я сделаю все, чтобы защитить их. |
| 2 |Житель Подземья спас мне жизнь, когда я был ранен и одинок. Я в большом долгу перед его народом. |
| 3 |Я должен созерцать и сохранять естественную красоту мест под землей. |
| 4 |Драгоценные камни привлекают меня больше, чем золото, земля, магия или сила. |
| 5 |Я хочу исследовать новые глубины и покорять новые вершины. |
| 6 |Когда-нибудь я найду золотую жилу и проведу остаток жизни в роскоши. |
| !к6 |!Слабость |
| 1 |Мне некомфортно проводить время под открытым небом. Я предпочитаю находиться в помещении или под землей. |
| 2 |Я не привык долго находиться среди других людей и иногда ворчу по этому поводу. |
| 3 |Хорошие инструменты надёжнее людей. В пещере я бы спас крепкую кирку, а не незнакомца. |
| 4 |Я ревностно охраняю свои секреты, потому что думаю, что другие воспользуются мной, если узнают то, что знаю я. |
| 5 |Я одержим идеей разбогатеть. У меня всегда есть план, как заработать по-крупному. |
| 6 |Я боюсь темноты. |
[img width=480 class="centerme" [https://i.imgur.com/bHm6xIY.png]]
<<tabs "[tag[Шифтер - описание]]" "" "$:/state/tab1">>
Сразу же после того, как вы в свой ход совершили действие Атака, вы можете потратить очки ци в количестве, не превышающем ваш бонус мастерства, чтобы совершить бонусным действием по одной безоружной атаке за каждое потраченное очко ци.
Вы сосредоточили свои исследования на магии, которая создаёт могущественные стихийные эффекты, такие как ледяной холод, жгучее пламя, раскатистый гром, сверкающие молнии и едкая кислота. Некоторые воплотители находят своё призвание в войсках, служа артиллерией для обстрела вражеских армий издалека. Другие используют свою впечатляющую силу для защиты слабых, а третьи же ищут свою собственную выгоду на поприще бандита, искателя приключений или начинающего тирана.
---
!!! [img[2.png]] Построение заклинаний
<<<
Вы способны создавать относительно безопасные карманы в области действия ваших заклинаний воплощения.
<<<
Когда вы совторяете заклинание школы Воплощения, воздействующее на других существ, вы можете выбрать видимых вами в области заклинания существ в количестве, не превыщающем 1 + уровень заклинания. Выбранные существа автоматически преуспевают в спасбросках против этого заклинания и не получают урона, если по описанию заклинания должны получить половину урона при успехе.
---
!!! [img[2.png]] Эксперт воплощения
Количество денег и времени, которое вы тратите на копирование заклинания школы Воплощения в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Мощный заговор
<<<
Ваши наносящие урон заговоры воздействуют даже на тех существ, которые избегают основного эффекта.
<<<
Если существо преуспевает в спасброске от вашего заговора, оно получает половину урона от него (если таковой имеется), но не подвергается никаким дополнительным эффектам от него.
---
!!! [img[10.png]] Усиленное воплощение
Вы можете добавлять свой модификатор Интеллекта к одному броску урона любого сотворяемого вами заклинания волшебника, принадлежащего школе Воплощения.
---
!!! [img[14.png]] Перегрузка
<<<
Вы способны увеличить силу своих более простых заклинаний.
<<<
Когда вы сотворяете наносящее урон заклинание волшебника с 1 по 5 уровень, вы можете нанести им максимальный урон.
Если вы повторно используете это умение до завершения продолжительного отдыха, то получаете 2к12 урона некротической энергией за каждый уровень заклинания сразу после его сотворения. Каждый раз, когда вы снова используете это умение до завершения продолжительного отдыха, урон некротической энергией за каждый уровень заклинания увеличивается на 1к12. Этот урон игнорирует сопротивления и иммунитеты.
Являясь вызывателем, вы предпочитаете заклинания, которые создают предметы и существ словно из воздуха. Вы можете вызвать клубящиеся облака убийственного тумана или призвать существ из других миров для битвы на вашей стороне. С ростом мастерства вы узнаёте заклинания перемещения и сможете в мгновение ока телепортироваться на огромные расстояния, и даже на другие планы существования.
---
!!! [img[2.png]] Малый вызов
Вы можете действием создать неодушевлённый предмет в своей руке или на земле в видимом вами свободном пространстве в пределах 2 м от вас. Этот предмет не должен превышать в длину 1 м и весить более 5 кг, а его форма должна быть как у немагического предмета, который вы уже видели. Видно, что предмет магический, и он излучает тусклый свет в пределах 1 м.
Предмет исчезает через 1 час, когда вы используете это умение вновь, или когда он получает или наносит любой урон.
---
!!! [img[2.png]] Эксперт вызова
Количество денег и времени, которое вы тратите на копирование заклинания школы Вызова в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Безопасная транспозиция
Вы можете действием телепортироваться на 6 м в видимое вами свободное пространство. В качестве альтернативы, вы можете выбрать пространство в пределах этой дистанции, занятое существом Маленького или Среднего размера. Если это существо согласно, вы оба телепортируетесь, меняясь местами.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых или не сотворите заклинание школы Вызова 1 уровня или выше.
---
!!! [img[10.png]] Состредоточенный вызов
Когда вы концентрируетесь на заклинании школы Вызова, ваша концентрация не может быть прервана в результате получения урона.
---
!!! [img[14.png]] Надёжный призыв
Все призванные или созданные вами заклинанием школы Вызова существа имеют 30 временных хитов.
Вы обучаетесь магии, которая обманывает чувства, затмевает разум и дурачит даже самых мудрых. Ваша магия утончённа, но иллюзии, сотканные вашим острым умом, заставляют невозможное казаться реальным. Некоторые иллюзионисты — включая многих волшебников гномов — являются трюкачами, использующими свои заклинания в представлениях. Другие, более зловещие мастера обмана, используют свои иллюзии, чтобы пугать и обманывать других для собственной выгоды.
---
!!! [img[2.png]] Улучшенная малая иллюзия
Вы изучаете заговор //малая иллюзия//. Если вам уже известен этот заговор, то вы изучаете любой другой заговор волшебника на свой выбор. Этот заговор не учитывается в общее количество известных вам заговоров.
При сотворении заклинания //малая иллюзия// вы можете создать и звук, и изображение одним эффектом.
---
!!! [img[2.png]] Эксперт иллюзии
Количество денег и времени, которое вы тратите на копирование заклинания школы Иллюзии в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Пластичные иллюзии
Когда вы сотворяете заклинание школы Иллюзии с длительностью не меньше 1 минуты, вы можете действием в последующие ходы изменить характер этой иллюзии (используя обычные ограничения для этой иллюзии), при условии, что можете её видеть.
---
!!! [img[10.png]] Иллюзорный шаг
<<<
Вы можете инстинктивно создать иллюзорную копию самого себя в ответ на внезапную опасность.
<<<
Когда существо совершает по вам бросок атаки, вы можете реакцией создать иллюзорную копию между атакующим и собой. Атака автоматически промахивается по вам и уничтожает иллюзию. Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[14.png]] Иллюзорная реальность
<<<
Вы постигли секреты вплетения магии тени в ваши иллюзии, что придаёт им частичную реальность.
<<<
Когда вы сотворяете заклинание школы Иллюзии 1 уровня или выше, а также в последующие ходы бонусным действием, вы можете выбрать любой неоживлённый и немагический объект, являющийся частью данной иллюзии, и сделать его реальным на 1 минуту.
Объект не может наносить урон или непосредственно причинить кому-либо вред.
Школа Некромантии изучает космические силы жизни, смерти и не-жизни. Сосредоточив свои изыскания в этом направлении, вы научились манипулировать той энергией, которая питает все живые организмы. По мере увеличения ваших знаний вы научитесь вытягивать жизненные силы существ, разрушая своей магией их тела и трансформируя их в магическую энергию, которой вы можете манипулировать.
Большинство обывателей видит в некромантах угрозу или даже зло, из-за их тесной связи со смертью. Не все некроманты злые, но силы, которыми они управляют, считаются запретными во многих обществах.
---
!!! [img[2.png]] Мрачная жатва
<<<
Вы способны собирать жизненные силы существ, которых вы убиваете своими заклинаниями.
<<<
Один раз за ход, когда вы убиваете одно или несколько существ заклинанием 1 иуровня или выше, вы восстанавливаете хиты в количестве равном удвоенному уровню этого заклинания, или утроенному, если заклинание принадлежало школе Некромантии. Вы не получаете это преимущество, убивая конструктов или нежить.
---
!!! [img[2.png]] Эксперт некромантии
Количество денег и времени, которое вы тратите на копирование заклинания школы Некромантии в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Неживые рабы
Вы добавляете заклинание //восставший труп// в свою книгу заклинаний, если его в ней ещё нет. Когда вы сотворяете заклинание //восставший труп//, вы можете сделать его целью ещё один дополнительный труп или кучу костей, создавая зомби или скелета соответственно.
Каждый раз, когда вы создаёте нежить с помощью заклинания школы Некромантии, она получает дополнительные преимущества:
* Максимум хитов создаваемой нежити увеличивается на значение, равное вашему уровню волшебника.
* Создаваемая нежить добавляет ваш бонус мастерства к своим броскам урона оружием.
---
!!! [img[10.png]] Приученный к нежизни
<<<
Вы провели так много времени в контакте с нежитью и оживляющей их энергией, что научились преодолевать их самые опасные побочные эффекты.
<<<
Вы получаете сопротивление к урону некротической энергией, а ваш максимум хитов не может быть уменьшен.
---
!!! [img[14.png]] Управление нежитью
<<<
Вы можете магией подчинить себе нежить, даже если она создана другим волшебником.
<<<
Вы можете действием выбрать одну видимую вами нежить в пределах 12 м от вас. Это существо должно совершить спасбросок Харизмы против Сл спасброска ваших заклинаний. При успехе цель получает иммунитет к эффекту этого умения. При провале цель становится дружественной по отношению к вам и подчиняется вашим командам, пока вы не используете это умение снова.
Разумная нежить управляется подобным способом куда как труднее. Если у цели Интеллект 8 или выше, она совершает спасбросок с преимуществом. Если она проваливает спасбросок и имеет Интеллект 12 или выше, она может повторять спасбросок в конце каждого часа. При успехе эффект для неё оканчивается.
Школа Ограждения делает упор на магию блокировки, изгнания и защиты. Противники этой школы говорят, что её традиции в отрицании, а не в положительном утверждении. Однако вы понимаете, что прекращение действия ужасных эффектов, защита слабых и изгнание зла точно не является философской пустотой. Это гордое и уважаемое призвание.
Называемые оградителями, представители этой школы становятся востребованными, когда злобные духи нуждаются в экзорцизме, когда важные места должны быть защищены от магического шпионажа, и когда порталы на другие планы существования должны быть закрыты.
---
!!! [img[2.png]] Арканная защита
<<<
Вы можете плести магию вокруг себя для защиты.
<<<
Когда вы сотворяете заклинание школы Ограждения 1 уровня или выше, вы можете одновременно с этим использовать прядь магии заклинания для создания магической защиты, существующей до завершения продолжительного отдыха. Защита обладает максимумом хитов равным вашему удвоенному уровню волшебника + модификатор Интеллекта. Когда вы получаете урон, его вместо вас получает защита. Если урон опускает хиты защиты до 0, излишки урона получаете вы.
Когда у защиты остаётся 0 хитов, она не может поглощать урон, но её магия остаётся. Если вы сотворяете заклинание школы Ограждения 1 уровня или выше, защита восстанавливает количество хитов, равное удвоенному уровню заклинания.
Вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[2.png]] Эксперт ограждения
Количество денег и времени, которое вы тратите на копирование заклинания школы Ограждения в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Спроецированная защита
Когда видимое вами существо в пределах 6 м от вас, получает урон, вы можете реакцией поглотить этот урон вашей Арканной защитой. Если урон опускает хиты защиты до 0, злишки урона получает защищаемое существо.
---
!!! [img[10.png]] Улучшенное ограждение
Когда вы сотворяете заклинание школы Ограждения, требующее совершения проверки характеристики частью сотворения заклинания (как в случае заклинаний //контрзаклинание// и //рассеивание магии//), вы добавляете к этой проверке ваш бонус мастерства.
---
!!! [img[14.png]] Сопротивление заклинаниям
Вы получаете сопротивление к урону от заклинаний и совершаете спасброски от заклинаний с преимуществом.
Будучи адептом Школы Очарования, вы отточили свою способность магически завороживать и воздействовать на других существ и чудовищ. Некоторые очарователи являются миротворцами, подчиняющими враждебных существ, чтобы те сложили оружие, или чтобы жестокие проявили милосердие. Другие являются тиранами, которые магией заставляют непокорных служить им. Большая часть очарователей представляет из себя нечто среднее.
---
!!! [img[2.png]] Гипнотический взгляд
<<<
Ваши ласковые слова и завораживающий взгляд могут волшебным образом одурманить другое существо.
<<<
Действием вы можете выбрать одно видимое вами существо в пределах 1 м от вас. Если цель может видеть или слышать вас, она должна преуспеть в спасброске Мудрости против Сл спасброска ваших заклинаний, иначе она станет [[очарована|Очарованный]] вами до конца вашего следующего хода. Скорость [[очарованного|Очарованный]] таким образом существа падает до 0, оно становится [[недееспособным|Недееспособный]] и выглядит потрясённым.
В последующие ходы вы можете действием поддерживать этот эффект, продлевая его длительность до конца своего следующего хода. Однако эффект прекращается, если вы окажетесь более чем в 1 м от цели, если цель не может больше ни видеть, ни слышать вас, или если цель получает урон.
После окончания эффекта, или если существо успешно совершило спасбросок от него, вы не можете использовать это умение повторно, пока не завершите продолжительный отдых.
---
!!! [img[2.png]] Эксперт очарования
Количество денег и времени, которое вы тратите на копирование заклинания школы Очарования в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Инстинктивное очарование
Когда видимое вами существо в пределах 6 м от вас совершает бросок атаки по вам, вы можете реакцией перенаправить атаку, при условии, что есть другое существо в пределах досягаемости этой атаки. Атакующий должен совершить спасбросок Мудрости против Сл спасброска ваших заклинаний. При провале атакующий должен выбрать в качестве цели ближайшее существо (кроме вас и себя). Если есть несколько потенциальных целей, атакующий сам выбирает из них цель. При успехе вы не можете использовать это умение против атакующего снова, пока не завершите продолжительный отдых. Вы можете принять решение об использовании этой способности после объявления результата броска атаки, но до вступления его эффекта в силу.
Существа, которых нельзя [[очаровать|Очарованный]], обладают иммунитетом к этому эффекту.
---
!!! [img[10.png]] Раздельное очарование
Когда вы сотворяете заклинание школы Очарования 1 уровня или выше, целью которого является только одно существо, вы можете выбрать целью второе существо в пределах дистанции этого заклинания.
---
!!! [img[14.png]] Изменение воспоминаний
<<<
Вы способны заставить существо забыть о магическом воздействии, которое вы на него оказали.
<<<
Когда вы сотворяете заклинание школы Очарования, которое [[очаровывает|Очарованный]] одно или несколько существ, вы можете изменить восприятие и воспоминания одного из них так, чтобы оно не осознавало, что было [[очаровано|Очарованный]].
Кроме того, перед тем как заклинание окончится, вы можете действием попытаться заставить выбранное существо забыть некоторые моменты его пребывания в [[очарованном|Очарованный]] состоянии. Существо должно преуспеть в спасброске Интеллекта против Сл спасброска ваших заклинаний, иначе оно потеряет количество часов своих воспоминаний равныое 1 + ваш модификатор Харизмы (минимум 1). Вы можете заставить существо забыть меньшее количество времени. Количество забытого времени не может превышать длительность самого заклинания.
Вы были обучены заклинаниям, изменяющим энергию и материю. Для вас мир не является чем-то постоянным, напротив, он в высшей степени изменчив, и вы наслаждаетесь своей ролью агента перемен. Вы умеете манипулировать сырьём создания и можете изменять как физическую форму, так и ментальные качества. Ваша магия даёт вам возможность стать кузнецом в кузне реальности.
Некоторые преобразователи являются проказниками, превращающими людей в жаб и преобразующими медь в серебро ради забавы и случайной наживы. Другие проводят свои магические исследования со всей возможной серьёзностью, стремясь обрести силу богов создавать и разрушать миры.
---
!!! [img[2.png]] Малая алхимия
Вы способны временно изменять физические свойства одного немагического предмета, превращая структуру его вещества из одной в другую. Вы совершаете специальную алхимическую процедуру на одном предмете, состоящем полностью из дерева, камня (но не драгоценного камня), железа, меди или серебра, превращая его в один из этих материалов. За каждые 10 минут, потраченные на эту процедуру, вы можете преобразовать до 30 литров материала. Через 1 час, либо когда вы потеряете концентрацию (как если бы концентрировались на заклинании), материал возвратится в своё первоначальное состояние.
---
!!! [img[2.png]] Эксперт преобразования
Количество денег и времени, которое вы тратите на копирование заклинания школы Преобразования в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Камень преобразователя
Вы можете потратить 8 часов на создание камня преобразователя, хранящего магию преобразования. Вы можете пользоваться камнем сами или передать его другому существу. Существо получает выбранное вами преимущество до тех пор, пока камень находится в его владении. Когда вы создаёте камень, выберите предоставялемое им преимущество из следующих вариантов:
* [[Ночное зрение|Зрение и свет]] радиусом 20 м.
* Увеличение скорости на 2 м, пока существо не [[нагружено|Грузоподъёмность и нагрузка]].
* Владение спасбросками Телосложения.
* Сопротивление к урону звуком, кислотой, огнём, холодом или электричеством (на ваш выбор при создании камня).
Каждый раз, когда вы сотворяете заклинание школы Преобразования 1 уровня или выше, вы можете изменить эффект вашего камня, если он находится при вас.
Если вы создаёте новый камень преобразователя, предыдущий становится обычным камнем.
---
!!! [img[10.png]] Метаморф
Вы добавляете заклинание //превращение// в свою книгу заклинаний, если его в ней ещё нет.
Вы можете сотворять заклинание //превращение// без увеличения уровня, без необходимости в материальном компоненте и не тратя ячейку заклинаний. При этом вы можете выбрать в качестве цели только себя и превратиться в зверя, ПО которого не больше 1.
Вы должны завершить короткий или продолжительный отдых, чтобы сотворить это заклинание таким образом повторно. Вы всё ещё можете сотворять это заклинание, используя ваши ячейки заклинаний того же уровня или выше.
---
!!! [img[14.png]] Мастер преобразования
Вы можете действием израсходовать запас магии, хранящийся в вашем камне преобразователя и произвести один из следующих эффектов.
//''Возвращение к жизни.''// Вы сотворяете заклинание //оживление// на существо, коснувшись его своим камнем преобразователя, не тратя ячейку заклинания и без необходимости в материальном компоненте.
//''Возвращение молодости.''// Вы можете уменьшить видимый возраст согласного существа на 3к10 лет до минимума в 13 лет, коснувшись его своим камнем преобразователя. Этот эффект не увеличивает срок жизни цели.
//''Высшая трансформация.''// Вы можете преобразовать один немагический предмет, умещающийся в куб с ребром 1 м, в другой немагический предмет схожего размера и массы, и равной или меньшей стоимости. Этот процесс требует 10 минут работы с предметом, и вы должны касаться его всё это время.
//''Панацея.''// Вы снимаете все проклятья, болезни и яды с существа, коснувшись его своим камнем преобразователя. Кроме того, цель восстанавливает все хиты.
После использования этого умения ваш камень преобразователя уничтожается, и не может быть создан повторно, пока вы не завершите продолжительный отдых.
За советом прорицателя обращаются как королевские особы, так и простолюдины, ведь все стремятся к более ясному пониманию прошлого, настоящего и будущего. Являясь прорицателем, вы стремитесь сорвать покровы пространства, времени и сознания, чтобы видеть более ясно. Вы работаете над освоением заклинаний проницательности, удалённого наблюдения, сверхъестественного знания и предвидения.
---
!!! [img[2.png]] Знамение
<<<
Пробелски будущего проникают в ваше сознание.
<<<
Когда вы завершаете продолжительный отдых, совершите два броска к20 и запишите их результаты. Один раз в ход вы можете заменить результат на кости любого броска атаки, спасброска, или проверки характеристик, совершённой вами или другим видимым вами существом, одним из этих бросков Знамения. Вы можете принять решение об использовании этого умения после объявления результата броска, но до вступления его эффекта в силу.
Каждый бросок Знамения может быть использован только один раз. Когда вы завершаете продолжительный отдых, вы теряете все неиспользованные броски Знамения.
---
!!! [img[2.png]] Эксперт прорицания
Количество денег и времени, которое вы тратите на копирование заклинания школы Прорицания в свою книгу заклинаний, уменьшаются вдвое.
---
!!! [img[6.png]] Мастер прорицания
<<<
Вы так легко сотворяете заклинания школы Прорицания, что расходуете лишь малую часть своих сил.
<<<
Когда вы сотворяете заклинание школы Прорицания 2 уровня или выше, используя ячейку заклинаний, вы восстанавливаете одну уже израсходованную ячейку заклинаний. Восстанавливаемая ячейка заклинаний должна быть ниже уровнем, чем сотворяемое вами заклинание, и не может быть выше 5 уровня.
---
!!! [img[10.png]] Третий глаз
Вы можете действием увеличить свою силу восприятия и получить одно из следующих преимущества (на ваш выбор):
* //''Видение невидимого.''// Вы способны видеть невидимых существ и предметы, находящихся в прямой видимости и в пределах 2 м от вас.
* //''Высшее понимание.''// Вы способны читать на любых языках.
* //''Ночное зрение.''// Вы получаете [[ночное зрение|Зрение и свет]] радиусом 20 м.
* //''Эфирное зрение.''// Ваше зрение простирается на Эфирный План в радиусе 20 м.
Эффект умения оканчивается, когда вы становитесь [[недееспособным|Недееспособный]], либо завершаете короткий или продолжительный отдых.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[14.png]] Высшее знамение
<<<
Видения в ваших грёзах усиливаются и рисуют более точную картину того, что должно произойти.
<<<
Вы совершаете три броска к20 для вашего умения Знамение вместо двух.
<div class="tc-table-of-contents">
<<toc-selective-expandable "Экипировка">>
</div>
[img width=500 class="centerme" [https://i.imgur.com/CVMKQWg.png]]
Эладрины – это эльфы чьей родиной является Страна Фей, царство красоты, непредсказуемых эмоций и безграничной магии. Каждый эладрин отражает одно из четырёх времён года, что выражается их цветовой гаммой, соответствующей сезону, которая так же влияет на настроение эладрина:
''Осень'' – сезон покоя и доброй воли, время, когда собирают летний урожай и делятся им со всеми.
''Зима'' – сезон раздумий и скорби, когда жизненная энергия мира дремлет.
''Весна'' – сезон радости и торжества, отмеченное весельем из-за ухода зимней горечи.
''Лето'' – сезон храбрости и враждебности, время необузданной энергии.
Некоторые эладрины сохраняют свою связь с определённым временем года всю свою жизнь, в то время как другие изменяются, принимая особенности нового сезона. После завершения продолжительного отдыха любой эладрин может поменять своё время года. Эладрин может выбрать то же время года, что и в окружающем его мире, либо более соответствующее его текущему эмоциональному состоянию. Например, эладрин может принять облик осени, если он чувствует себя удовлетворённым, другой же может принять облик зимы, если погрузится в печаль, третий может принять облик весны, если будет чувствовать радость, а из-за проявления ярости, эладрин может изменится в летний облик.
Эладрины имеют следующие общие особенности, в добавок к особенностям, характерным остальным эльфам. Выберите время года вашего эладрина: осень, зима, весна или лето.
|!Особенность |!Описание |
|^Увеличение характеристик |^Значение вашей Харизмы увеличивается на 1. |
|^Сезоны |^Когда вы завершаете продолжительный отдых, вы можете изменить своё время года. |
|^Фейский шаг |^Вы можете бонусным действием магическим образом телепортироваться в видимое вами свободное пространство на расстояние до 6 м от вас. Вы можете использовать эту особенность количество раз, равное вашему бонусу мастерства. Потраченные использования этой особенности восстанавливаются после завершения продолжительного отдыха. |
|~|^После достижения 3 уровня, ваш Фейский шаг получает дополнительный эффект в зависимости от вашего времени года; если эффект требует пройти спасбросок, то его Сл будет равна 8 + ваш мод. Харизмы + ваш бонус мастерства: |
|~|^!Осень |
|~|^Сразу после того, как вы используете фейский шаг, вы можете выбрать до двух видимых вами существ в пределах 2 м от вас, они должны преуспеть в спасброске Мудрости, иначе будут [[очарованы|Очарованный]] вами на 1 минуту, либо пока вы или ваши спутники не причините им вред. |
|~|^!Зима |
|~|^Когда вы используете фейский шаг, одно существо по вашему выбору, которое вы можете видеть в пределах 1 м от вас, до того, как вы телепортируетесь, должно преуспеть в спасброске Мудрости, иначе будет [[испугано|Испуганный]] вами до конца вашего следующего хода. |
|~|^!Весна |
|~|^Когда вы используете фейский шаг, вы можете коснуться одного согласного существа в пределах 1 м от вас. Это существо затем перемещается, вместо вас, в свободное пространство по вашему выбору, которое вы можете видеть в пределах 6 м от себя. |
|~|^!Лето |
|~|^Сразу после того, как вы используете фейский шаг, каждое существо по вашему выбору, которых вы можете видеть в пределах 1 м от вас от вас, получает урон огнём, равный вашему бонусу мастерства. |
[img width=400 class="centerme" [https://i.imgur.com/SVQrKin.png]]
<<tabs "[tag[Эльф - описание]]" "Описание эльфов" "$:/state/tab1">>
Если реагенты - это вещества, содержащие проблеск магической силы, которую можно использовать путем переработки, то эссенции - это более чистые формы магической силы. Они бывают четырёх видов: ''арканные'', ''божественные'', ''первородные'' и ''псионические''. Каждая из них обладает стандартной редкостью: обычная, необычная, редкая, очень редкая и легендарная. Эти эссенции - чистый магический материал, который заставляет вещи работать.
Вы можете получать их, расщепляя магические реагенты, извлекая их из магических предметов или монстров, либо посредством тяжелой работы заклинателей. Или вы можете получить их в качестве трофея с тех, кто уже проделал один из этих сложных этапов. Правила получения эссенции из материалов содержатся в описании каждого вида ремесла, а правила самостоятельного создания эссенции - в зачаровании, поскольку оно содержит набор навыков, необходимых для этого.
Хотя эссенции время от времени используются всеми видами ремесла, когда требуется дополнительная магическая сила, они являются основным материалом для зачарователей, и цены на них можно найти в этом разделе.
Эссенции гибкие в своей конкретной природе. Существует множество способов достижения желаемого результата, и эта гибкость представлена в эссенциях. В то время как традиционный способ создания //пояса силы холмового великана// может предусматривать использование сердца холмового великана в качестве эссенции, зачарователь может заменить его, например, драконьим сердцем в качестве первичной эссенции, чтобы создать //пояс силы дракона//, который будет иметь тот же механический эффект.
Принято считать, что каждая эссенция весит 0.5 кг.
---
!!!Извлечение эссенций
Вы можете извлекать магическую эссенцию из ненужных или сломанных магических предметов, хотя такой процесс восстановления может быть трудным и редко приводит к получению более чем части эссенции, вложенной в исходный предмет. При извлечении предмет возвращает одну эссенцию, соответствующую его редкости. Процесс занимает 8 часов (1 день) и невозможен, если на предмет настроено какое-либо существо. Эссенция может быть извлечена только из постоянных магических предметов; постоянный магический предмет - это тот, который перезаряжается или не имеет ограничений на количество зарядов или использований. Эссенцию можно извлечь из предмета только когда у него максимум возможных зарядов или использований.
После извлечения эссенции предмет становится немагическим. Если для его функционирования или существования требовалась магия, он уничтожается.
---
!!!Синтез эссенций
Более доступным и поэтапным способом получения эссенции является объединение нескольких реагентов. Вам нужно объединить три реагента одной редкости, чтобы получить одну эссенцию этой редкости. Вы можете комбинировать реагенты следующим образом:
|!Эссенция | !Используемые реагенты|
|Арканная | 1 реактивный, 1 целительный, 1 ядовитый|
|Божественная | 3 реактивных|
|Первородная | 1 реактивный, 2 целительных|
|Псионическая | 1 реактивный, 2 ядовитых|
Этот процесс занимает 16 часов (2 дня) и требует [[инструментов алхимика|Инструменты алхимика]] и источника тепла.
---
!!!Создание эссенций
Другим потенциальным источником эссенции является создание её заклинателем. Этот процесс долгий и трудный, и обычно подходит только для простоя. Заклинатель может создать одну эссенцию за 160 часов (20 дней); этот процесс нельзя завершить быстрее, и считается, что за это время он потратил все свои ячейки заклинаний.
Редкость создаваемой таким образом эссенции напрямую зависит от уровня заклинателя и определяется по таблице ниже. При этом учитываются только уровни классов заклинателей персонажа, аналогично правилам [[мультиклассирования|Мультиклассирование]]. Полу- и треть-заклинатели подвержены тем же правилам, то есть учитываются только половина или треть уровней этих классов соответственно.
|!Уровень заклинателя | !Редкость эссенции|
|1-4 | Обычная|
|5-10 | Необычная|
|11-16 | Редкая|
|17+ | Очень редкая|
Легендарные эссенции требуют особых ритуалов, большего числа заклинателей и гораздо больше времени; их чрезвычайно трудно изготовить.
Вид создаваемой эссенции зависит от класса заклинателя, в соответствии с таблицей ниже:
|!Заклинатель | !Вид эссенции|
|Бард | Арканная|
|Волшебник | Арканная|
|Друид | Первородная|
|Жрец | Божественная|
|Изобретатель | Арканная|
|Колдун | Варьируется*|
|Монах | Псионическая|
|Паладин | Божественная|
|Псион | Псионическая|
|Следопыт | Первородная|
|Чародей | Варьируется*|
''Пояснения к особым случаям ''
* ''Чародеи'' создают вид в зависимости от своего подкласса: [[Аберрантный разум]] - псионическую, [[Божественная душа]] - божественную, [[Дикая магия]], [[Драконья кровь]] и [[Могущество шторма]] - первородную, а остальные - арканную.
* ''Колдуны'' также создают вид, основанный на их подклассе: [[Архифея]], [[Владыка глубин]], [[Гений]] и [[Древний дракон]] - первородную, [[Великий Древний]] - псионическую, [[Небожитель]] - божественную, а остальные - арканную.
Таинственный и страшный боец передовой линии династии Крин, Эхо-рыцарь овладел искусством использования дюнамиса для вызова угасающих теней нереализованных временных линий, чтобы помочь себе в битве. Окутанные отзвуками собственного могущества, они вступают в бой кружащимся роем теней и ударов.
---
!!! [img[3.png]] Воплощение эха
Бонусным действием вы можете магически воплотить собственное эхо в видимом вами незанятом пространстве в пределах 3 м от вас. Это эхо является магическим полупрозрачным серым образом вас и существует до тех пор, пока не будет уничтожено, пока вы не развеете его бонусным действием, не воплотите другое эхо, либо не станете [[недееспособным|Недееспособный]].
КД вашего эха равно 14 + ваш бонус мастерства, у него 1 хит и иммунитет ко всем состояниям. Если эхо вынуждено совершить спасбросок, оно использует для этого ваши бонусы. Эхо обладает тем же размером, что и вы, и занимает своё пространство. В свой ход вы можете мысленно приказать эху переместиться на расстояние до 6 м в любом направлении (действие не требуется). Если в конце вашего хода эхо окажется на расстоянии более 6 м от вас, оно уничтожается.
Вы можете использовать эхо следующими способами:
* Бонусным действием вы можете телепортироваться, магическим образом меняясь местами со своим эхо. Для этого вы должны потратить 3 м своей скорости, независимо от расстояния между вами.
* Когда вы совершаете действие [[Атака|Атака]] в свой ход, любая атака, совершаемая этим действием, может исходить как из вашего пространства, так и из пространства эха (на ваш выбор для каждой атаки).
* Вы можете реакцией совершить [[провоцированную атаку|Провоцированная атака]] по видимому вами существу, если оно покидает досягаемость эха, как если бы вы были в пространстве эха.
---
!!! [img[3.png]] Высвобождение воплощения
<<<
Вы можете усилить ярость своего эха.
<<<
Каждый раз, когда вы совершаете действие [[Атака]], вы можете совершить одну дополнительную рукопашную атаку из позиции эха.
Вы можете использовать это умение количество раз, равное вашему модификатору Телосложения (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[7.png]] Эхо-аватар
<<<
Вы можете временно перенести свое сознание в эхо.
<<<
Действием вы можете видеть глазами эха и слышать его ушами. В это время вы [[оглушены|Оглохший]] и [[ослеплены|Ослеплённый]]. Этот эффект может длиться до 10 минут, и вы можете прекратить его в любой момент (действие не требуется). Пока эхо используется таким образом, оно может находиться на расстоянии до 300 м от вас, не уничтожаясь.
---
!!! [img[10.png]] Тень мученика
Вы можете заставить свое эхо броситься под атаку, направленную на другое видимое вами существо. До совершения броска атаки вы можете реакцией телепортировать эхо в незанятое пространство в радиусе 1 м от атакованного существа. Бросок атаки, вызвавший реакцию, вместо этого будет совершён против вашего эха.
Вы не можете использовать это умение повторно, пока не завершите короткий или продолжительный отдых.
---
!!! [img[15.png]] Возврат потенциала
<<<
Вы научились поглощать ускользающую магию своего эха.
<<<
Когда ваше эхо уничтожается, получая урон, вы можете получить количество временных хитов, равное 2к6 + ваш модификатор Телосложения, если у вас ещё нет временных хитов.
Вы можете использовать это умение количество раз, равное вашему модификатору Телосложения (минимум 1). Потраченные использования этого умения восстанавливаются после завершения продолжительного отдыха.
---
!!! [img[15.png]] Легион из одного
Бонусным действием вы можете создать два эха своим умением Воплощение эха, и оба этих эха могут существовать одновременно. Если вы создаёте третье эхо, предыдущие два уничтожаются. Всё, что можно сделать из позиции одного эха, можно сделать из позиции другого.
Кроме того, если при брсоке инициативы, у вас не осталось непотраченных использований умения Высвобождение воплощени, вы восстанавливаете одно их них.
[img width=400 class="centerme" [https://i.imgur.com/U6787xS.png]]
<<tabs "[tag[Юань-ти - описание]]" "Описание юань-ти" "$:/state/tab1">>
Искусство изготовления ювелирных изделий всех форм, от огранки драгоценных камней, их оправы до создания изысканных металлических изделий.
```
Модификатор ювелирного дела = бонус мастерства инструментов ювелира + модификатор Ловкости
```
Будучи подотраслью алхимии, ремесло ядовара часто рассматривается как "темная сторона" [[Алхимии|Алхимия]]. Хотя [[Алхимия]] часто имеет дело с ядовитыми реагентами, обычно ее цель - укротить яд, направив его на полезные эффекты. Хотя алхимик способен приготовить грубые ядовитые зелья, такие вещи обычно считаются неудачей. Для отравителя они считаются самим искусством.
---
!!!Краткое руководство
Каждый шаг будет рассмотрен более подробно, но краткое руководство позволит вам быстро проследить шаги изготовления яда в самой простой форме:
* Выберите яд, который вы хотите изготовить, из [[таблицы Ядоварение|https://docs.google.com/spreadsheets/d/1RvUdErfx9xMNCLRv6sxK8noaBlyy1ZUXc_w2HTAgqVQ/edit#gid=33241315]].
* Приобретите предметы, перечисленные в колонке Материалы для этого яда.
* Используйте свои [[инструменты отравителя|Инструменты отравителя]] для изготовления яда в течение количества часов, указанного в колонке Время изготовления.
* Каждые 8 часов (1 день) совершайте проверку ремесла (1к20 + ваш модификатор Интеллекта или Мудрости (на ваш выбор) + ваш бонус мастерства [[инструментов отравителя|Инструменты отравителя]]).
* При успехе вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым. При провале прогресс не достигается. Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются.
---
!!!Соответствующий инструмент и характеристика
Ядоварение основано на использовании [[инструментов отравителя|Инструменты отравителя]]. Попытка изготовить яд без них почти всегда будет совершена с помехой, а владение ими позволяет вам добавить ваше мастерство к любому броску на изготовление ядовитых веществ. Ядоварение использует ваш модификатор Интеллекта или Мудрости (на ваш выбор).
!!!Нанесение яда
Яды наносятся действием. Нанесение оружейного или контактного яда на предмет требует использования [[инструментов отравителя|Инструменты отравителя]] и владения ими. При попытке нанести яд без этих инструментов совершите проверку Ловкости со Сл 15, добавив свой бонус мастерства, если вы владеете [[инструментами отравителя|Инструменты отравителя]]. При провале яд не будет нанесён, а вы продвергнетесь его эффекту.
---
!!!Проверка ремесла
Когда вы хотите поработать над ядоварением, ваш модификатор проверки ремесла выглядит следующим образом:
```
Модификатор ядоварения = бонус мастерства инструментов отравителя + модификатор Интеллекта или Мудрости (на ваш выбор)
```
!!!Успех и провал
Для ядоварения, когда вы преуспеваете в проверке ремесла, вы прибавляете 8 часов к прогрессу изготовления. Как только ваш прогресс в изготовлении предмета сравняется с указанным временем изготовления, предмет считается завершённым.
При провале прогресс не достигается. После начала работы над предметом, даже если прогресс не достигнут, компоненты, зарезервированные для этого предмета, могут быть восстановлены только через извлечение.
Если вы проваливаете проверку три раза подряд, ремесло завершается неудачей, а все материалы теряются и не могут быть извлечены.
---
!!!Спасбросок ядоварения
Некоторые яды требуют совершения спасброска. В таких случаях для расчета Сл спасброска используется следующая формула.
```
Сл спасброска яда = 8 + бонус мастерства инструментов отравителя + модификатор Интеллекта или Мудрости (на ваш выбор)
```
Спасбросок рассчитывается в момент создания предмета на основе характеристик и бонуса мастерства создателя и не меняется после создания. Спасбросок не включает в себя компетентность и прочие бонусы к броску ремесла.
---
!!!Виды ядов
Яды коварны и смертельно опасны, и потому запрещены в большинстве обществ, но всё равно остаются любимым оружием наёмных убийц и прочих злодеев.
Яды бывают четырёх видов.
//''Вдыхаемый.''// Эти яды — порошки или газы, которые начинают действовать при вдыхании. Раздувание порошка или выпускание газа подвергает воздействию яда существ, находящихся в 1-метровом кубе. Получившееся в результате облако мгновенно исчезает. Задержка дыхания неэффективна против вдыхаемых ядов, поскольку они воздействуют на носовые мембраны, слезные протоки и другие части тела.
//''Контактный.''// Контактный яд можно нанести на предмет, и он остаётся действенным, пока его не коснутся или не смоют. Существо, коснувшееся контактного яда открытой кожей, подвергается его воздействию.
//''Оружейный.''// Оружейный яд наносится на оружие, боеприпасы, компоненты ловушек и другие предметы, наносящие колющий или рубящий урон. Оружейный яд обычно остаётся действенным 1 минуту после нанесения, либо до 5 попаданий атак, совершённых отравленным оружием. Боеприпас перестаёт быть отравленным после первого же попадания. Существо, получившее колющий или рубящий урон от оружия или боеприпаса, покрытого оружейным ядом, подвергается его воздействию.
//''Поглощаемый.''// Существо должно проглотить полную дозу поглощаемого яда, чтобы подвергнуться его воздействию. Эта доза может быть подмешана в еду или питьё. Мастер может решить, что неполная доза будет обладать ослабленным эффектом, например, позволит совершить спасбросок с преимуществом, или нанесёт только половину урона при провале спасброска.
<<<
In my chest beats the storm's heart, my breath is the wind, my fury is the lightning. To test my wrath is to test the very forces of the storm, which churns with godlike power.
— Tamask Laryn, Stormfury
<<<
Many things in nature have drawn the attention of the seeker of the arcane—the elements, the nature of the unseen world, the weaving of illusions. A stormfury is one who seeks to tap into the power of a strange and terrifying phenomenon: the raging storm. A stormfury is a terrible figure to most who encounter them. They seem to travel, unconcerned, through the foulest of weather. A part of them revels in this destructive manifestation of the elements—the fouler the weather, the happier they seem. Many who know of these weather mages whisper that they do not follow storms— rather, the storms follow them.
''Stormfuries in the World:'' The stormfury is a figure of strange yet attractive power—no one can deny the incredible primal force of the storm, and it is a pleasing thought to imagine controlling that kind of power. A stormfury can fulfill a variety of roles, from the strange hermit on a stormy mountaintop to the mage who wanders into town at the onset of a hurricane and is gone with the winds. Stormuries make not just good villains but also enigmatic figures who possess secrets that the PCs might want but must brave the storm to find.
''Stormfuries in the Game:'' A strange wind witch lives on an island over which a storm howls permanently. A wandering madman shows up in town just as the thunderheads roll in and roams the streets, cackling with the thunder and then disappearing just before the sun shows itself again. A wizard lives in a tower outfitted with strange copper implements made to attract and study the power of the storm. All these are stormfuries.
Your greatest joy is the fulfillment you attain through your stormy outbursts. Laughter rumbles from your mouth like thunder when you tear into foes with blinding bolts that scar the air and scorch the earth. Your form is cloaked in a shimmering haze of electric sparks and bolts that flash out to strike enemies that threaten you.
When you defeat your foes, the fury in your blood subsides into quiescence, but it never moves too far beneath the surface. Even in your dreams as you rest, you can sense the thunderheads inside you roiling as they wait for the next storm to brew.
''Adaptation:'' There is no single origin story for a stormfury. Some might have had the secrets of the path told to them by a creature of the storm, a friendly elemental, or the servant of a storm god. Many sorcerers simply awaken to their own potential. Others felt the call to enter a storm and found an experienced stormcaster there, reveling in the heart of the terrible gale.
<<<
''Playing a Stormfury''
As a stormfury, you are most at home when the winds howl, lightning cuts the sky, and thunder shakes the very ground beneath you. There is something primal within you that is happiest in the midst of these great storms, and you have turned your formidable powers toward understanding and deepening that kinship. You believe that the peace that most people seek is a falsehood, an illusion of security in a world that provides none. Better by far to seek shelter in the midst of the raging torrent and become one with it.
<<<
---
!!Ярость бури
| !Ранг |!Умения |
| !1 |Furious Bolts, Unstoppable Lightning |
| !2 |Electric Inspiration, Lightning in the Blood |
| !3 |Lightning Field |
| !4 |Bolt of Power |
---
!!!Предварительные условия:
* ''Мировоззрение.'' Любое, кроме законно.
* ''Владения навыками.'' Магия, Природа.
* ''Заклинания.'' Способность сотворять //порыв ветра// и либо //молнию//, либо //призыв молнии//.
---
!!!Спасбросок пути
Некоторые из ваших умений пути требуют от цели спасброска, позволяющего избежать эффекта. Сл такого спасброска определяется следующим образом:
```
Сл спасброска пути = 8 + бонус мастерства + модификатор Интеллекта, Мудрости или Харизмы (на ваш выбор)
```
---
!!Ранг 1
!!!Furious Bolts
<<<
Jagged streaks of lightning fly from your hands and flash between several foes.
<<<
//Stormfury • Arcane, Evocation, Focus, Lightning, Offensive (Recharges after a short or long rest)//
As an action, make a ranged spell attack against one creature within 120 feet of you. On a hit, the target takes 4d6 lightning damage, and the energy leaps from the target to a different creature of your choice within 60 feet of it. Make a new attack roll against the new target, and make a new damage roll, which, on a hit, causes the energy to leap again.
A creature can be targeted only once by each use of this exploit.
In addition, on your next turn, you gain a bonus to your first attack roll equal to the number of creatures you hit with furious bolts.
The damage of this exploit increases when you reach 9th level (6d6), 13th level (7d6), and 17th level (8d6).
!!!Unstoppable Lightning
Your lightning effects treat each creature that has resistance to lightning damage as not having that resistance. In addition, your lightning effects treat each creature that is immune to lightning as instead having resistance to lightning damage.
---
!!Ранг 2
!!!Electric Inspiration
You can spend an inspiration on your turn (no action required), to deal lightning damage equal to your Dexterity modifier + your proficiency bonus to one, two, or three creatures of your choice within 30 feet of you.
!!!Lightning in the Blood
<<<
You feel energized as lightning arcs through your veins and flashes in your eyes.
<<<
//Stormfury • Arcane, Lightning, Transmutation, Utility (Recharges after a long rest)//
As a bonus action, for 10 minutes, when you deal lightning damage to a creature, you deal an additional die of damage. The die is the same size the effect already deals.
---
!!Ранг 3
!!!Lightning Field
You gain resistance to lightning damage.
In addition, after you deal lightning damage, until the end of your next turn, each enemy that moves into a space within 5 feet of you or makes a melee attack against you takes lightning damage equal to 2d6 + twice your Dexterity modifier. An enemy can take this damage only once per turn.
---
!!Ранг 4
!!!Bolt of Power
<<<
You call down a tremendous lightning bolt that crashes into a large group of foes and lays waste to them.
<<<
//Stormfury • Arcane, Evocation, Focus, Lightning, Offensive (Recharges after a long rest)//
As an action, choose a creature you can see within 120 feet of you. The target must make a Dexterity saving throw. On a failed save, the target takes 8d10 lightning damage, and becomes electrified for 1 minute. Also on a hit, you can choose to become dazed until the end of your next turn. If you do so, each creature adjacent to the target becomes electrified for 1 minute, as well. On a successful save, the target takes half as much damage and is not electrified.
While electrified by this exploit, a target takes 4d6 lightning damage at the start of each of its turns. The target can make a Dexterity saving throw at the end of each of its turns, ending the effect on itself on a success.
While dazed by this exploit, you can't take a reaction until the end of your next turn. Moreover, on your next turn, you must choose whether you get a move, an action, or a bonus action; you get only one of the three.
http://j.d.simplemobile.tiddlyspot.com/
*Mobile layout that applies to narrow screens, with many options
* {{Style!!macro2}}
.tc-subtitle {display:none;}
<style>
.centerme {
display: block;
margin-left: auto;
margin-right: auto }
}
</style>
https://tiddlywiki.com/#Manually%20installing%20a%20plugin
https://docs.google.com/viewer?a=v&pid=forums&srcid=MTEyNjM4NzE3NzI3NzEyNTIyMDMBMTU1MDM5NTU0Mzc2NTkxNjg1ODUBNkFKdEFhaDZBd0FKATAuMQEBdjI&authuser=0
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAzCAYAAADVY1sUAAANg0lEQVRoge2ae5RV1X3HP+fOnTtP5sWAwAzDKw4iGCghGEy6ooSHj2IMSITio7qMCGhIXMJqTc1q0lRbY2weTYzEmsSIURONwWoarM9UkSa+UEYEMwPOixkGZpi5zJ25c8/e/WM/zt7nXmvXav/oHz1rnTlzzvnt3/59f++9z4X/P/5vHQG/2Pu/wkiuqJkKnAcsAmYD04F6oAIIgDTQBxwG3gX+ADwX/PZEu2Jg/gTmxmEeODdCP5NAArluCQDJ/6HwTcBVwDrgzMJE+hpQB9QBzcAK+3plXQvwEHB/8JsTR5ASAhkTXioA3rMgAsV/yyISZAICoa4I5Mra+cBXgDVAAqAnK3jweI6b+nNwKoRTOcgCQgtQBBQD5UmoLOKuuiR/Pr6Y01IJM5EAHgX+Lnjq2JtWAa6RAheMABEgL/9TF4jUmks4PPNVKlfWTgTuAK4EghEh+Xpnlts7R6E/F1OAmVRAEChXkIHSNkQC1SW5paGEWxtLKU0EZsL7ge3Brp5eEhJE4PO0FpPIKz6tpXvklZgBpO+meqA8v24tsAOoyYSSdYcz7Do8CqMatGUuHOwxoQ1/FywoQUsCPjeznJ0zKygrCgAGgOuCX3f/IhLeUay2lLzyXA3k4T0xzeOZT15QnwK+DWwC2NGTZWNLGjLaAjIRYy6ARL7AwvVvB4SMPS+DHWfV8IXJpebJD4Gtwa86s5F8kbzyL5ZqIA+9FAOgBUEgL5xQifLbFaNCUvpWGtpHHIvJSKaEK/AHCGmsbf53wbsKAZhWTmZ+DaXKOruBNcGjHWkbBtpC8pplACSQQs0rJEjtFlIgL5xQrhmsODISUvriCTgyDIQgQxXEQkIo1LhQQKjGIrB87CmEEl5oWimjOQUgHJ5CQGuasmeP0jqcA5Xldss1jeWKTxjR6SOhglAz1qe8aEIKeAJYsi+dY/rvjsNgVr0P9SliwrlnXHDvWex/+8zQhhHNwCiznu3mraEswBJgl1w7LeXxtEBCbQ0RqjMUoGJiaftIyPyXj6tUajQgHE3GhYtbwBVKOpqMv48DDEUky6kxPvpCF+0qJj8DfEeB1vJGFtGDtIDys5MuAzaNCknTy32QzkXazRM0rk3jbi5o8zwXCW+t4bha6D7X8qDHDo7R9HwnI0rJ18t1s9ZZPvpI2hsJcnXDFFSWoPT1fuiPEoWNn+iBvb9gajkra4v5Ws8I/UczfnA75Dpw1P24JBtPK+PMCtVc9GVD/rYnA30jDr2ZJ4DjI5T9Rw9yyWSAu+WG2S8GP3unKwJiNKrSyTeBmh91DUNr2uFmknaB+/pinvrEBAAC2c/WrlO+8G7+l0Aqwe8+OYlPTa4gfnwdeLMvw4Ln2qP6JJ3xh/q5t6GCa5uqaoBvIsQGMzZhXECumboQWJ8JBde93uckAO3bMuf4uTZ/MbR9fIJvgbjbue6UgrbljQVBmGN+fRltK5ogKSN3lDk77xf2dpLJCYD18qq5C30gKvq/CgTXHjzpxEXoxU8UiEKBWDaF6VUlVojAi5VQ+32UKN44t5Hp1RH9zoMnaH7mMHOfOcw/vX2MbE4F7/TqUkYvbYZkoMbbmMvB0BibW46hXeirHhD5+RnTgFWZUPBgS7/O8zprGBAmk0jB9MmljH52hgfCBxJGmhSAzLH59Grm15dZ2i2vdHL5yx0cah+k5f2T3Pj7Lkr+tdWCSSWLeHLJlPzULsb4yb6jxiqrGDw4QwMJAS4HEnccHoSRXKRNzzWUKz2weAJt500llUyQd7huZdwiDCGUbJtTa8meauvnBy3H9LswGtOT5ua9nZZu2dQqKE5EfIyCTo3yrfeOK/nh6si1YAPA3/zxpJP7jY8q97hkWiWjqz/ChtPr7ETZXMhLnUMxi+ScVKutUlnE9OrIGhft6/FriK1hId/b3+tZ5Yszqx05IkXdeuCYYXcZQEJefsZUYM7RkRx0p32NOhV8WW0JqWSRFealzkFKHm7hjRPDjkXiVV5Nvra+FO/oSeva4bihaXVEyB+6I+WcP7nSAeFYpWOAnkwWoJnBgzMTwFKAX3af0j5tqqv0AelG8MhAhrN2v8enfvMeZMZiXa70J9PV+dzaCMi+3nREYzKgcZtQzf9mX9rSN1aW+HFnXSzHY+0nDdl5SdQam7uOplXTh2nP3S5WsqNriPu6hnjtiBkstTtF1TWQUk0UvQYEC8aXW5r06JiiMezjhVLCwaFRSz+7rlyDdpmq2nJ39wCbmicALEii1tC09WuL2OLoL2T2He73FO+14fa525FG48elIpd8sy+tLeGs3mzBVG3+3v6oqKaKizRPGSvI8FavtdzsJDALgP5MpE0jlHtIV2tmTVDAInZSH4ynBMdV/XWJBAFFTg8FRBaUMeDHLZCZSUCV5uFsJISnpQKC4Lzz+ikdI56A0hse2E7hg+cJ4kp0ulyPdsgmmpokUIWUkB1ziByJXSBxoX1kSsgPsYgfR5JCSsqziMszcGSUEApBUSIxLtrXCmOoPwyEdnFXe4GxSAxk4AxVizPH8t5c6r3rrlY2s8Ei3GER4yQwSBBUUQTkQo+hHWEHmQCNGHqTWm0bWoHZtskDS0wx9hrkA7ENbEyeREBRIgGQTgLHgCqKEzA65mjov3CjeJzEhbSY1cuW3kHmTa4B4JzGWt/nCyhs+aRx9vX7xwe1RaTVoZ200tan/iTwR2AWNaUwOPzhgpuL9m9fezpruZoLJAMjzgINohSdN4+6jk9FHj84opcPokA81drlQGsCOAiw2BQet4nz2oic0+Q51duznPDf68r9WJvti5g3pTbiZ5YJbkMYhiyZWm/pXznSq1zeyJLTZxiytN5a7t0EalecaxpqnFY99K/eOjtq5xFhLNjJb7vDkN++2012LNpS3b54RrSuMXy1cIyvYF5D1Jg+3trrNJXCk2l903hD9kYCeBbgkqY6ot7HtN+OZeKttHkft4h0aJzr84e6LdmWRTOgLKk0ndOW1nPv/sxcS3diaJgnWzryG0atyItnTjSkzyWCb+xqB945raIEGmojIaUzWBYAYSyWl5Ec7Rp3CAUrd79l6Zrqq9mz9mwoK47ScSi494KPsnxuk6W784W3HRDSV2pTPRMrywAOUdXcmtQZZCfwjTvOamR7W6/OnB+QtdznxKqwRGnZjJFOz9Z7kl+++h6XfuwjAHxi1mRGt63ihYNdnBzJsnR2A3XjouZyf0cft794IGbx6J9vLZxpbh4GSOhCuBMQN5zVqLSU0wForsYKuQKJIG+z2vFnr50PWfvIHp5++4ilTqWKWT5vGpcuOt0D8f6xAebd+7TDw/DTi7ayFJv/ZIaekPs0EElw6yOHgSfKipPcuGQW/o6gm1VkXrC39g+xv6OP/R19tPan8Tfl4ktmwYqfPs8lP/439h7qIn68f2yAv378Zabd/igMnopiVuqVpt4c/PJ5Z1KaKgZ4gqrmNoCALV8DJPK29R8Dfp8ZywXld/0LDAzHtJ3fSsTs7TwzFd2xlCX1i6itcl4HEOv5XBetqyBzy2WUpoolsIiq5teURTTq4C8feBX4eVlxkgf+bKGTbt0gN/djWkNmRZlTq7t4xnLvbX1yrBrPRK7bWqtKxUdnxAc+d46xxs+DG77/moGb8AogbAMGNsxtYsHCGbGJtX9KvU9lY8TsgYlYXMQynd0nMy4ifWFdcN5uTFQGlixuZsP8maC+Zm3zd+OFtMIEN9/Xhf4y9crqs2GSu4Mhyds5lKH/icHbXY8LZIBKJ3bcuDPal/mxKCVMruW5yz5t5N4UbPpul/5yoIG47iEEwZfvfQj4YUlxks5rl0NNacwFRGFQnlXcqu1o2d1pd3fjbUC7NcrcS6guo3PLxZQol7onuO7bD0X9l7VIfGIBsBV4dkp1Bfuvvwhqyh2hTYcb+gK44z2eMiaw/OA4Mu/tFzAJ1eW0bF3NlJpKUF3IFz039oG4lVwQ3Hh3FlgF7DlzYg0dX7oEJtVEAllGMbfywBTQdvzefCWL9Wa2PjXU0rZ9LXMm1QLsAVYF196ZjQBTwCKu/0pBsOX7w+hvdw01lWRuXsPis5uj4DMCSOkL736Bsi1K6Luc+XznFlX7FUyB++Q5Z5D5q/VMH18N+ltmcM2dwxF40yLFgRTQWrD5u2ltmXtKU8XsvWIZO6+7MHI1Y0XjyyLUfZYjoKd5WXguVwE1FTy4+WL+/eoLKE2lAO4BVgXX3JH2PnUYl9VHwIYbokLlLmed2gYSueNL9gcDI9kxvvLM69z19KuQznh1zB7ub0rcDYO8zQY9Z3mKrSs+zt+fv8gAGAA2Blf/wyN+ARWovWtlDfnYTzSQ9ZsUI1EAjDcZyB/dNBH1VesKIBjNjvGDve9w09534EAH0a5IfDyxLsGqEWY38o9L5rLx7DmUlaTMiJ8B24Krbu/1fywU4yEl8vGfalafv76AhuKD/BZC/vPNC4BbcH5Uc2zwFE8eaGfXwXZ+1X0cuk/AyeEojoqKoKoMptSxetJ4Vs2eykVnNDGhyi5XBerHCbcFV932hjevZ1FfPPlrA2TtRj1Aa9LbNyqgReeZ/PH2JtTPnNYDc/KJQXcMkCjwPUUdB4AHgfuDK287EnmFEs9z8/gRgHz8fgD+E59IQsImx6FsAAAAAElFTkSuQmCC
https://tiddlytools.com/#MoveablePanelPlugin